diff options
author | <jgarzik@pretzel.yyz.us> | 2005-05-26 02:17:16 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-05-26 02:17:16 -0400 |
commit | c1ef1f351db70ad60c793b8218dd9f6739cfd66d (patch) | |
tree | 3251d6bea051ad11397e6128ae584c1a4b85a5e6 | |
parent | ad6a9984eec72f3a609a8685281740f5e5f466aa (diff) | |
parent | bef9c558841604116704e10b3d9ff3dbf4939423 (diff) |
Automatic merge of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git branch HEAD
-rw-r--r-- | arch/sparc64/kernel/setup.c | 11 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 3 | ||||
-rw-r--r-- | arch/sparc64/kernel/traps.c | 19 | ||||
-rw-r--r-- | drivers/scsi/sata_promise.c | 2 | ||||
-rw-r--r-- | drivers/scsi/sata_sil.c | 1 | ||||
-rw-r--r-- | include/asm-sparc64/spitfire.h | 3 |
6 files changed, 39 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index 12c3d84b7460..b7e6a91952b2 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
@@ -383,6 +383,17 @@ static void __init process_switch(char c) | |||
383 | /* Use PROM debug console. */ | 383 | /* Use PROM debug console. */ |
384 | register_console(&prom_debug_console); | 384 | register_console(&prom_debug_console); |
385 | break; | 385 | break; |
386 | case 'P': | ||
387 | /* Force UltraSPARC-III P-Cache on. */ | ||
388 | if (tlb_type != cheetah) { | ||
389 | printk("BOOT: Ignoring P-Cache force option.\n"); | ||
390 | break; | ||
391 | } | ||
392 | cheetah_pcache_forced_on = 1; | ||
393 | add_taint(TAINT_MACHINE_CHECK); | ||
394 | cheetah_enable_pcache(); | ||
395 | break; | ||
396 | |||
386 | default: | 397 | default: |
387 | printk("Unknown boot switch (-%c)\n", c); | 398 | printk("Unknown boot switch (-%c)\n", c); |
388 | break; | 399 | break; |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 6dff06a44e76..e5b9c7a27789 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -123,6 +123,9 @@ void __init smp_callin(void) | |||
123 | 123 | ||
124 | smp_setup_percpu_timer(); | 124 | smp_setup_percpu_timer(); |
125 | 125 | ||
126 | if (cheetah_pcache_forced_on) | ||
127 | cheetah_enable_pcache(); | ||
128 | |||
126 | local_irq_enable(); | 129 | local_irq_enable(); |
127 | 130 | ||
128 | calibrate_delay(); | 131 | calibrate_delay(); |
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c index 56b203a2af69..a9f4596d7c2b 100644 --- a/arch/sparc64/kernel/traps.c +++ b/arch/sparc64/kernel/traps.c | |||
@@ -421,6 +421,25 @@ asmlinkage void cee_log(unsigned long ce_status, | |||
421 | } | 421 | } |
422 | } | 422 | } |
423 | 423 | ||
424 | int cheetah_pcache_forced_on; | ||
425 | |||
426 | void cheetah_enable_pcache(void) | ||
427 | { | ||
428 | unsigned long dcr; | ||
429 | |||
430 | printk("CHEETAH: Enabling P-Cache on cpu %d.\n", | ||
431 | smp_processor_id()); | ||
432 | |||
433 | __asm__ __volatile__("ldxa [%%g0] %1, %0" | ||
434 | : "=r" (dcr) | ||
435 | : "i" (ASI_DCU_CONTROL_REG)); | ||
436 | dcr |= (DCU_PE | DCU_HPE | DCU_SPE | DCU_SL); | ||
437 | __asm__ __volatile__("stxa %0, [%%g0] %1\n\t" | ||
438 | "membar #Sync" | ||
439 | : /* no outputs */ | ||
440 | : "r" (dcr), "i" (ASI_DCU_CONTROL_REG)); | ||
441 | } | ||
442 | |||
424 | /* Cheetah error trap handling. */ | 443 | /* Cheetah error trap handling. */ |
425 | static unsigned long ecache_flush_physbase; | 444 | static unsigned long ecache_flush_physbase; |
426 | static unsigned long ecache_flush_linesize; | 445 | static unsigned long ecache_flush_linesize; |
diff --git a/drivers/scsi/sata_promise.c b/drivers/scsi/sata_promise.c index 19a13e3590f4..c4e9e0298122 100644 --- a/drivers/scsi/sata_promise.c +++ b/drivers/scsi/sata_promise.c | |||
@@ -151,6 +151,8 @@ static struct ata_port_info pdc_port_info[] = { | |||
151 | static struct pci_device_id pdc_ata_pci_tbl[] = { | 151 | static struct pci_device_id pdc_ata_pci_tbl[] = { |
152 | { PCI_VENDOR_ID_PROMISE, 0x3371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 152 | { PCI_VENDOR_ID_PROMISE, 0x3371, PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
153 | board_2037x }, | 153 | board_2037x }, |
154 | { PCI_VENDOR_ID_PROMISE, 0x3571, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
155 | board_2037x }, | ||
154 | { PCI_VENDOR_ID_PROMISE, 0x3373, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 156 | { PCI_VENDOR_ID_PROMISE, 0x3373, PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
155 | board_2037x }, | 157 | board_2037x }, |
156 | { PCI_VENDOR_ID_PROMISE, 0x3375, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 158 | { PCI_VENDOR_ID_PROMISE, 0x3375, PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
diff --git a/drivers/scsi/sata_sil.c b/drivers/scsi/sata_sil.c index f0489dc302a0..2b2ff48be396 100644 --- a/drivers/scsi/sata_sil.c +++ b/drivers/scsi/sata_sil.c | |||
@@ -82,6 +82,7 @@ static struct pci_device_id sil_pci_tbl[] = { | |||
82 | { 0x1095, 0x3114, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3114 }, | 82 | { 0x1095, 0x3114, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3114 }, |
83 | { 0x1002, 0x436e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, | 83 | { 0x1002, 0x436e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, |
84 | { 0x1002, 0x4379, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, | 84 | { 0x1002, 0x4379, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, |
85 | { 0x1002, 0x437a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, sil_3112 }, | ||
85 | { } /* terminate list */ | 86 | { } /* terminate list */ |
86 | }; | 87 | }; |
87 | 88 | ||
diff --git a/include/asm-sparc64/spitfire.h b/include/asm-sparc64/spitfire.h index ad78ce64d69e..9d7613eea812 100644 --- a/include/asm-sparc64/spitfire.h +++ b/include/asm-sparc64/spitfire.h | |||
@@ -48,6 +48,9 @@ enum ultra_tlb_layout { | |||
48 | 48 | ||
49 | extern enum ultra_tlb_layout tlb_type; | 49 | extern enum ultra_tlb_layout tlb_type; |
50 | 50 | ||
51 | extern int cheetah_pcache_forced_on; | ||
52 | extern void cheetah_enable_pcache(void); | ||
53 | |||
51 | #define sparc64_highest_locked_tlbent() \ | 54 | #define sparc64_highest_locked_tlbent() \ |
52 | (tlb_type == spitfire ? \ | 55 | (tlb_type == spitfire ? \ |
53 | SPITFIRE_HIGHEST_LOCKED_TLBENT : \ | 56 | SPITFIRE_HIGHEST_LOCKED_TLBENT : \ |