TODO revision 1.33 1 1.33 palle /* $NetBSD: TODO,v 1.33 2021/02/14 20:30:31 palle Exp $ */
2 1.1 palle
3 1.1 palle Things to be done:
4 1.1 palle
5 1.5 palle common:
6 1.5 palle - make %g6 point to curcpu
7 1.5 palle - make %g7 point to curlwp
8 1.8 palle - change run-time checks for cpu type to function pointers
9 1.5 palle
10 1.1 palle sun4u:
11 1.10 palle - GENERIC.UP kernel hangs on v445 (missing interrupt?)
12 1.1 palle
13 1.1 palle sun4v:
14 1.33 palle - current status (verified on T5 ldom with 2 VCPU and 4GB):
15 1.32 palle The kernel boots and starts userland.
16 1.32 palle During the execution of the sysinst process, a sub-process crashes.
17 1.32 palle The crash happens when a call to sysctl from /bin/sh causes a mmu trap.
18 1.32 palle Part of the TRAP_SETUP() call in sun4v_datatrap issues a 'save' instruction.
19 1.32 palle Since %cansave is 0 (%canrestore is 6 and %otherwin is 0) a SPILL trap is generated.
20 1.32 palle The current code ends up in the pcbspill codepath (which is based on code from openbsd).
21 1.32 palle This code assumes that it is the register window in the OTHERWIN window that must be spilled
22 1.32 palle to the pcb.
23 1.32 palle Since %otherwin in this scenario actually is zero, we end up putting incorrect register
24 1.32 palle window values to the pcb.
25 1.32 palle So - this code should not save data to the pcb when %otherwin is 0 - it should spill the
26 1.32 palle values to the stack of the user process. Special care should be taken here, since we
27 1.32 palle may end up with a mmu fault again if the stack address is not present in the mmu, so
28 1.32 palle perhaps spilling to the physical address of the stack will work.
29 1.32 palle Time will show if this is correct...
30 1.33 palle Status on T2000 ldom with 8 VCPU and 4GB is that is crashes in /sbin/init doing an access() call where %o0 is corrupted (zero)
31 1.1 palle - 64-bit kernel support
32 1.1 palle - 32-bit kernel support
33 1.2 palle - libkvm
34 1.2 palle - ofwboot: tlb_init_sun4v() hardcodes number of slots to 64
35 1.17 palle - locore.s: sun4v_datatrap missing implementation for trap level 1
36 1.5 palle - check build without SUN4V defined
37 1.13 palle - replace relevant references to %ver with GET_MAXCWP
38 1.6 palle - pmap_mp_init(): sun4v missing handling
39 1.6 palle - replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS
40 1.6 palle - replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS
41 1.7 palle - sun4v tsb no need to lock... per cpu... anyway...
42 1.7 palle - ci_tsb_desc->td_ctxidx: -1 or 1?
43 1.14 palle - MP support - currently bypassed in pmap_bootstrap() for sun4v
44 1.12 palle - vpci.c/vpcivar.h: cleanup FIXMEs
45 1.30 skrll - interrupts not handled properly (com at ebus only...)
46 1.18 palle - mpt(4) complains: mpt0: Phy 0: Link Status Unknown
47 1.20 palle - man pages for drivers imported from OpenBSD lke vpci, vbus, cbus, vdsk, ldc etc.
48 1.20 palle - vdsk and ldc drivers: code maked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
49 1.22 palle - vbus.c: handle prom_getprop() memory leaks
50 1.25 palle - locore.s: rft_user (sun4v specific manaul fill) - seems to work, but is it good enough (compared to openbsds rft_user?
51 1.27 palle - platforms tested so far:
52 1.33 palle -- qemu sun4v/niagara - reaches the point where the kernel needs to mount a root fs
53 1.27 palle -- T2000 - mmu fault somewhere
54 1.27 palle -- T5 - stickcmpr is not properly initialized ???
55