diff options
| -rw-r--r-- | arch/ia64/configs/sn2_defconfig | 2 | ||||
| -rw-r--r-- | arch/ia64/kernel/time.c | 29 | ||||
| -rw-r--r-- | arch/ia64/kernel/uncached.c | 6 | ||||
| -rw-r--r-- | arch/ia64/kernel/vmlinux.lds.S | 3 | ||||
| -rw-r--r-- | arch/ia64/sn/kernel/sn2/sn2_smp.c | 2 | ||||
| -rw-r--r-- | arch/ppc/syslib/ppc4xx_dma.c | 1 | ||||
| -rw-r--r-- | arch/um/Kconfig | 2 | ||||
| -rw-r--r-- | arch/um/Makefile-x86_64 | 4 | ||||
| -rw-r--r-- | arch/um/include/sysdep-i386/stub.h | 29 | ||||
| -rw-r--r-- | arch/um/include/sysdep-x86_64/stub.h | 30 | ||||
| -rw-r--r-- | arch/um/kernel/skas/clone.c | 23 | ||||
| -rw-r--r-- | arch/um/scripts/Makefile.rules | 5 | ||||
| -rw-r--r-- | drivers/char/drm/radeon_cp.c | 2 | ||||
| -rw-r--r-- | drivers/char/watchdog/booke_wdt.c | 2 | ||||
| -rw-r--r-- | drivers/message/i2o/pci.c | 6 | ||||
| -rw-r--r-- | drivers/mtd/onenand/generic.c | 4 | ||||
| -rw-r--r-- | drivers/mtd/onenand/onenand_base.c | 53 | ||||
| -rw-r--r-- | drivers/mtd/onenand/onenand_bbt.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/dpt_i2o.c | 25 | ||||
| -rw-r--r-- | drivers/usb/input/hid-input.c | 1 | ||||
| -rw-r--r-- | include/asm-ia64/delay.h | 10 | ||||
| -rw-r--r-- | include/asm-ppc/ppc4xx_dma.h | 3 | ||||
| -rw-r--r-- | include/linux/cache.h | 2 | ||||
| -rw-r--r-- | include/linux/mtd/onenand.h | 5 |
24 files changed, 166 insertions, 87 deletions
diff --git a/arch/ia64/configs/sn2_defconfig b/arch/ia64/configs/sn2_defconfig index e1924cc9687b..ff8bb3770c9d 100644 --- a/arch/ia64/configs/sn2_defconfig +++ b/arch/ia64/configs/sn2_defconfig | |||
| @@ -113,7 +113,7 @@ CONFIG_IOSAPIC=y | |||
| 113 | CONFIG_IA64_SGI_SN_XP=m | 113 | CONFIG_IA64_SGI_SN_XP=m |
| 114 | CONFIG_FORCE_MAX_ZONEORDER=17 | 114 | CONFIG_FORCE_MAX_ZONEORDER=17 |
| 115 | CONFIG_SMP=y | 115 | CONFIG_SMP=y |
| 116 | CONFIG_NR_CPUS=512 | 116 | CONFIG_NR_CPUS=1024 |
| 117 | # CONFIG_HOTPLUG_CPU is not set | 117 | # CONFIG_HOTPLUG_CPU is not set |
| 118 | CONFIG_SCHED_SMT=y | 118 | CONFIG_SCHED_SMT=y |
| 119 | CONFIG_PREEMPT=y | 119 | CONFIG_PREEMPT=y |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 5b7e736f3b49..028a2b95936c 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
| @@ -249,3 +249,32 @@ time_init (void) | |||
| 249 | */ | 249 | */ |
| 250 | set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); | 250 | set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec); |
| 251 | } | 251 | } |
| 252 | |||
| 253 | #define SMALLUSECS 100 | ||
| 254 | |||
| 255 | void | ||
| 256 | udelay (unsigned long usecs) | ||
| 257 | { | ||
| 258 | unsigned long start; | ||
| 259 | unsigned long cycles; | ||
| 260 | unsigned long smallusecs; | ||
| 261 | |||
| 262 | /* | ||
| 263 | * Execute the non-preemptible delay loop (because the ITC might | ||
| 264 | * not be synchronized between CPUS) in relatively short time | ||
| 265 | * chunks, allowing preemption between the chunks. | ||
| 266 | */ | ||
| 267 | while (usecs > 0) { | ||
| 268 | smallusecs = (usecs > SMALLUSECS) ? SMALLUSECS : usecs; | ||
| 269 | preempt_disable(); | ||
| 270 | cycles = smallusecs*local_cpu_data->cyc_per_usec; | ||
| 271 | start = ia64_get_itc(); | ||
| 272 | |||
| 273 | while (ia64_get_itc() - start < cycles) | ||
| 274 | cpu_relax(); | ||
| 275 | |||
| 276 | preempt_enable(); | ||
| 277 | usecs -= smallusecs; | ||
| 278 | } | ||
| 279 | } | ||
| 280 | EXPORT_SYMBOL(udelay); | ||
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c index c6d40446c2c4..b631cf86ed44 100644 --- a/arch/ia64/kernel/uncached.c +++ b/arch/ia64/kernel/uncached.c | |||
| @@ -53,7 +53,7 @@ static void uncached_ipi_visibility(void *data) | |||
| 53 | if ((status != PAL_VISIBILITY_OK) && | 53 | if ((status != PAL_VISIBILITY_OK) && |
| 54 | (status != PAL_VISIBILITY_OK_REMOTE_NEEDED)) | 54 | (status != PAL_VISIBILITY_OK_REMOTE_NEEDED)) |
| 55 | printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on " | 55 | printk(KERN_DEBUG "pal_prefetch_visibility() returns %i on " |
| 56 | "CPU %i\n", status, get_cpu()); | 56 | "CPU %i\n", status, raw_smp_processor_id()); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | 59 | ||
| @@ -63,7 +63,7 @@ static void uncached_ipi_mc_drain(void *data) | |||
| 63 | status = ia64_pal_mc_drain(); | 63 | status = ia64_pal_mc_drain(); |
| 64 | if (status) | 64 | if (status) |
| 65 | printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on " | 65 | printk(KERN_WARNING "ia64_pal_mc_drain() failed with %i on " |
| 66 | "CPU %i\n", status, get_cpu()); | 66 | "CPU %i\n", status, raw_smp_processor_id()); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | 69 | ||
| @@ -105,7 +105,7 @@ uncached_get_new_chunk(struct gen_pool *poolp) | |||
| 105 | status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); | 105 | status = ia64_pal_prefetch_visibility(PAL_VISIBILITY_PHYSICAL); |
| 106 | 106 | ||
| 107 | dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n", | 107 | dprintk(KERN_INFO "pal_prefetch_visibility() returns %i on cpu %i\n", |
| 108 | status, get_cpu()); | 108 | status, raw_smp_processor_id()); |
| 109 | 109 | ||
| 110 | if (!status) { | 110 | if (!status) { |
| 111 | status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1); | 111 | status = smp_call_function(uncached_ipi_visibility, NULL, 0, 1); |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 30d8564e9603..73af6267d2ef 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
| @@ -177,6 +177,9 @@ SECTIONS | |||
| 177 | } | 177 | } |
| 178 | . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */ | 178 | . = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */ |
| 179 | 179 | ||
| 180 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) | ||
| 181 | { *(.data.read_mostly) } | ||
| 182 | |||
| 180 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) | 183 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) |
| 181 | { *(.data.cacheline_aligned) } | 184 | { *(.data.cacheline_aligned) } |
| 182 | 185 | ||
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index 5d54f5f4e926..471bbaa65d1b 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
| @@ -202,7 +202,7 @@ sn2_global_tlb_purge(struct mm_struct *mm, unsigned long start, | |||
| 202 | unsigned long end, unsigned long nbits) | 202 | unsigned long end, unsigned long nbits) |
| 203 | { | 203 | { |
| 204 | int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0; | 204 | int i, opt, shub1, cnode, mynasid, cpu, lcpu = 0, nasid, flushed = 0; |
| 205 | int mymm = (mm == current->active_mm); | 205 | int mymm = (mm == current->active_mm && current->mm); |
| 206 | volatile unsigned long *ptc0, *ptc1; | 206 | volatile unsigned long *ptc0, *ptc1; |
| 207 | unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value; | 207 | unsigned long itc, itc2, flags, data0 = 0, data1 = 0, rr_value; |
| 208 | short nasids[MAX_NUMNODES], nix; | 208 | short nasids[MAX_NUMNODES], nix; |
diff --git a/arch/ppc/syslib/ppc4xx_dma.c b/arch/ppc/syslib/ppc4xx_dma.c index f15e64285f96..05ccd598dd4e 100644 --- a/arch/ppc/syslib/ppc4xx_dma.c +++ b/arch/ppc/syslib/ppc4xx_dma.c | |||
| @@ -30,6 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | #include <asm/system.h> | 31 | #include <asm/system.h> |
| 32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
| 33 | #include <asm/dma.h> | ||
| 33 | #include <asm/ppc4xx_dma.h> | 34 | #include <asm/ppc4xx_dma.h> |
| 34 | 35 | ||
| 35 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; | 36 | ppc_dma_ch_t dma_channels[MAX_PPC4xx_DMA_CHANNELS]; |
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 563301fe5df8..1eb21de9d1b5 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
| @@ -289,6 +289,8 @@ source "arch/um/Kconfig.net" | |||
| 289 | 289 | ||
| 290 | source "drivers/net/Kconfig" | 290 | source "drivers/net/Kconfig" |
| 291 | 291 | ||
| 292 | source "drivers/connector/Kconfig" | ||
| 293 | |||
| 292 | source "fs/Kconfig" | 294 | source "fs/Kconfig" |
| 293 | 295 | ||
| 294 | source "security/Kconfig" | 296 | source "security/Kconfig" |
diff --git a/arch/um/Makefile-x86_64 b/arch/um/Makefile-x86_64 index 4f118d5cc2ee..38df311e75dc 100644 --- a/arch/um/Makefile-x86_64 +++ b/arch/um/Makefile-x86_64 | |||
| @@ -12,3 +12,7 @@ CHECKFLAGS += -m64 | |||
| 12 | 12 | ||
| 13 | ELF_ARCH := i386:x86-64 | 13 | ELF_ARCH := i386:x86-64 |
| 14 | ELF_FORMAT := elf64-x86-64 | 14 | ELF_FORMAT := elf64-x86-64 |
| 15 | |||
| 16 | # Not on all 64-bit distros /lib is a symlink to /lib64. PLD is an example. | ||
| 17 | |||
| 18 | LINK-$(CONFIG_LD_SCRIPT_DYN) += -Wl,-rpath,/lib64 | ||
diff --git a/arch/um/include/sysdep-i386/stub.h b/arch/um/include/sysdep-i386/stub.h index 6ba8cbbe0d36..b492b12b4a10 100644 --- a/arch/um/include/sysdep-i386/stub.h +++ b/arch/um/include/sysdep-i386/stub.h | |||
| @@ -6,8 +6,12 @@ | |||
| 6 | #ifndef __SYSDEP_STUB_H | 6 | #ifndef __SYSDEP_STUB_H |
| 7 | #define __SYSDEP_STUB_H | 7 | #define __SYSDEP_STUB_H |
| 8 | 8 | ||
| 9 | #include <sys/mman.h> | ||
| 9 | #include <asm/ptrace.h> | 10 | #include <asm/ptrace.h> |
| 10 | #include <asm/unistd.h> | 11 | #include <asm/unistd.h> |
| 12 | #include "stub-data.h" | ||
| 13 | #include "kern_constants.h" | ||
| 14 | #include "uml-config.h" | ||
| 11 | 15 | ||
| 12 | extern void stub_segv_handler(int sig); | 16 | extern void stub_segv_handler(int sig); |
| 13 | extern void stub_clone_handler(void); | 17 | extern void stub_clone_handler(void); |
| @@ -76,23 +80,22 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3, | |||
| 76 | return ret; | 80 | return ret; |
| 77 | } | 81 | } |
| 78 | 82 | ||
| 79 | static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3, | 83 | static inline void trap_myself(void) |
| 80 | long arg4, long arg5, long arg6) | ||
| 81 | { | 84 | { |
| 82 | long ret; | 85 | __asm("int3"); |
| 83 | |||
| 84 | __asm__ volatile ("push %%ebp ; movl %%eax,%%ebp ; movl %1,%%eax ; " | ||
| 85 | "int $0x80 ; pop %%ebp" | ||
| 86 | : "=a" (ret) | ||
| 87 | : "g" (syscall), "b" (arg1), "c" (arg2), "d" (arg3), | ||
| 88 | "S" (arg4), "D" (arg5), "0" (arg6)); | ||
| 89 | |||
| 90 | return ret; | ||
| 91 | } | 86 | } |
| 92 | 87 | ||
| 93 | static inline void trap_myself(void) | 88 | static inline void remap_stack(int fd, unsigned long offset) |
| 94 | { | 89 | { |
| 95 | __asm("int3"); | 90 | __asm__ volatile ("movl %%eax,%%ebp ; movl %0,%%eax ; int $0x80 ;" |
| 91 | "movl %7, %%ebx ; movl %%eax, (%%ebx)" | ||
| 92 | : : "g" (STUB_MMAP_NR), "b" (UML_CONFIG_STUB_DATA), | ||
| 93 | "c" (UM_KERN_PAGE_SIZE), | ||
| 94 | "d" (PROT_READ | PROT_WRITE), | ||
| 95 | "S" (MAP_FIXED | MAP_SHARED), "D" (fd), | ||
| 96 | "a" (offset), | ||
| 97 | "i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err) | ||
| 98 | : "memory"); | ||
| 96 | } | 99 | } |
| 97 | 100 | ||
| 98 | #endif | 101 | #endif |
diff --git a/arch/um/include/sysdep-x86_64/stub.h b/arch/um/include/sysdep-x86_64/stub.h index c41689c13dc9..92e989f81761 100644 --- a/arch/um/include/sysdep-x86_64/stub.h +++ b/arch/um/include/sysdep-x86_64/stub.h | |||
| @@ -6,8 +6,12 @@ | |||
| 6 | #ifndef __SYSDEP_STUB_H | 6 | #ifndef __SYSDEP_STUB_H |
| 7 | #define __SYSDEP_STUB_H | 7 | #define __SYSDEP_STUB_H |
| 8 | 8 | ||
| 9 | #include <sys/mman.h> | ||
| 9 | #include <asm/unistd.h> | 10 | #include <asm/unistd.h> |
| 10 | #include <sysdep/ptrace_user.h> | 11 | #include <sysdep/ptrace_user.h> |
| 12 | #include "stub-data.h" | ||
| 13 | #include "kern_constants.h" | ||
| 14 | #include "uml-config.h" | ||
| 11 | 15 | ||
| 12 | extern void stub_segv_handler(int sig); | 16 | extern void stub_segv_handler(int sig); |
| 13 | extern void stub_clone_handler(void); | 17 | extern void stub_clone_handler(void); |
| @@ -81,23 +85,23 @@ static inline long stub_syscall5(long syscall, long arg1, long arg2, long arg3, | |||
| 81 | return ret; | 85 | return ret; |
| 82 | } | 86 | } |
| 83 | 87 | ||
| 84 | static inline long stub_syscall6(long syscall, long arg1, long arg2, long arg3, | 88 | static inline void trap_myself(void) |
| 85 | long arg4, long arg5, long arg6) | ||
| 86 | { | 89 | { |
| 87 | long ret; | 90 | __asm("int3"); |
| 88 | |||
| 89 | __asm__ volatile ("movq %5,%%r10 ; movq %6,%%r8 ; " | ||
| 90 | "movq %7, %%r9; " __syscall : "=a" (ret) | ||
| 91 | : "0" (syscall), "D" (arg1), "S" (arg2), "d" (arg3), | ||
| 92 | "g" (arg4), "g" (arg5), "g" (arg6) | ||
| 93 | : __syscall_clobber, "r10", "r8", "r9" ); | ||
| 94 | |||
| 95 | return ret; | ||
| 96 | } | 91 | } |
| 97 | 92 | ||
| 98 | static inline void trap_myself(void) | 93 | static inline void remap_stack(long fd, unsigned long offset) |
| 99 | { | 94 | { |
| 100 | __asm("int3"); | 95 | __asm__ volatile ("movq %4,%%r10 ; movq %5,%%r8 ; " |
| 96 | "movq %6, %%r9; " __syscall "; movq %7, %%rbx ; " | ||
| 97 | "movq %%rax, (%%rbx)": | ||
| 98 | : "a" (STUB_MMAP_NR), "D" (UML_CONFIG_STUB_DATA), | ||
| 99 | "S" (UM_KERN_PAGE_SIZE), | ||
| 100 | "d" (PROT_READ | PROT_WRITE), | ||
| 101 | "g" (MAP_FIXED | MAP_SHARED), "g" (fd), | ||
| 102 | "g" (offset), | ||
| 103 | "i" (&((struct stub_data *) UML_CONFIG_STUB_DATA)->err) | ||
| 104 | : __syscall_clobber, "r10", "r8", "r9" ); | ||
| 101 | } | 105 | } |
| 102 | 106 | ||
| 103 | #endif | 107 | #endif |
diff --git a/arch/um/kernel/skas/clone.c b/arch/um/kernel/skas/clone.c index cb37ce9124a6..47b812b3bca8 100644 --- a/arch/um/kernel/skas/clone.c +++ b/arch/um/kernel/skas/clone.c | |||
| @@ -18,11 +18,10 @@ | |||
| 18 | * on some systems. | 18 | * on some systems. |
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | #define STUB_DATA(field) (((struct stub_data *) UML_CONFIG_STUB_DATA)->field) | ||
| 22 | |||
| 23 | void __attribute__ ((__section__ (".__syscall_stub"))) | 21 | void __attribute__ ((__section__ (".__syscall_stub"))) |
| 24 | stub_clone_handler(void) | 22 | stub_clone_handler(void) |
| 25 | { | 23 | { |
| 24 | struct stub_data *data = (struct stub_data *) UML_CONFIG_STUB_DATA; | ||
| 26 | long err; | 25 | long err; |
| 27 | 26 | ||
| 28 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, | 27 | err = stub_syscall2(__NR_clone, CLONE_PARENT | CLONE_FILES | SIGCHLD, |
| @@ -35,17 +34,21 @@ stub_clone_handler(void) | |||
| 35 | if(err) | 34 | if(err) |
| 36 | goto out; | 35 | goto out; |
| 37 | 36 | ||
| 38 | err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL, | 37 | err = stub_syscall3(__NR_setitimer, ITIMER_VIRTUAL, |
| 39 | (long) &STUB_DATA(timer), 0); | 38 | (long) &data->timer, 0); |
| 40 | if(err) | 39 | if(err) |
| 41 | goto out; | 40 | goto out; |
| 42 | 41 | ||
| 43 | err = stub_syscall6(STUB_MMAP_NR, UML_CONFIG_STUB_DATA, | 42 | remap_stack(data->fd, data->offset); |
| 44 | UM_KERN_PAGE_SIZE, PROT_READ | PROT_WRITE, | 43 | goto done; |
| 45 | MAP_FIXED | MAP_SHARED, STUB_DATA(fd), | 44 | |
| 46 | STUB_DATA(offset)); | ||
| 47 | out: | 45 | out: |
| 48 | /* save current result. Parent: pid; child: retcode of mmap */ | 46 | /* save current result. |
| 49 | STUB_DATA(err) = err; | 47 | * Parent: pid; |
| 48 | * child: retcode of mmap already saved and it jumps around this | ||
| 49 | * assignment | ||
| 50 | */ | ||
| 51 | data->err = err; | ||
| 52 | done: | ||
| 50 | trap_myself(); | 53 | trap_myself(); |
| 51 | } | 54 | } |
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index b3fbf125709b..2e41cabd3d93 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
| @@ -21,11 +21,6 @@ define unprofile | |||
| 21 | endef | 21 | endef |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | # The stubs and unmap.o can't try to call mcount or update basic block data | ||
| 25 | define unprofile | ||
| 26 | $(patsubst -pg,,$(patsubst -fprofile-arcs -ftest-coverage,,$(1))) | ||
| 27 | endef | ||
| 28 | |||
| 29 | # cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If | 24 | # cmd_make_link checks to see if the $(foo-dir) variable starts with a /. If |
| 30 | # so, it's considered to be a path relative to $(srcdir) rather than | 25 | # so, it's considered to be a path relative to $(srcdir) rather than |
| 31 | # $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from | 26 | # $(srcdir)/arch/$(SUBARCH). This is because x86_64 wants to get ldt.c from |
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 95ae9e0892ac..501e557cbc86 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
| @@ -1311,7 +1311,7 @@ static void radeon_set_pcigart(drm_radeon_private_t * dev_priv, int on) | |||
| 1311 | 1311 | ||
| 1312 | static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) | 1312 | static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init) |
| 1313 | { | 1313 | { |
| 1314 | drm_radeon_private_t *dev_priv = dev->dev_private;; | 1314 | drm_radeon_private_t *dev_priv = dev->dev_private; |
| 1315 | unsigned int mem_size; | 1315 | unsigned int mem_size; |
| 1316 | 1316 | ||
| 1317 | DRM_DEBUG("\n"); | 1317 | DRM_DEBUG("\n"); |
diff --git a/drivers/char/watchdog/booke_wdt.c b/drivers/char/watchdog/booke_wdt.c index c800cce73c1e..b6640606b44d 100644 --- a/drivers/char/watchdog/booke_wdt.c +++ b/drivers/char/watchdog/booke_wdt.c | |||
| @@ -173,7 +173,7 @@ static int __init booke_wdt_init(void) | |||
| 173 | int ret = 0; | 173 | int ret = 0; |
| 174 | 174 | ||
| 175 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); | 175 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); |
| 176 | ident.firmware_version = cpu_specs[0].pvr_value; | 176 | ident.firmware_version = cur_cpu_spec->pvr_value; |
| 177 | 177 | ||
| 178 | ret = misc_register(&booke_wdt_miscdev); | 178 | ret = misc_register(&booke_wdt_miscdev); |
| 179 | if (ret) { | 179 | if (ret) { |
diff --git a/drivers/message/i2o/pci.c b/drivers/message/i2o/pci.c index 81ef306cb124..ee7075fa1ec3 100644 --- a/drivers/message/i2o/pci.c +++ b/drivers/message/i2o/pci.c | |||
| @@ -303,6 +303,7 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev, | |||
| 303 | struct i2o_controller *c; | 303 | struct i2o_controller *c; |
| 304 | int rc; | 304 | int rc; |
| 305 | struct pci_dev *i960 = NULL; | 305 | struct pci_dev *i960 = NULL; |
| 306 | int pci_dev_busy = 0; | ||
| 306 | 307 | ||
| 307 | printk(KERN_INFO "i2o: Checking for PCI I2O controllers...\n"); | 308 | printk(KERN_INFO "i2o: Checking for PCI I2O controllers...\n"); |
| 308 | 309 | ||
| @@ -395,6 +396,8 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev, | |||
| 395 | if ((rc = i2o_pci_alloc(c))) { | 396 | if ((rc = i2o_pci_alloc(c))) { |
| 396 | printk(KERN_ERR "%s: DMA / IO allocation for I2O controller " | 397 | printk(KERN_ERR "%s: DMA / IO allocation for I2O controller " |
| 397 | " failed\n", c->name); | 398 | " failed\n", c->name); |
| 399 | if (rc == -ENODEV) | ||
| 400 | pci_dev_busy = 1; | ||
| 398 | goto free_controller; | 401 | goto free_controller; |
| 399 | } | 402 | } |
| 400 | 403 | ||
| @@ -425,7 +428,8 @@ static int __devinit i2o_pci_probe(struct pci_dev *pdev, | |||
| 425 | i2o_iop_free(c); | 428 | i2o_iop_free(c); |
| 426 | 429 | ||
| 427 | disable: | 430 | disable: |
| 428 | pci_disable_device(pdev); | 431 | if (!pci_dev_busy) |
| 432 | pci_disable_device(pdev); | ||
| 429 | 433 | ||
| 430 | return rc; | 434 | return rc; |
| 431 | } | 435 | } |
diff --git a/drivers/mtd/onenand/generic.c b/drivers/mtd/onenand/generic.c index 48cce431f89f..45c077d0f063 100644 --- a/drivers/mtd/onenand/generic.c +++ b/drivers/mtd/onenand/generic.c | |||
| @@ -12,9 +12,9 @@ | |||
| 12 | * This is a device driver for the OneNAND flash for generic boards. | 12 | * This is a device driver for the OneNAND flash for generic boards. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/device.h> | ||
| 16 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 17 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/platform_device.h> | ||
| 18 | #include <linux/mtd/mtd.h> | 18 | #include <linux/mtd/mtd.h> |
| 19 | #include <linux/mtd/onenand.h> | 19 | #include <linux/mtd/onenand.h> |
| 20 | #include <linux/mtd/partitions.h> | 20 | #include <linux/mtd/partitions.h> |
| @@ -39,7 +39,7 @@ static int __devinit generic_onenand_probe(struct device *dev) | |||
| 39 | { | 39 | { |
| 40 | struct onenand_info *info; | 40 | struct onenand_info *info; |
| 41 | struct platform_device *pdev = to_platform_device(dev); | 41 | struct platform_device *pdev = to_platform_device(dev); |
| 42 | struct onenand_platform_data *pdata = pdev->dev.platform_data; | 42 | struct flash_platform_data *pdata = pdev->dev.platform_data; |
| 43 | struct resource *res = pdev->resource; | 43 | struct resource *res = pdev->resource; |
| 44 | unsigned long size = res->end - res->start + 1; | 44 | unsigned long size = res->end - res->start + 1; |
| 45 | int err; | 45 | int err; |
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c index f67d5d6eb9a6..a53a73fc2a5a 100644 --- a/drivers/mtd/onenand/onenand_base.c +++ b/drivers/mtd/onenand/onenand_base.c | |||
| @@ -940,7 +940,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs, | |||
| 940 | u_char *eccbuf, struct nand_oobinfo *oobsel) | 940 | u_char *eccbuf, struct nand_oobinfo *oobsel) |
| 941 | { | 941 | { |
| 942 | struct onenand_chip *this = mtd->priv; | 942 | struct onenand_chip *this = mtd->priv; |
| 943 | unsigned char buffer[MAX_ONENAND_PAGESIZE], *pbuf; | 943 | unsigned char *pbuf; |
| 944 | size_t total_len, len; | 944 | size_t total_len, len; |
| 945 | int i, written = 0; | 945 | int i, written = 0; |
| 946 | int ret = 0; | 946 | int ret = 0; |
| @@ -975,7 +975,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs, | |||
| 975 | /* Loop until all keve's data has been written */ | 975 | /* Loop until all keve's data has been written */ |
| 976 | len = 0; | 976 | len = 0; |
| 977 | while (count) { | 977 | while (count) { |
| 978 | pbuf = buffer; | 978 | pbuf = this->page_buf; |
| 979 | /* | 979 | /* |
| 980 | * If the given tuple is >= pagesize then | 980 | * If the given tuple is >= pagesize then |
| 981 | * write it out from the iov | 981 | * write it out from the iov |
| @@ -995,7 +995,7 @@ static int onenand_writev_ecc(struct mtd_info *mtd, const struct kvec *vecs, | |||
| 995 | int cnt = 0, thislen; | 995 | int cnt = 0, thislen; |
| 996 | while (cnt < mtd->oobblock) { | 996 | while (cnt < mtd->oobblock) { |
| 997 | thislen = min_t(int, mtd->oobblock - cnt, vecs->iov_len - len); | 997 | thislen = min_t(int, mtd->oobblock - cnt, vecs->iov_len - len); |
| 998 | memcpy(buffer + cnt, vecs->iov_base + len, thislen); | 998 | memcpy(this->page_buf + cnt, vecs->iov_base + len, thislen); |
| 999 | cnt += thislen; | 999 | cnt += thislen; |
| 1000 | len += thislen; | 1000 | len += thislen; |
| 1001 | 1001 | ||
| @@ -1296,6 +1296,12 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len) | |||
| 1296 | 1296 | ||
| 1297 | /* Block lock scheme */ | 1297 | /* Block lock scheme */ |
| 1298 | for (block = start; block < end; block++) { | 1298 | for (block = start; block < end; block++) { |
| 1299 | /* Set block address */ | ||
| 1300 | value = onenand_block_address(this, block); | ||
| 1301 | this->write_word(value, this->base + ONENAND_REG_START_ADDRESS1); | ||
| 1302 | /* Select DataRAM for DDP */ | ||
| 1303 | value = onenand_bufferram_address(this, block); | ||
| 1304 | this->write_word(value, this->base + ONENAND_REG_START_ADDRESS2); | ||
| 1299 | /* Set start block address */ | 1305 | /* Set start block address */ |
| 1300 | this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS); | 1306 | this->write_word(block, this->base + ONENAND_REG_START_BLOCK_ADDRESS); |
| 1301 | /* Write unlock command */ | 1307 | /* Write unlock command */ |
| @@ -1309,10 +1315,6 @@ static int onenand_unlock(struct mtd_info *mtd, loff_t ofs, size_t len) | |||
| 1309 | & ONENAND_CTRL_ONGO) | 1315 | & ONENAND_CTRL_ONGO) |
| 1310 | continue; | 1316 | continue; |
| 1311 | 1317 | ||
| 1312 | /* Set block address for read block status */ | ||
| 1313 | value = onenand_block_address(this, block); | ||
| 1314 | this->write_word(value, this->base + ONENAND_REG_START_ADDRESS1); | ||
| 1315 | |||
| 1316 | /* Check lock status */ | 1318 | /* Check lock status */ |
| 1317 | status = this->read_word(this->base + ONENAND_REG_WP_STATUS); | 1319 | status = this->read_word(this->base + ONENAND_REG_WP_STATUS); |
| 1318 | if (!(status & ONENAND_WP_US)) | 1320 | if (!(status & ONENAND_WP_US)) |
| @@ -1346,7 +1348,6 @@ static void onenand_print_device_info(int device) | |||
| 1346 | 1348 | ||
| 1347 | static const struct onenand_manufacturers onenand_manuf_ids[] = { | 1349 | static const struct onenand_manufacturers onenand_manuf_ids[] = { |
| 1348 | {ONENAND_MFR_SAMSUNG, "Samsung"}, | 1350 | {ONENAND_MFR_SAMSUNG, "Samsung"}, |
| 1349 | {ONENAND_MFR_UNKNOWN, "Unknown"} | ||
| 1350 | }; | 1351 | }; |
| 1351 | 1352 | ||
| 1352 | /** | 1353 | /** |
| @@ -1357,17 +1358,22 @@ static const struct onenand_manufacturers onenand_manuf_ids[] = { | |||
| 1357 | */ | 1358 | */ |
| 1358 | static int onenand_check_maf(int manuf) | 1359 | static int onenand_check_maf(int manuf) |
| 1359 | { | 1360 | { |
| 1361 | int size = ARRAY_SIZE(onenand_manuf_ids); | ||
| 1362 | char *name; | ||
| 1360 | int i; | 1363 | int i; |
| 1361 | 1364 | ||
| 1362 | for (i = 0; onenand_manuf_ids[i].id; i++) { | 1365 | for (i = 0; i < size; i++) |
| 1363 | if (manuf == onenand_manuf_ids[i].id) | 1366 | if (manuf == onenand_manuf_ids[i].id) |
| 1364 | break; | 1367 | break; |
| 1365 | } | ||
| 1366 | 1368 | ||
| 1367 | printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", | 1369 | if (i < size) |
| 1368 | onenand_manuf_ids[i].name, manuf); | 1370 | name = onenand_manuf_ids[i].name; |
| 1371 | else | ||
| 1372 | name = "Unknown"; | ||
| 1373 | |||
| 1374 | printk(KERN_DEBUG "OneNAND Manufacturer: %s (0x%0x)\n", name, manuf); | ||
| 1369 | 1375 | ||
| 1370 | return (i != ONENAND_MFR_UNKNOWN); | 1376 | return (i == size); |
| 1371 | } | 1377 | } |
| 1372 | 1378 | ||
| 1373 | /** | 1379 | /** |
| @@ -1513,6 +1519,18 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) | |||
| 1513 | this->read_bufferram = onenand_sync_read_bufferram; | 1519 | this->read_bufferram = onenand_sync_read_bufferram; |
| 1514 | } | 1520 | } |
| 1515 | 1521 | ||
| 1522 | /* Allocate buffers, if necessary */ | ||
| 1523 | if (!this->page_buf) { | ||
| 1524 | size_t len; | ||
| 1525 | len = mtd->oobblock + mtd->oobsize; | ||
| 1526 | this->page_buf = kmalloc(len, GFP_KERNEL); | ||
| 1527 | if (!this->page_buf) { | ||
| 1528 | printk(KERN_ERR "onenand_scan(): Can't allocate page_buf\n"); | ||
| 1529 | return -ENOMEM; | ||
| 1530 | } | ||
| 1531 | this->options |= ONENAND_PAGEBUF_ALLOC; | ||
| 1532 | } | ||
| 1533 | |||
| 1516 | this->state = FL_READY; | 1534 | this->state = FL_READY; |
| 1517 | init_waitqueue_head(&this->wq); | 1535 | init_waitqueue_head(&this->wq); |
| 1518 | spin_lock_init(&this->chip_lock); | 1536 | spin_lock_init(&this->chip_lock); |
| @@ -1574,12 +1592,21 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) | |||
| 1574 | */ | 1592 | */ |
| 1575 | void onenand_release(struct mtd_info *mtd) | 1593 | void onenand_release(struct mtd_info *mtd) |
| 1576 | { | 1594 | { |
| 1595 | struct onenand_chip *this = mtd->priv; | ||
| 1596 | |||
| 1577 | #ifdef CONFIG_MTD_PARTITIONS | 1597 | #ifdef CONFIG_MTD_PARTITIONS |
| 1578 | /* Deregister partitions */ | 1598 | /* Deregister partitions */ |
| 1579 | del_mtd_partitions (mtd); | 1599 | del_mtd_partitions (mtd); |
| 1580 | #endif | 1600 | #endif |
| 1581 | /* Deregister the device */ | 1601 | /* Deregister the device */ |
| 1582 | del_mtd_device (mtd); | 1602 | del_mtd_device (mtd); |
| 1603 | |||
| 1604 | /* Free bad block table memory, if allocated */ | ||
| 1605 | if (this->bbm) | ||
| 1606 | kfree(this->bbm); | ||
| 1607 | /* Buffer allocated by onenand_scan */ | ||
| 1608 | if (this->options & ONENAND_PAGEBUF_ALLOC) | ||
| 1609 | kfree(this->page_buf); | ||
| 1583 | } | 1610 | } |
| 1584 | 1611 | ||
| 1585 | EXPORT_SYMBOL_GPL(onenand_scan); | 1612 | EXPORT_SYMBOL_GPL(onenand_scan); |
diff --git a/drivers/mtd/onenand/onenand_bbt.c b/drivers/mtd/onenand/onenand_bbt.c index f40190f499e1..4510d3361eaa 100644 --- a/drivers/mtd/onenand/onenand_bbt.c +++ b/drivers/mtd/onenand/onenand_bbt.c | |||
| @@ -118,10 +118,10 @@ static int create_bbt(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr | |||
| 118 | */ | 118 | */ |
| 119 | static inline int onenand_memory_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd) | 119 | static inline int onenand_memory_bbt (struct mtd_info *mtd, struct nand_bbt_descr *bd) |
| 120 | { | 120 | { |
| 121 | unsigned char data_buf[MAX_ONENAND_PAGESIZE]; | 121 | struct onenand_chip *this = mtd->priv; |
| 122 | 122 | ||
| 123 | bd->options &= ~NAND_BBT_SCANEMPTY; | 123 | bd->options &= ~NAND_BBT_SCANEMPTY; |
| 124 | return create_bbt(mtd, data_buf, bd, -1); | 124 | return create_bbt(mtd, this->page_buf, bd, -1); |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | /** | 127 | /** |
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c index 418fc7b896ac..6252b9ddc01e 100644 --- a/drivers/scsi/dpt_i2o.c +++ b/drivers/scsi/dpt_i2o.c | |||
| @@ -660,7 +660,12 @@ static int adpt_abort(struct scsi_cmnd * cmd) | |||
| 660 | msg[2] = 0; | 660 | msg[2] = 0; |
| 661 | msg[3]= 0; | 661 | msg[3]= 0; |
| 662 | msg[4] = (u32)cmd; | 662 | msg[4] = (u32)cmd; |
| 663 | if( (rcode = adpt_i2o_post_wait(pHba, msg, sizeof(msg), FOREVER)) != 0){ | 663 | if (pHba->host) |
| 664 | spin_lock_irq(pHba->host->host_lock); | ||
| 665 | rcode = adpt_i2o_post_wait(pHba, msg, sizeof(msg), FOREVER); | ||
| 666 | if (pHba->host) | ||
| 667 | spin_unlock_irq(pHba->host->host_lock); | ||
| 668 | if (rcode != 0) { | ||
| 664 | if(rcode == -EOPNOTSUPP ){ | 669 | if(rcode == -EOPNOTSUPP ){ |
| 665 | printk(KERN_INFO"%s: Abort cmd not supported\n",pHba->name); | 670 | printk(KERN_INFO"%s: Abort cmd not supported\n",pHba->name); |
| 666 | return FAILED; | 671 | return FAILED; |
| @@ -697,10 +702,15 @@ static int adpt_device_reset(struct scsi_cmnd* cmd) | |||
| 697 | msg[2] = 0; | 702 | msg[2] = 0; |
| 698 | msg[3] = 0; | 703 | msg[3] = 0; |
| 699 | 704 | ||
| 705 | if (pHba->host) | ||
| 706 | spin_lock_irq(pHba->host->host_lock); | ||
| 700 | old_state = d->state; | 707 | old_state = d->state; |
| 701 | d->state |= DPTI_DEV_RESET; | 708 | d->state |= DPTI_DEV_RESET; |
| 702 | if( (rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER)) ){ | 709 | rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER); |
| 703 | d->state = old_state; | 710 | d->state = old_state; |
| 711 | if (pHba->host) | ||
| 712 | spin_unlock_irq(pHba->host->host_lock); | ||
| 713 | if (rcode != 0) { | ||
| 704 | if(rcode == -EOPNOTSUPP ){ | 714 | if(rcode == -EOPNOTSUPP ){ |
| 705 | printk(KERN_INFO"%s: Device reset not supported\n",pHba->name); | 715 | printk(KERN_INFO"%s: Device reset not supported\n",pHba->name); |
| 706 | return FAILED; | 716 | return FAILED; |
| @@ -708,7 +718,6 @@ static int adpt_device_reset(struct scsi_cmnd* cmd) | |||
| 708 | printk(KERN_INFO"%s: Device reset failed\n",pHba->name); | 718 | printk(KERN_INFO"%s: Device reset failed\n",pHba->name); |
| 709 | return FAILED; | 719 | return FAILED; |
| 710 | } else { | 720 | } else { |
| 711 | d->state = old_state; | ||
| 712 | printk(KERN_INFO"%s: Device reset successful\n",pHba->name); | 721 | printk(KERN_INFO"%s: Device reset successful\n",pHba->name); |
| 713 | return SUCCESS; | 722 | return SUCCESS; |
| 714 | } | 723 | } |
| @@ -721,6 +730,7 @@ static int adpt_bus_reset(struct scsi_cmnd* cmd) | |||
| 721 | { | 730 | { |
| 722 | adpt_hba* pHba; | 731 | adpt_hba* pHba; |
| 723 | u32 msg[4]; | 732 | u32 msg[4]; |
| 733 | u32 rcode; | ||
| 724 | 734 | ||
| 725 | pHba = (adpt_hba*)cmd->device->host->hostdata[0]; | 735 | pHba = (adpt_hba*)cmd->device->host->hostdata[0]; |
| 726 | memset(msg, 0, sizeof(msg)); | 736 | memset(msg, 0, sizeof(msg)); |
| @@ -729,7 +739,12 @@ static int adpt_bus_reset(struct scsi_cmnd* cmd) | |||
| 729 | msg[1] = (I2O_HBA_BUS_RESET<<24|HOST_TID<<12|pHba->channel[cmd->device->channel].tid); | 739 | msg[1] = (I2O_HBA_BUS_RESET<<24|HOST_TID<<12|pHba->channel[cmd->device->channel].tid); |
| 730 | msg[2] = 0; | 740 | msg[2] = 0; |
| 731 | msg[3] = 0; | 741 | msg[3] = 0; |
| 732 | if(adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER) ){ | 742 | if (pHba->host) |
| 743 | spin_lock_irq(pHba->host->host_lock); | ||
| 744 | rcode = adpt_i2o_post_wait(pHba, msg,sizeof(msg), FOREVER); | ||
| 745 | if (pHba->host) | ||
| 746 | spin_unlock_irq(pHba->host->host_lock); | ||
| 747 | if (rcode != 0) { | ||
| 733 | printk(KERN_WARNING"%s: Bus reset failed.\n",pHba->name); | 748 | printk(KERN_WARNING"%s: Bus reset failed.\n",pHba->name); |
| 734 | return FAILED; | 749 | return FAILED; |
| 735 | } else { | 750 | } else { |
diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c index 9ff25eb520a6..1220a5004a5c 100644 --- a/drivers/usb/input/hid-input.c +++ b/drivers/usb/input/hid-input.c | |||
| @@ -137,6 +137,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
| 137 | switch (usage->hid & 0xffff) { | 137 | switch (usage->hid & 0xffff) { |
| 138 | case 0xba: map_abs(ABS_RUDDER); break; | 138 | case 0xba: map_abs(ABS_RUDDER); break; |
| 139 | case 0xbb: map_abs(ABS_THROTTLE); break; | 139 | case 0xbb: map_abs(ABS_THROTTLE); break; |
| 140 | default: goto ignore; | ||
| 140 | } | 141 | } |
| 141 | break; | 142 | break; |
| 142 | 143 | ||
diff --git a/include/asm-ia64/delay.h b/include/asm-ia64/delay.h index 57182d6f2b9a..bba702076391 100644 --- a/include/asm-ia64/delay.h +++ b/include/asm-ia64/delay.h | |||
| @@ -84,14 +84,6 @@ __delay (unsigned long loops) | |||
| 84 | ia64_delay_loop (loops - 1); | 84 | ia64_delay_loop (loops - 1); |
| 85 | } | 85 | } |
| 86 | 86 | ||
| 87 | static __inline__ void | 87 | extern void udelay (unsigned long usecs); |
| 88 | udelay (unsigned long usecs) | ||
| 89 | { | ||
| 90 | unsigned long start = ia64_get_itc(); | ||
| 91 | unsigned long cycles = usecs*local_cpu_data->cyc_per_usec; | ||
| 92 | |||
| 93 | while (ia64_get_itc() - start < cycles) | ||
| 94 | cpu_relax(); | ||
| 95 | } | ||
| 96 | 88 | ||
| 97 | #endif /* _ASM_IA64_DELAY_H */ | 89 | #endif /* _ASM_IA64_DELAY_H */ |
diff --git a/include/asm-ppc/ppc4xx_dma.h b/include/asm-ppc/ppc4xx_dma.h index a415001165fa..46a086fff816 100644 --- a/include/asm-ppc/ppc4xx_dma.h +++ b/include/asm-ppc/ppc4xx_dma.h | |||
| @@ -33,9 +33,6 @@ | |||
| 33 | 33 | ||
| 34 | #define MAX_PPC4xx_DMA_CHANNELS 4 | 34 | #define MAX_PPC4xx_DMA_CHANNELS 4 |
| 35 | 35 | ||
| 36 | /* in arch/ppc/kernel/setup.c -- Cort */ | ||
| 37 | extern unsigned long DMA_MODE_WRITE, DMA_MODE_READ; | ||
| 38 | |||
| 39 | /* | 36 | /* |
| 40 | * Function return status codes | 37 | * Function return status codes |
| 41 | * These values are used to indicate whether or not the function | 38 | * These values are used to indicate whether or not the function |
diff --git a/include/linux/cache.h b/include/linux/cache.h index f6b5a46c5f82..0b7ecf3af78a 100644 --- a/include/linux/cache.h +++ b/include/linux/cache.h | |||
| @@ -13,7 +13,7 @@ | |||
| 13 | #define SMP_CACHE_BYTES L1_CACHE_BYTES | 13 | #define SMP_CACHE_BYTES L1_CACHE_BYTES |
| 14 | #endif | 14 | #endif |
| 15 | 15 | ||
| 16 | #if defined(CONFIG_X86) || defined(CONFIG_SPARC64) | 16 | #if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64) |
| 17 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | 17 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) |
| 18 | #else | 18 | #else |
| 19 | #define __read_mostly | 19 | #define __read_mostly |
diff --git a/include/linux/mtd/onenand.h b/include/linux/mtd/onenand.h index f1fd4215686a..7419b5fab133 100644 --- a/include/linux/mtd/onenand.h +++ b/include/linux/mtd/onenand.h | |||
| @@ -17,7 +17,6 @@ | |||
| 17 | #include <linux/mtd/bbm.h> | 17 | #include <linux/mtd/bbm.h> |
| 18 | 18 | ||
| 19 | #define MAX_BUFFERRAM 2 | 19 | #define MAX_BUFFERRAM 2 |
| 20 | #define MAX_ONENAND_PAGESIZE (2048 + 64) | ||
| 21 | 20 | ||
| 22 | /* Scan and identify a OneNAND device */ | 21 | /* Scan and identify a OneNAND device */ |
| 23 | extern int onenand_scan(struct mtd_info *mtd, int max_chips); | 22 | extern int onenand_scan(struct mtd_info *mtd, int max_chips); |
| @@ -110,6 +109,7 @@ struct onenand_chip { | |||
| 110 | spinlock_t chip_lock; | 109 | spinlock_t chip_lock; |
| 111 | wait_queue_head_t wq; | 110 | wait_queue_head_t wq; |
| 112 | onenand_state_t state; | 111 | onenand_state_t state; |
| 112 | unsigned char *page_buf; | ||
| 113 | 113 | ||
| 114 | struct nand_oobinfo *autooob; | 114 | struct nand_oobinfo *autooob; |
| 115 | 115 | ||
| @@ -134,13 +134,12 @@ struct onenand_chip { | |||
| 134 | * Options bits | 134 | * Options bits |
| 135 | */ | 135 | */ |
| 136 | #define ONENAND_CONT_LOCK (0x0001) | 136 | #define ONENAND_CONT_LOCK (0x0001) |
| 137 | 137 | #define ONENAND_PAGEBUF_ALLOC (0x1000) | |
| 138 | 138 | ||
| 139 | /* | 139 | /* |
| 140 | * OneNAND Flash Manufacturer ID Codes | 140 | * OneNAND Flash Manufacturer ID Codes |
| 141 | */ | 141 | */ |
| 142 | #define ONENAND_MFR_SAMSUNG 0xec | 142 | #define ONENAND_MFR_SAMSUNG 0xec |
| 143 | #define ONENAND_MFR_UNKNOWN 0x00 | ||
| 144 | 143 | ||
| 145 | /** | 144 | /** |
| 146 | * struct nand_manufacturers - NAND Flash Manufacturer ID Structure | 145 | * struct nand_manufacturers - NAND Flash Manufacturer ID Structure |
