TODO revision 1.40
11.40Spalle/* $NetBSD: TODO,v 1.40 2021/03/30 20:23:45 palle Exp $ */
21.1Spalle
31.1SpalleThings to be done:
41.1Spalle
51.5Spallecommon:
61.5Spalle- make %g6 point to curcpu
71.5Spalle- make %g7 point to curlwp
81.8Spalle- change run-time checks for cpu type to function pointers
91.5Spalle
101.1Spallesun4u:
111.10Spalle- GENERIC.UP kernel hangs on v445 (missing interrupt?)
121.1Spalle
131.1Spallesun4v:
141.34Spalle - current status
151.34Spalle     T5 ldom with 2 VCPU and 4GB:
161.38Spalle       - kernel boots from miniroot.fs via ldom fisk (vdsk)
171.38Spalle	   - ldom virtual network interface (vnet) is working
181.38Spalle	     (verified by exiting sysinst and issuing a ping command)
191.38Spalle	   - the sysinst tool starts, disk setup is working,
201.40Spalle	     but the process crashes when selecting network installation method (trap 0x34 ALIGN is received)
211.34Spalle	 T2000 ldom with 8 VCPU and 4GB:
221.40Spalle	   - crashes in /sbin/init doing an access() call where %o0 is corrupted (zero)
231.40Spalle	 S7 ldom with 8 VCPU and 16GB (primary ldom is Solaris 11.4 SRU30):
241.40Spalle	   - during autoconfiguration of vnet devices the call to hv_vintr_setenabled()
251.40Spalle	     returns error code 7 (EBADTRAP?)
261.37Spalle- idle handling - call hypervisor trap (openbsd code...??)	   
271.1Spalle- 64-bit kernel support
281.1Spalle- 32-bit kernel support
291.2Spalle- libkvm
301.2Spalle- ofwboot: tlb_init_sun4v() hardcodes number of slots to 64
311.17Spalle- locore.s: sun4v_datatrap missing implementation for trap level 1
321.5Spalle- check build without SUN4V defined
331.13Spalle- replace relevant references to %ver with GET_MAXCWP
341.6Spalle- pmap_mp_init(): sun4v missing handling
351.6Spalle- replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS
361.6Spalle- replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS
371.7Spalle- sun4v tsb no need to lock... per cpu... anyway...
381.7Spalle- ci_tsb_desc->td_ctxidx: -1 or 1?
391.14Spalle- MP support - currently bypassed in pmap_bootstrap() for sun4v
401.12Spalle- vpci.c/vpcivar.h: cleanup FIXMEs
411.30Sskrll- interrupts not handled properly (com at ebus only...)
421.18Spalle- mpt(4) complains: mpt0: Phy 0: Link Status Unknown
431.20Spalle- man pages for drivers imported from OpenBSD lke vpci, vbus, cbus, vdsk, ldc etc.
441.20Spalle- vdsk and ldc drivers: code maked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
451.22Spalle- vbus.c: handle prom_getprop() memory leaks
461.25Spalle- locore.s: rft_user (sun4v specific manaul fill) - seems to work, but is it good enough (compared to openbsds rft_user?
471.36Spalle- openfirmware interface
481.36Spalle    bounce handlng could need rework
491.36Spalle      - only #if __arch64__ independent for SUN4V, as OF for all ultrasparcs is
501.36Spalle        plain 32bit code too (and this #if only because the point below becomes
511.36Spalle        always false otherwise)
521.36Spalle      - only bounce if the address is >= 1UL<<32
531.36Spalle      - perhaps apply the lock to OF calls in general, not only the bounce'd ones
541.36Spalle        (in other words: let's protect the OF context with the lock, not
551.36Spalle        only the bounce buffer contents).
561.36Spalle	  - Are there any other bounce-worthy OF calls? If so, apply handling 
571.36Spalle	    to all of them now
581.36Spalle      - consider method used by Solaris/OpenSolaris/Illumos (look for PROM_32BIT_ADDRS in
591.36Spalle	    the Illumos codebase)
601.27Spalle - platforms tested so far:
611.33Spalle -- qemu sun4v/niagara - reaches the point where the kernel needs to mount a root fs
621.27Spalle -- T2000 - mmu fault somewhere
631.27Spalle -- T5 - stickcmpr is not properly initialized ???
64