11.49Sandvar/* $NetBSD: TODO,v 1.49 2025/09/07 21:31:21 andvar 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.44Spalle     T5 ldom with 2 VCPU and 4GB  (primary ldom is Solaris 11.4 SRU30)::
161.45Spalle       - kernel boots from miniroot.fs via ldom disk (vdsk)
171.38Spalle	   - ldom virtual network interface (vnet) is working
181.38Spalle	     (verified by exiting sysinst and issuing a ping command)
191.45Spalle	   - the sysinst tool starts, disk setup is working, network configuration is working,
201.45Spalle	     but after the selected (minimal) sets have been downloaded and installed
211.46Sandvar		 the 'sh MAKEDEV all' command hangs.
221.34Spalle	 T2000 ldom with 8 VCPU and 4GB:
231.40Spalle	   - crashes in /sbin/init doing an access() call where %o0 is corrupted (zero)
241.47Spalle	   - device pci/ebus/com failes to enable interrupts (hv_intr_settarget() fails returning 6)
251.44Spalle	 S7 ldom with 8 VCPU and 16GB (primary ldom is Solaris 11.4 SRU33):
261.44Spalle	   - same status as T5 ldom
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.48Sandvar- vdsk and ldc drivers: code marked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
451.22Spalle- vbus.c: handle prom_getprop() memory leaks
461.46Sandvar- locore.s: rft_user (sun4v specific manual fill) - seems to work, but is it good enough (compared to openbsds rft_user?
471.36Spalle- openfirmware interface
481.49Sandvar    bounce handling 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