diff options
| -rw-r--r-- | Documentation/kernel-parameters.txt | 6 | ||||
| -rw-r--r-- | arch/ia64/kernel/sal.c | 11 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index cdd5b934f43e..654d630f6751 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -689,6 +689,12 @@ and is between 256 and 4096 characters. It is defined in the file | |||
| 689 | floppy= [HW] | 689 | floppy= [HW] |
| 690 | See Documentation/floppy.txt. | 690 | See Documentation/floppy.txt. |
| 691 | 691 | ||
| 692 | force_pal_cache_flush | ||
| 693 | [IA-64] Avoid check_sal_cache_flush which may hang on | ||
| 694 | buggy SAL_CACHE_FLUSH implementations. Using this | ||
| 695 | parameter will force ia64_sal_cache_flush to call | ||
| 696 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. | ||
| 697 | |||
| 692 | gamecon.map[2|3]= | 698 | gamecon.map[2|3]= |
| 693 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad | 699 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad |
| 694 | support via parallel port (up to 5 devices per port) | 700 | support via parallel port (up to 5 devices per port) |
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c index a3022dc48ef8..7e0259709c04 100644 --- a/arch/ia64/kernel/sal.c +++ b/arch/ia64/kernel/sal.c | |||
| @@ -229,6 +229,14 @@ static void __init sal_desc_ap_wakeup(void *p) { } | |||
| 229 | */ | 229 | */ |
| 230 | static int sal_cache_flush_drops_interrupts; | 230 | static int sal_cache_flush_drops_interrupts; |
| 231 | 231 | ||
| 232 | static int __init | ||
| 233 | force_pal_cache_flush(char *str) | ||
| 234 | { | ||
| 235 | sal_cache_flush_drops_interrupts = 1; | ||
| 236 | return 0; | ||
| 237 | } | ||
| 238 | early_param("force_pal_cache_flush", force_pal_cache_flush); | ||
| 239 | |||
| 232 | void __init | 240 | void __init |
| 233 | check_sal_cache_flush (void) | 241 | check_sal_cache_flush (void) |
| 234 | { | 242 | { |
| @@ -237,6 +245,9 @@ check_sal_cache_flush (void) | |||
| 237 | u64 vector, cache_type = 3; | 245 | u64 vector, cache_type = 3; |
| 238 | struct ia64_sal_retval isrv; | 246 | struct ia64_sal_retval isrv; |
| 239 | 247 | ||
| 248 | if (sal_cache_flush_drops_interrupts) | ||
| 249 | return; | ||
| 250 | |||
| 240 | cpu = get_cpu(); | 251 | cpu = get_cpu(); |
| 241 | local_irq_save(flags); | 252 | local_irq_save(flags); |
| 242 | 253 | ||
