xref: /netbsd-src/sys/arch/sparc64/doc/TODO (revision 888272d5d97cc1ec78258d6f306feb1a402d629c)
1*888272d5Sandvar/* $NetBSD: TODO,v 1.48 2023/12/12 20:24:00 andvar Exp $ */
24c86caf4Spalle
34c86caf4SpalleThings to be done:
44c86caf4Spalle
5b40cec79Spallecommon:
6b40cec79Spalle- make %g6 point to curcpu
7b40cec79Spalle- make %g7 point to curlwp
838b5777dSpalle- change run-time checks for cpu type to function pointers
9b40cec79Spalle
104c86caf4Spallesun4u:
11326beb38Spalle- GENERIC.UP kernel hangs on v445 (missing interrupt?)
124c86caf4Spalle
134c86caf4Spallesun4v:
1477d7a13cSpalle - current status
15024904b7Spalle     T5 ldom with 2 VCPU and 4GB  (primary ldom is Solaris 11.4 SRU30)::
16db628f8aSpalle       - kernel boots from miniroot.fs via ldom disk (vdsk)
176fa9e42cSpalle	   - ldom virtual network interface (vnet) is working
186fa9e42cSpalle	     (verified by exiting sysinst and issuing a ping command)
19db628f8aSpalle	   - the sysinst tool starts, disk setup is working, network configuration is working,
20db628f8aSpalle	     but after the selected (minimal) sets have been downloaded and installed
2162e72946Sandvar		 the 'sh MAKEDEV all' command hangs.
2277d7a13cSpalle	 T2000 ldom with 8 VCPU and 4GB:
2383acb069Spalle	   - crashes in /sbin/init doing an access() call where %o0 is corrupted (zero)
24ef57d9efSpalle	   - device pci/ebus/com failes to enable interrupts (hv_intr_settarget() fails returning 6)
25024904b7Spalle	 S7 ldom with 8 VCPU and 16GB (primary ldom is Solaris 11.4 SRU33):
26024904b7Spalle	   - same status as T5 ldom
274c86caf4Spalle- 64-bit kernel support
284c86caf4Spalle- 32-bit kernel support
294ad85300Spalle- libkvm
304ad85300Spalle- ofwboot: tlb_init_sun4v() hardcodes number of slots to 64
3161ea5f5eSpalle- locore.s: sun4v_datatrap missing implementation for trap level 1
32b40cec79Spalle- check build without SUN4V defined
334f2510d8Spalle- replace relevant references to %ver with GET_MAXCWP
34ad88cf8bSpalle- pmap_mp_init(): sun4v missing handling
35ad88cf8bSpalle- replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS
36ad88cf8bSpalle- replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS
37f137bc47Spalle- sun4v tsb no need to lock... per cpu... anyway...
38f137bc47Spalle- ci_tsb_desc->td_ctxidx: -1 or 1?
395254ca51Spalle- MP support - currently bypassed in pmap_bootstrap() for sun4v
40fff54eb0Spalle- vpci.c/vpcivar.h: cleanup FIXMEs
4147ebd00cSskrll- interrupts not handled properly (com at ebus only...)
42a86d6c46Spalle- mpt(4) complains: mpt0: Phy 0: Link Status Unknown
43c7863d93Spalle- man pages for drivers imported from OpenBSD lke vpci, vbus, cbus, vdsk, ldc etc.
44*888272d5Sandvar- vdsk and ldc drivers: code marked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
4589d8ea40Spalle- vbus.c: handle prom_getprop() memory leaks
4662e72946Sandvar- locore.s: rft_user (sun4v specific manual fill) - seems to work, but is it good enough (compared to openbsds rft_user?
4755070ac1Spalle- openfirmware interface
4855070ac1Spalle    bounce handlng could need rework
4955070ac1Spalle      - only #if __arch64__ independent for SUN4V, as OF for all ultrasparcs is
5055070ac1Spalle        plain 32bit code too (and this #if only because the point below becomes
5155070ac1Spalle        always false otherwise)
5255070ac1Spalle      - only bounce if the address is >= 1UL<<32
5355070ac1Spalle      - perhaps apply the lock to OF calls in general, not only the bounce'd ones
5455070ac1Spalle        (in other words: let's protect the OF context with the lock, not
5555070ac1Spalle        only the bounce buffer contents).
5655070ac1Spalle	  - Are there any other bounce-worthy OF calls? If so, apply handling
5755070ac1Spalle	    to all of them now
5855070ac1Spalle      - consider method used by Solaris/OpenSolaris/Illumos (look for PROM_32BIT_ADDRS in
5955070ac1Spalle	    the Illumos codebase)
6016d83f21Spalle - platforms tested so far:
61aa7e1ebfSpalle -- qemu sun4v/niagara - reaches the point where the kernel needs to mount a root fs
6216d83f21Spalle -- T2000 - mmu fault somewhere
6316d83f21Spalle -- T5 - stickcmpr is not properly initialized ???
64