diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-11-30 17:51:29 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-11-30 17:51:29 -0500 |
| commit | 5ebacb271242b3205b865efa1f40a12e981df79d (patch) | |
| tree | 245a9f5d21be583261a377f862aee68be3dfc7c4 | |
| parent | 99d7832c0e4950b8d6ac6ec2951ad1c0e9ada903 (diff) | |
| parent | aa23531ce5fb589d941b5bd84eb258e07131826b (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/vapier/blackfin:
Blackfin: fix SMP build error in start_thread()
Blackfin: fix memset in smp_send_reschedule() and -stop()
Blackfin: fix typo in ptrace poking
Blackfin: check for anomaly 05000475
Blackfin: work around testset anomaly 05000477
Blackfin: update anomaly lists
Blackfin: fix cache Kconfig typo
Blackfin: fix suspend/resume failure with some on-chip ROMs
| -rw-r--r-- | arch/blackfin/kernel/bfin_dma_5xx.c | 9 | ||||
| -rw-r--r-- | arch/blackfin/kernel/cplb-mpu/cplbinit.c | 2 | ||||
| -rw-r--r-- | arch/blackfin/kernel/process.c | 2 | ||||
| -rw-r--r-- | arch/blackfin/kernel/ptrace.c | 2 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf518/include/mach/anomaly.h | 18 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf527/include/mach/anomaly.h | 20 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf533/include/mach/anomaly.h | 18 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf537/include/mach/anomaly.h | 18 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf538/include/mach/anomaly.h | 18 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf548/include/mach/anomaly.h | 23 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf561/atomic.S | 14 | ||||
| -rw-r--r-- | arch/blackfin/mach-bf561/include/mach/anomaly.h | 25 | ||||
| -rw-r--r-- | arch/blackfin/mach-common/arch_checks.c | 5 | ||||
| -rw-r--r-- | arch/blackfin/mach-common/smp.c | 6 |
14 files changed, 138 insertions, 42 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index 1f170216d2f9..3946aff4f414 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
| @@ -225,8 +225,13 @@ int blackfin_dma_suspend(void) | |||
| 225 | void blackfin_dma_resume(void) | 225 | void blackfin_dma_resume(void) |
| 226 | { | 226 | { |
| 227 | int i; | 227 | int i; |
| 228 | for (i = 0; i < MAX_DMA_SUSPEND_CHANNELS; ++i) | 228 | |
| 229 | dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map; | 229 | for (i = 0; i < MAX_DMA_CHANNELS; ++i) { |
| 230 | dma_ch[i].regs->cfg = 0; | ||
| 231 | |||
| 232 | if (i < MAX_DMA_SUSPEND_CHANNELS) | ||
| 233 | dma_ch[i].regs->peripheral_map = dma_ch[i].saved_peripheral_map; | ||
| 234 | } | ||
| 230 | } | 235 | } |
| 231 | #endif | 236 | #endif |
| 232 | 237 | ||
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbinit.c b/arch/blackfin/kernel/cplb-mpu/cplbinit.c index f7b9cdce8239..b52c1f8c4bc0 100644 --- a/arch/blackfin/kernel/cplb-mpu/cplbinit.c +++ b/arch/blackfin/kernel/cplb-mpu/cplbinit.c | |||
| @@ -38,7 +38,7 @@ void __init generate_cplb_tables_cpu(unsigned int cpu) | |||
| 38 | 38 | ||
| 39 | #ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE | 39 | #ifdef CONFIG_BFIN_EXTMEM_DCACHEABLE |
| 40 | d_cache = CPLB_L1_CHBL; | 40 | d_cache = CPLB_L1_CHBL; |
| 41 | #ifdef CONFIG_BFIN_EXTMEM_WRITETROUGH | 41 | #ifdef CONFIG_BFIN_EXTMEM_WRITETHROUGH |
| 42 | d_cache |= CPLB_L1_AOW | CPLB_WT; | 42 | d_cache |= CPLB_L1_AOW | CPLB_WT; |
| 43 | #endif | 43 | #endif |
| 44 | #endif | 44 | #endif |
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index 430ae39456e8..5cc7e2e9e415 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c | |||
| @@ -151,7 +151,7 @@ void start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_ | |||
| 151 | regs->pc = new_ip; | 151 | regs->pc = new_ip; |
| 152 | if (current->mm) | 152 | if (current->mm) |
| 153 | regs->p5 = current->mm->start_data; | 153 | regs->p5 = current->mm->start_data; |
| 154 | #ifdef CONFIG_SMP | 154 | #ifndef CONFIG_SMP |
| 155 | task_thread_info(current)->l1_task_info.stack_start = | 155 | task_thread_info(current)->l1_task_info.stack_start = |
| 156 | (void *)current->mm->context.stack_start; | 156 | (void *)current->mm->context.stack_start; |
| 157 | task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp; | 157 | task_thread_info(current)->l1_task_info.lowest_sp = (void *)new_sp; |
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c index 0982b5d5af10..56b0ba12175f 100644 --- a/arch/blackfin/kernel/ptrace.c +++ b/arch/blackfin/kernel/ptrace.c | |||
| @@ -315,7 +315,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
| 315 | case BFIN_MEM_ACCESS_CORE: | 315 | case BFIN_MEM_ACCESS_CORE: |
| 316 | case BFIN_MEM_ACCESS_CORE_ONLY: | 316 | case BFIN_MEM_ACCESS_CORE_ONLY: |
| 317 | copied = access_process_vm(child, addr, &data, | 317 | copied = access_process_vm(child, addr, &data, |
| 318 | to_copy, 0); | 318 | to_copy, 1); |
| 319 | if (copied) | 319 | if (copied) |
| 320 | break; | 320 | break; |
| 321 | 321 | ||
diff --git a/arch/blackfin/mach-bf518/include/mach/anomaly.h b/arch/blackfin/mach-bf518/include/mach/anomaly.h index e9c65390edd1..2829dd0400f1 100644 --- a/arch/blackfin/mach-bf518/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf518/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf518/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -70,6 +74,10 @@ | |||
| 70 | #define ANOMALY_05000461 (1) | 74 | #define ANOMALY_05000461 (1) |
| 71 | /* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */ | 75 | /* Synchronization Problem at Startup May Cause SPORT Transmit Channels to Misalign */ |
| 72 | #define ANOMALY_05000462 (1) | 76 | #define ANOMALY_05000462 (1) |
| 77 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 78 | #define ANOMALY_05000473 (1) | ||
| 79 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 80 | #define ANOMALY_05000477 (1) | ||
| 73 | 81 | ||
| 74 | /* Anomalies that don't exist on this proc */ | 82 | /* Anomalies that don't exist on this proc */ |
| 75 | #define ANOMALY_05000099 (0) | 83 | #define ANOMALY_05000099 (0) |
| @@ -133,5 +141,7 @@ | |||
| 133 | #define ANOMALY_05000450 (0) | 141 | #define ANOMALY_05000450 (0) |
| 134 | #define ANOMALY_05000465 (0) | 142 | #define ANOMALY_05000465 (0) |
| 135 | #define ANOMALY_05000467 (0) | 143 | #define ANOMALY_05000467 (0) |
| 144 | #define ANOMALY_05000474 (0) | ||
| 145 | #define ANOMALY_05000475 (0) | ||
| 136 | 146 | ||
| 137 | #endif | 147 | #endif |
diff --git a/arch/blackfin/mach-bf527/include/mach/anomaly.h b/arch/blackfin/mach-bf527/include/mach/anomaly.h index 3f9052687fa8..02040df8ec80 100644 --- a/arch/blackfin/mach-bf527/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf527/include/mach/anomaly.h | |||
| @@ -1,14 +1,18 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf527/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| 10 | * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List | 14 | * - Revision D, 08/14/2009; ADSP-BF526 Blackfin Processor Anomaly List |
| 11 | * - Revision F, 03/03/2009; ADSP-BF527 Blackfin Processor Anomaly List | 15 | * - Revision G, 08/25/2009; ADSP-BF527 Blackfin Processor Anomaly List |
| 12 | */ | 16 | */ |
| 13 | 17 | ||
| 14 | #ifndef _MACH_ANOMALY_H_ | 18 | #ifndef _MACH_ANOMALY_H_ |
| @@ -200,6 +204,10 @@ | |||
| 200 | #define ANOMALY_05000467 (1) | 204 | #define ANOMALY_05000467 (1) |
| 201 | /* PLL Latches Incorrect Settings During Reset */ | 205 | /* PLL Latches Incorrect Settings During Reset */ |
| 202 | #define ANOMALY_05000469 (1) | 206 | #define ANOMALY_05000469 (1) |
| 207 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 208 | #define ANOMALY_05000473 (1) | ||
| 209 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 210 | #define ANOMALY_05000477 (1) | ||
| 203 | 211 | ||
| 204 | /* Anomalies that don't exist on this proc */ | 212 | /* Anomalies that don't exist on this proc */ |
| 205 | #define ANOMALY_05000099 (0) | 213 | #define ANOMALY_05000099 (0) |
| @@ -250,5 +258,7 @@ | |||
| 250 | #define ANOMALY_05000412 (0) | 258 | #define ANOMALY_05000412 (0) |
| 251 | #define ANOMALY_05000447 (0) | 259 | #define ANOMALY_05000447 (0) |
| 252 | #define ANOMALY_05000448 (0) | 260 | #define ANOMALY_05000448 (0) |
| 261 | #define ANOMALY_05000474 (0) | ||
| 262 | #define ANOMALY_05000475 (0) | ||
| 253 | 263 | ||
| 254 | #endif | 264 | #endif |
diff --git a/arch/blackfin/mach-bf533/include/mach/anomaly.h b/arch/blackfin/mach-bf533/include/mach/anomaly.h index cd83db2fb1a1..9b3f7a27714d 100644 --- a/arch/blackfin/mach-bf533/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf533/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf533/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -202,6 +206,10 @@ | |||
| 202 | #define ANOMALY_05000443 (1) | 206 | #define ANOMALY_05000443 (1) |
| 203 | /* False Hardware Error when RETI Points to Invalid Memory */ | 207 | /* False Hardware Error when RETI Points to Invalid Memory */ |
| 204 | #define ANOMALY_05000461 (1) | 208 | #define ANOMALY_05000461 (1) |
| 209 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 210 | #define ANOMALY_05000473 (1) | ||
| 211 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 212 | #define ANOMALY_05000477 (1) | ||
| 205 | 213 | ||
| 206 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are | 214 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are |
| 207 | * here to show running on older silicon just isn't feasible. | 215 | * here to show running on older silicon just isn't feasible. |
| @@ -349,5 +357,7 @@ | |||
| 349 | #define ANOMALY_05000450 (0) | 357 | #define ANOMALY_05000450 (0) |
| 350 | #define ANOMALY_05000465 (0) | 358 | #define ANOMALY_05000465 (0) |
| 351 | #define ANOMALY_05000467 (0) | 359 | #define ANOMALY_05000467 (0) |
| 360 | #define ANOMALY_05000474 (0) | ||
| 361 | #define ANOMALY_05000475 (0) | ||
| 352 | 362 | ||
| 353 | #endif | 363 | #endif |
diff --git a/arch/blackfin/mach-bf537/include/mach/anomaly.h b/arch/blackfin/mach-bf537/include/mach/anomaly.h index f091ad2d8ea8..d2c427bc6656 100644 --- a/arch/blackfin/mach-bf537/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf537/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf537/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -156,6 +160,10 @@ | |||
| 156 | #define ANOMALY_05000443 (1) | 160 | #define ANOMALY_05000443 (1) |
| 157 | /* False Hardware Error when RETI Points to Invalid Memory */ | 161 | /* False Hardware Error when RETI Points to Invalid Memory */ |
| 158 | #define ANOMALY_05000461 (1) | 162 | #define ANOMALY_05000461 (1) |
| 163 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 164 | #define ANOMALY_05000473 (1) | ||
| 165 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 166 | #define ANOMALY_05000477 (1) | ||
| 159 | 167 | ||
| 160 | /* Anomalies that don't exist on this proc */ | 168 | /* Anomalies that don't exist on this proc */ |
| 161 | #define ANOMALY_05000099 (0) | 169 | #define ANOMALY_05000099 (0) |
| @@ -202,5 +210,7 @@ | |||
| 202 | #define ANOMALY_05000450 (0) | 210 | #define ANOMALY_05000450 (0) |
| 203 | #define ANOMALY_05000465 (0) | 211 | #define ANOMALY_05000465 (0) |
| 204 | #define ANOMALY_05000467 (0) | 212 | #define ANOMALY_05000467 (0) |
| 213 | #define ANOMALY_05000474 (0) | ||
| 214 | #define ANOMALY_05000475 (0) | ||
| 205 | 215 | ||
| 206 | #endif | 216 | #endif |
diff --git a/arch/blackfin/mach-bf538/include/mach/anomaly.h b/arch/blackfin/mach-bf538/include/mach/anomaly.h index 26b76083e14c..d882b7e6f59b 100644 --- a/arch/blackfin/mach-bf538/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf538/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf538/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -128,6 +132,10 @@ | |||
| 128 | #define ANOMALY_05000443 (1) | 132 | #define ANOMALY_05000443 (1) |
| 129 | /* False Hardware Error when RETI Points to Invalid Memory */ | 133 | /* False Hardware Error when RETI Points to Invalid Memory */ |
| 130 | #define ANOMALY_05000461 (1) | 134 | #define ANOMALY_05000461 (1) |
| 135 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 136 | #define ANOMALY_05000473 (1) | ||
| 137 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 138 | #define ANOMALY_05000477 (1) | ||
| 131 | 139 | ||
| 132 | /* Anomalies that don't exist on this proc */ | 140 | /* Anomalies that don't exist on this proc */ |
| 133 | #define ANOMALY_05000099 (0) | 141 | #define ANOMALY_05000099 (0) |
| @@ -176,5 +184,7 @@ | |||
| 176 | #define ANOMALY_05000450 (0) | 184 | #define ANOMALY_05000450 (0) |
| 177 | #define ANOMALY_05000465 (0) | 185 | #define ANOMALY_05000465 (0) |
| 178 | #define ANOMALY_05000467 (0) | 186 | #define ANOMALY_05000467 (0) |
| 187 | #define ANOMALY_05000474 (0) | ||
| 188 | #define ANOMALY_05000475 (0) | ||
| 179 | 189 | ||
| 180 | #endif | 190 | #endif |
diff --git a/arch/blackfin/mach-bf548/include/mach/anomaly.h b/arch/blackfin/mach-bf548/include/mach/anomaly.h index 52b116ae522a..7d08c7524498 100644 --- a/arch/blackfin/mach-bf548/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf548/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf548/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -24,6 +28,8 @@ | |||
| 24 | #define ANOMALY_05000119 (1) | 28 | #define ANOMALY_05000119 (1) |
| 25 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ | 29 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ |
| 26 | #define ANOMALY_05000122 (1) | 30 | #define ANOMALY_05000122 (1) |
| 31 | /* Data Corruption with Cached External Memory and Non-Cached On-Chip L2 Memory */ | ||
| 32 | #define ANOMALY_05000220 (1) | ||
| 27 | /* False Hardware Error from an Access in the Shadow of a Conditional Branch */ | 33 | /* False Hardware Error from an Access in the Shadow of a Conditional Branch */ |
| 28 | #define ANOMALY_05000245 (1) | 34 | #define ANOMALY_05000245 (1) |
| 29 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ | 35 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ |
| @@ -200,6 +206,14 @@ | |||
| 200 | #define ANOMALY_05000466 (1) | 206 | #define ANOMALY_05000466 (1) |
| 201 | /* Possible RX data corruption when control & data EP FIFOs are accessed via the core */ | 207 | /* Possible RX data corruption when control & data EP FIFOs are accessed via the core */ |
| 202 | #define ANOMALY_05000467 (1) | 208 | #define ANOMALY_05000467 (1) |
| 209 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 210 | #define ANOMALY_05000473 (1) | ||
| 211 | /* Access to DDR-SDRAM causes system hang under certain PLL/VR settings */ | ||
| 212 | #define ANOMALY_05000474 (1) | ||
| 213 | /* Core Hang With L2/L3 Configured in Writeback Cache Mode */ | ||
| 214 | #define ANOMALY_05000475 (1) | ||
| 215 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 216 | #define ANOMALY_05000477 (1) | ||
| 203 | 217 | ||
| 204 | /* Anomalies that don't exist on this proc */ | 218 | /* Anomalies that don't exist on this proc */ |
| 205 | #define ANOMALY_05000099 (0) | 219 | #define ANOMALY_05000099 (0) |
| @@ -215,7 +229,6 @@ | |||
| 215 | #define ANOMALY_05000198 (0) | 229 | #define ANOMALY_05000198 (0) |
| 216 | #define ANOMALY_05000202 (0) | 230 | #define ANOMALY_05000202 (0) |
| 217 | #define ANOMALY_05000215 (0) | 231 | #define ANOMALY_05000215 (0) |
| 218 | #define ANOMALY_05000220 (0) | ||
| 219 | #define ANOMALY_05000227 (0) | 232 | #define ANOMALY_05000227 (0) |
| 220 | #define ANOMALY_05000230 (0) | 233 | #define ANOMALY_05000230 (0) |
| 221 | #define ANOMALY_05000231 (0) | 234 | #define ANOMALY_05000231 (0) |
diff --git a/arch/blackfin/mach-bf561/atomic.S b/arch/blackfin/mach-bf561/atomic.S index 0261a5e751b3..f99f174b129f 100644 --- a/arch/blackfin/mach-bf561/atomic.S +++ b/arch/blackfin/mach-bf561/atomic.S | |||
| @@ -19,6 +19,16 @@ | |||
| 19 | \reg\().h = _corelock; | 19 | \reg\().h = _corelock; |
| 20 | .endm | 20 | .endm |
| 21 | 21 | ||
| 22 | .macro safe_testset addr:req, scratch:req | ||
| 23 | #if ANOMALY_05000477 | ||
| 24 | cli \scratch; | ||
| 25 | testset (\addr); | ||
| 26 | sti \scratch; | ||
| 27 | #else | ||
| 28 | testset (\addr); | ||
| 29 | #endif | ||
| 30 | .endm | ||
| 31 | |||
| 22 | /* | 32 | /* |
| 23 | * r0 = address of atomic data to flush and invalidate (32bit). | 33 | * r0 = address of atomic data to flush and invalidate (32bit). |
| 24 | * | 34 | * |
| @@ -33,7 +43,7 @@ ENTRY(_get_core_lock) | |||
| 33 | cli r0; | 43 | cli r0; |
| 34 | coreslot_loadaddr p0; | 44 | coreslot_loadaddr p0; |
| 35 | .Lretry_corelock: | 45 | .Lretry_corelock: |
| 36 | testset (p0); | 46 | safe_testset p0, r2; |
| 37 | if cc jump .Ldone_corelock; | 47 | if cc jump .Ldone_corelock; |
| 38 | SSYNC(r2); | 48 | SSYNC(r2); |
| 39 | jump .Lretry_corelock | 49 | jump .Lretry_corelock |
| @@ -56,7 +66,7 @@ ENTRY(_get_core_lock_noflush) | |||
| 56 | cli r0; | 66 | cli r0; |
| 57 | coreslot_loadaddr p0; | 67 | coreslot_loadaddr p0; |
| 58 | .Lretry_corelock_noflush: | 68 | .Lretry_corelock_noflush: |
| 59 | testset (p0); | 69 | safe_testset p0, r2; |
| 60 | if cc jump .Ldone_corelock_noflush; | 70 | if cc jump .Ldone_corelock_noflush; |
| 61 | SSYNC(r2); | 71 | SSYNC(r2); |
| 62 | jump .Lretry_corelock_noflush | 72 | jump .Lretry_corelock_noflush |
diff --git a/arch/blackfin/mach-bf561/include/mach/anomaly.h b/arch/blackfin/mach-bf561/include/mach/anomaly.h index 70da495c9665..5ddc981e9937 100644 --- a/arch/blackfin/mach-bf561/include/mach/anomaly.h +++ b/arch/blackfin/mach-bf561/include/mach/anomaly.h | |||
| @@ -1,9 +1,13 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * File: include/asm-blackfin/mach-bf561/anomaly.h | 2 | * DO NOT EDIT THIS FILE |
| 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * This file is under version control at |
| 4 | * svn://sources.blackfin.uclinux.org/toolchain/trunk/proc-defs/header-frags/ | ||
| 5 | * and can be replaced with that version at any time | ||
| 6 | * DO NOT EDIT THIS FILE | ||
| 4 | * | 7 | * |
| 5 | * Copyright (C) 2004-2009 Analog Devices Inc. | 8 | * Copyright 2004-2009 Analog Devices Inc. |
| 6 | * Licensed under the GPL-2 or later. | 9 | * Licensed under the ADI BSD license. |
| 10 | * https://docs.blackfin.uclinux.org/doku.php?id=adi_bsd | ||
| 7 | */ | 11 | */ |
| 8 | 12 | ||
| 9 | /* This file should be up to date with: | 13 | /* This file should be up to date with: |
| @@ -213,7 +217,11 @@ | |||
| 213 | /* Disabling Peripherals with DMA Running May Cause DMA System Instability */ | 217 | /* Disabling Peripherals with DMA Running May Cause DMA System Instability */ |
| 214 | #define ANOMALY_05000278 (__SILICON_REVISION__ < 5) | 218 | #define ANOMALY_05000278 (__SILICON_REVISION__ < 5) |
| 215 | /* False Hardware Error Exception when ISR Context Is Not Restored */ | 219 | /* False Hardware Error Exception when ISR Context Is Not Restored */ |
| 216 | #define ANOMALY_05000281 (__SILICON_REVISION__ < 5) | 220 | /* Temporarily walk around for bug 5423 till this issue is confirmed by |
| 221 | * official anomaly document. It looks 05000281 still exists on bf561 | ||
| 222 | * v0.5. | ||
| 223 | */ | ||
| 224 | #define ANOMALY_05000281 (__SILICON_REVISION__ <= 5) | ||
| 217 | /* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */ | 225 | /* System MMR Write Is Stalled Indefinitely when Killed in a Particular Stage */ |
| 218 | #define ANOMALY_05000283 (1) | 226 | #define ANOMALY_05000283 (1) |
| 219 | /* Reads Will Receive Incorrect Data under Certain Conditions */ | 227 | /* Reads Will Receive Incorrect Data under Certain Conditions */ |
| @@ -280,6 +288,12 @@ | |||
| 280 | #define ANOMALY_05000443 (1) | 288 | #define ANOMALY_05000443 (1) |
| 281 | /* False Hardware Error when RETI Points to Invalid Memory */ | 289 | /* False Hardware Error when RETI Points to Invalid Memory */ |
| 282 | #define ANOMALY_05000461 (1) | 290 | #define ANOMALY_05000461 (1) |
| 291 | /* Interrupted 32-Bit SPORT Data Register Access Results In Underflow */ | ||
| 292 | #define ANOMALY_05000473 (1) | ||
| 293 | /* Core Hang With L2/L3 Configured in Writeback Cache Mode */ | ||
| 294 | #define ANOMALY_05000475 (__SILICON_REVISION__ < 4) | ||
| 295 | /* TESTSET Instruction Cannot Be Interrupted */ | ||
| 296 | #define ANOMALY_05000477 (1) | ||
| 283 | 297 | ||
| 284 | /* Anomalies that don't exist on this proc */ | 298 | /* Anomalies that don't exist on this proc */ |
| 285 | #define ANOMALY_05000119 (0) | 299 | #define ANOMALY_05000119 (0) |
| @@ -304,5 +318,6 @@ | |||
| 304 | #define ANOMALY_05000450 (0) | 318 | #define ANOMALY_05000450 (0) |
| 305 | #define ANOMALY_05000465 (0) | 319 | #define ANOMALY_05000465 (0) |
| 306 | #define ANOMALY_05000467 (0) | 320 | #define ANOMALY_05000467 (0) |
| 321 | #define ANOMALY_05000474 (0) | ||
| 307 | 322 | ||
| 308 | #endif | 323 | #endif |
diff --git a/arch/blackfin/mach-common/arch_checks.c b/arch/blackfin/mach-common/arch_checks.c index 9dbafcdcf479..f2ca211a76a0 100644 --- a/arch/blackfin/mach-common/arch_checks.c +++ b/arch/blackfin/mach-common/arch_checks.c | |||
| @@ -57,3 +57,8 @@ | |||
| 57 | (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK))) | 57 | (!defined(CONFIG_BFIN_EXTMEM_DCACHEABLE) && defined(CONFIG_BFIN_L2_WRITEBACK))) |
| 58 | # error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB. | 58 | # error You are exposing Anomaly 220 in this config, either config L2 as Write Through, or make External Memory WB. |
| 59 | #endif | 59 | #endif |
| 60 | |||
| 61 | #if ANOMALY_05000475 && \ | ||
| 62 | (defined(CONFIG_BFIN_EXTMEM_WRITEBACK) || defined(CONFIG_BFIN_L2_WRITEBACK)) | ||
| 63 | # error "Anomaly 475 does not allow you to use Write Back cache with L2 or External Memory" | ||
| 64 | #endif | ||
diff --git a/arch/blackfin/mach-common/smp.c b/arch/blackfin/mach-common/smp.c index d98585f3237d..d92b168c8328 100644 --- a/arch/blackfin/mach-common/smp.c +++ b/arch/blackfin/mach-common/smp.c | |||
| @@ -276,10 +276,9 @@ void smp_send_reschedule(int cpu) | |||
| 276 | if (cpu_is_offline(cpu)) | 276 | if (cpu_is_offline(cpu)) |
| 277 | return; | 277 | return; |
| 278 | 278 | ||
| 279 | msg = kmalloc(sizeof(*msg), GFP_ATOMIC); | 279 | msg = kzalloc(sizeof(*msg), GFP_ATOMIC); |
| 280 | if (!msg) | 280 | if (!msg) |
| 281 | return; | 281 | return; |
| 282 | memset(msg, 0, sizeof(msg)); | ||
| 283 | INIT_LIST_HEAD(&msg->list); | 282 | INIT_LIST_HEAD(&msg->list); |
| 284 | msg->type = BFIN_IPI_RESCHEDULE; | 283 | msg->type = BFIN_IPI_RESCHEDULE; |
| 285 | 284 | ||
| @@ -305,10 +304,9 @@ void smp_send_stop(void) | |||
| 305 | if (cpus_empty(callmap)) | 304 | if (cpus_empty(callmap)) |
| 306 | return; | 305 | return; |
| 307 | 306 | ||
| 308 | msg = kmalloc(sizeof(*msg), GFP_ATOMIC); | 307 | msg = kzalloc(sizeof(*msg), GFP_ATOMIC); |
| 309 | if (!msg) | 308 | if (!msg) |
| 310 | return; | 309 | return; |
| 311 | memset(msg, 0, sizeof(msg)); | ||
| 312 | INIT_LIST_HEAD(&msg->list); | 310 | INIT_LIST_HEAD(&msg->list); |
| 313 | msg->type = BFIN_IPI_CPU_STOP; | 311 | msg->type = BFIN_IPI_CPU_STOP; |
| 314 | 312 | ||
