diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-15 19:08:49 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-15 19:08:49 -0500 |
| commit | 40787d0099676c9923e31fbdb90422d5c97cdcd5 (patch) | |
| tree | 029b96d58712e390878795e76b46e8598601daeb /arch/mips/kernel/vpe.c | |
| parent | 3c72f526dfe23f945ad034ae5a88649980d27a50 (diff) | |
| parent | 72e510654c814e2c5c9227e95ae02ea77e015ce4 (diff) | |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
[MIPS] N32 needs to use the compat version of sys_nfsservctl.
[MIPS] irq_cpu: use handle_percpu_irq handler to avoid dropping interrupts.
[MIPS] Sibyte: Fix name of clocksource.
[MIPS] SNI: s/achknowledge/acknowledge/
[MIPS] Makefile: Fix canonical system names
[MIPS] vpe: handle halting TCs in an errata safe way.
[MIPS] Sibyte: Stop timers before programming next even.
[MIPS] Sibyte: Increase minimum oneshot timer interval to two ticks.
[MIPS] Lasat: Fix overlap of interrupt number ranges.
[MIPS] SNI PCIT CPLUS: workaround for b0rked irq wiring of onboard PCI bus 1
[MIPS] Fix shadow register support.
[MIPS] Change get_cycles to always return 0.
[MIPS] Fix typo in R3000 TRACE_IRQFLAGS code
[MIPS] Sibyte: Replace use of removed IO_SPACE_BASE with IOADDR.
[MIPS] iounmap if in vr41xx_pciu_init() pci clock is over 33MHz
[MIPS] BCM1480: Remove duplicate acknowledge of timer interrupt.
[MIPS] Sibyte: pin timer interrupt to their cores.
[MIPS] Qemu: Add early printk, your friend in a cold night.
[MIPS] Convert reference to mem_map to pfn_to_page().
[MIPS] Sibyte: resurrect old cache hack.
Diffstat (limited to 'arch/mips/kernel/vpe.c')
| -rw-r--r-- | arch/mips/kernel/vpe.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index 436a64ff3989..38bd33fa2a23 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
| @@ -1003,6 +1003,7 @@ static void cleanup_tc(struct tc *tc) | |||
| 1003 | write_tc_c0_tcstatus(tmp); | 1003 | write_tc_c0_tcstatus(tmp); |
| 1004 | 1004 | ||
| 1005 | write_tc_c0_tchalt(TCHALT_H); | 1005 | write_tc_c0_tchalt(TCHALT_H); |
| 1006 | mips_ihb(); | ||
| 1006 | 1007 | ||
| 1007 | /* bind it to anything other than VPE1 */ | 1008 | /* bind it to anything other than VPE1 */ |
| 1008 | // write_tc_c0_tcbind(read_tc_c0_tcbind() & ~TCBIND_CURVPE); // | TCBIND_CURVPE | 1009 | // write_tc_c0_tcbind(read_tc_c0_tcbind() & ~TCBIND_CURVPE); // | TCBIND_CURVPE |
| @@ -1235,9 +1236,12 @@ int vpe_free(vpe_handle vpe) | |||
| 1235 | settc(t->index); | 1236 | settc(t->index); |
| 1236 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA); | 1237 | write_vpe_c0_vpeconf0(read_vpe_c0_vpeconf0() & ~VPECONF0_VPA); |
| 1237 | 1238 | ||
| 1238 | /* mark the TC unallocated and halt'ed */ | 1239 | /* halt the TC */ |
| 1239 | write_tc_c0_tcstatus(read_tc_c0_tcstatus() & ~TCSTATUS_A); | ||
| 1240 | write_tc_c0_tchalt(TCHALT_H); | 1240 | write_tc_c0_tchalt(TCHALT_H); |
| 1241 | mips_ihb(); | ||
| 1242 | |||
| 1243 | /* mark the TC unallocated */ | ||
| 1244 | write_tc_c0_tcstatus(read_tc_c0_tcstatus() & ~TCSTATUS_A); | ||
| 1241 | 1245 | ||
| 1242 | v->state = VPE_STATE_UNUSED; | 1246 | v->state = VPE_STATE_UNUSED; |
| 1243 | 1247 | ||
| @@ -1533,14 +1537,16 @@ static int __init vpe_module_init(void) | |||
| 1533 | t->pvpe = get_vpe(0); /* set the parent vpe */ | 1537 | t->pvpe = get_vpe(0); /* set the parent vpe */ |
| 1534 | } | 1538 | } |
| 1535 | 1539 | ||
| 1540 | /* halt the TC */ | ||
| 1541 | write_tc_c0_tchalt(TCHALT_H); | ||
| 1542 | mips_ihb(); | ||
| 1543 | |||
| 1536 | tmp = read_tc_c0_tcstatus(); | 1544 | tmp = read_tc_c0_tcstatus(); |
| 1537 | 1545 | ||
| 1538 | /* mark not activated and not dynamically allocatable */ | 1546 | /* mark not activated and not dynamically allocatable */ |
| 1539 | tmp &= ~(TCSTATUS_A | TCSTATUS_DA); | 1547 | tmp &= ~(TCSTATUS_A | TCSTATUS_DA); |
| 1540 | tmp |= TCSTATUS_IXMT; /* interrupt exempt */ | 1548 | tmp |= TCSTATUS_IXMT; /* interrupt exempt */ |
| 1541 | write_tc_c0_tcstatus(tmp); | 1549 | write_tc_c0_tcstatus(tmp); |
| 1542 | |||
| 1543 | write_tc_c0_tchalt(TCHALT_H); | ||
| 1544 | } | 1550 | } |
| 1545 | } | 1551 | } |
| 1546 | 1552 | ||
