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