TODO revision 1.36
11.36Spalle/* $NetBSD: TODO,v 1.36 2021/02/27 18:29:38 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.34Spalle       The kernel boots and starts userland when booting miniroot.fs.
171.35Spalle       The sysinst tool starts properly and is functional.
181.35Spalle	   Installation is not possible, since no driver currently exists
191.35Spalle	   for the ldom network interfaces, but openbsd vnet and vsw drivers are
201.35Spalle	   possible to integrate and this work is progressing.
211.34Spalle	   OpenBoot (properly trashed registers).
221.34Spalle	 T2000 ldom with 8 VCPU and 4GB:
231.34Spalle	   On this platform it crashes in /sbin/init doing an access() call where %o0 is corrupted (zero)
241.1Spalle- 64-bit kernel support
251.1Spalle- 32-bit kernel support
261.2Spalle- libkvm
271.2Spalle- ofwboot: tlb_init_sun4v() hardcodes number of slots to 64
281.17Spalle- locore.s: sun4v_datatrap missing implementation for trap level 1
291.5Spalle- check build without SUN4V defined
301.13Spalle- replace relevant references to %ver with GET_MAXCWP
311.6Spalle- pmap_mp_init(): sun4v missing handling
321.6Spalle- replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS
331.6Spalle- replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS
341.7Spalle- sun4v tsb no need to lock... per cpu... anyway...
351.7Spalle- ci_tsb_desc->td_ctxidx: -1 or 1?
361.14Spalle- MP support - currently bypassed in pmap_bootstrap() for sun4v
371.12Spalle- vpci.c/vpcivar.h: cleanup FIXMEs
381.30Sskrll- interrupts not handled properly (com at ebus only...)
391.18Spalle- mpt(4) complains: mpt0: Phy 0: Link Status Unknown
401.20Spalle- man pages for drivers imported from OpenBSD lke vpci, vbus, cbus, vdsk, ldc etc.
411.20Spalle- vdsk and ldc drivers: code maked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
421.22Spalle- vbus.c: handle prom_getprop() memory leaks
431.25Spalle- locore.s: rft_user (sun4v specific manaul fill) - seems to work, but is it good enough (compared to openbsds rft_user?
441.36Spalle- openfirmware interface
451.36Spalle    bounce handlng could need rework
461.36Spalle      - only #if __arch64__ independent for SUN4V, as OF for all ultrasparcs is
471.36Spalle        plain 32bit code too (and this #if only because the point below becomes
481.36Spalle        always false otherwise)
491.36Spalle      - only bounce if the address is >= 1UL<<32
501.36Spalle      - perhaps apply the lock to OF calls in general, not only the bounce'd ones
511.36Spalle        (in other words: let's protect the OF context with the lock, not
521.36Spalle        only the bounce buffer contents).
531.36Spalle	  - Are there any other bounce-worthy OF calls? If so, apply handling 
541.36Spalle	    to all of them now
551.36Spalle      - consider method used by Solaris/OpenSolaris/Illumos (look for PROM_32BIT_ADDRS in
561.36Spalle	    the Illumos codebase)
571.27Spalle - platforms tested so far:
581.33Spalle -- qemu sun4v/niagara - reaches the point where the kernel needs to mount a root fs
591.27Spalle -- T2000 - mmu fault somewhere
601.27Spalle -- T5 - stickcmpr is not properly initialized ???
61