| @@ -1,28 +1,34 @@ | | | @@ -1,28 +1,34 @@ |
1 | /* $NetBSD: TODO,v 1.27 2018/10/05 19:53:47 palle Exp $ */ | | 1 | /* $NetBSD: TODO,v 1.28 2018/12/17 20:13:46 palle Exp $ */ |
2 | | | 2 | |
3 | Things to be done: | | 3 | Things to be done: |
4 | | | 4 | |
5 | common: | | 5 | common: |
6 | - make %g6 point to curcpu | | 6 | - make %g6 point to curcpu |
7 | - make %g7 point to curlwp | | 7 | - make %g7 point to curlwp |
8 | - change run-time checks for cpu type to function pointers | | 8 | - change run-time checks for cpu type to function pointers |
9 | | | 9 | |
10 | sun4u: | | 10 | sun4u: |
11 | - GENERIC.UP kernel hangs on v445 (missing interrupt?) | | 11 | - GENERIC.UP kernel hangs on v445 (missing interrupt?) |
12 | | | 12 | |
13 | sun4v: | | 13 | sun4v: |
14 | - current status: The kernel boots and starts the init process (pid 1) | | 14 | - current status: The kernel boots and starts the init process (pid 1) |
15 | which spawns /sbin/sh (pid 2). This is forked as a new /sbin/sh (pid 3) which crashes, probably due to MMU DPROT issues. | | 15 | which spawns /sbin/sh (pid 2). This is forked as a new /sbin/sh (pid 3) |
| | | 16 | which crashes, probably due to MMU DPROT issues. |
| | | 17 | Looks like the user process tries to write to the stack as part of a save |
| | | 18 | instruction since cansave is zero. This causes a DMMU PROT trap (0x6c) which |
| | | 19 | calls sun4v_tl0_dtsb_prot which calls sun4v_datatrap which calls TRAP_SETUP(). |
| | | 20 | This macro has code that does a save instruction, again to the user stack, |
| | | 21 | which again causes a MMU DPROT trap... |
16 | - 64-bit kernel support | | 22 | - 64-bit kernel support |
17 | - 32-bit kernel support | | 23 | - 32-bit kernel support |
18 | - libkvm | | 24 | - libkvm |
19 | - ofwboot: tlb_init_sun4v() hardcodes number of slots to 64 | | 25 | - ofwboot: tlb_init_sun4v() hardcodes number of slots to 64 |
20 | - locore.s: sun4v_datatrap missing implementation for trap level 1 | | 26 | - locore.s: sun4v_datatrap missing implementation for trap level 1 |
21 | - check build without SUN4V defined | | 27 | - check build without SUN4V defined |
22 | - replace relevant references to %ver with GET_MAXCWP | | 28 | - replace relevant references to %ver with GET_MAXCWP |
23 | - pmap_mp_init(): sun4v missing handling | | 29 | - pmap_mp_init(): sun4v missing handling |
24 | - replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS | | 30 | - replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS |
25 | - replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS | | 31 | - replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS |
26 | - sun4v tsb no need to lock... per cpu... anyway... | | 32 | - sun4v tsb no need to lock... per cpu... anyway... |
27 | - ci_tsb_desc->td_ctxidx: -1 or 1? | | 33 | - ci_tsb_desc->td_ctxidx: -1 or 1? |
28 | - MP support - currently bypassed in pmap_bootstrap() for sun4v | | 34 | - MP support - currently bypassed in pmap_bootstrap() for sun4v |