Home | History | Annotate | Line # | Download | only in doc
TODO revision 1.32
      1  1.32  palle /* $NetBSD: TODO,v 1.32 2021/01/31 19:08:05 palle Exp $ */
      2   1.1  palle 
      3   1.1  palle Things to be done:
      4   1.1  palle 
      5   1.5  palle common:
      6   1.5  palle - make %g6 point to curcpu
      7   1.5  palle - make %g7 point to curlwp
      8   1.8  palle - change run-time checks for cpu type to function pointers
      9   1.5  palle 
     10   1.1  palle sun4u:
     11  1.10  palle - GENERIC.UP kernel hangs on v445 (missing interrupt?)
     12   1.1  palle 
     13   1.1  palle sun4v:
     14  1.32  palle  - current status:
     15  1.32  palle      The kernel boots and starts userland.
     16  1.32  palle 	 During the execution of the sysinst process, a sub-process crashes.
     17  1.32  palle 	 The crash happens when a call to sysctl from /bin/sh causes a mmu trap.
     18  1.32  palle 	 Part of the TRAP_SETUP() call in sun4v_datatrap issues a 'save' instruction.
     19  1.32  palle 	 Since %cansave is 0 (%canrestore is 6 and %otherwin is 0) a SPILL trap is generated.
     20  1.32  palle 	 The current code ends up in the pcbspill codepath (which is based on code from openbsd).
     21  1.32  palle 	 This code assumes that it is the register window in the OTHERWIN window that must be spilled
     22  1.32  palle 	 to the pcb.
     23  1.32  palle 	 Since %otherwin in this scenario actually is zero, we end up putting incorrect register
     24  1.32  palle 	 window values to the pcb.
     25  1.32  palle 	 So - this code should not save data to the pcb when %otherwin is 0 - it should spill the
     26  1.32  palle 	 values to the stack of the user process. Special care should be taken here, since we
     27  1.32  palle 	 may end up with a mmu fault again if the stack address is not present in the mmu, so
     28  1.32  palle 	 perhaps spilling to the physical address of the stack will work.
     29  1.32  palle 	 Time will show if this is correct...
     30   1.1  palle - 64-bit kernel support
     31   1.1  palle - 32-bit kernel support
     32   1.2  palle - libkvm
     33   1.2  palle - ofwboot: tlb_init_sun4v() hardcodes number of slots to 64
     34  1.17  palle - locore.s: sun4v_datatrap missing implementation for trap level 1
     35   1.5  palle - check build without SUN4V defined
     36  1.13  palle - replace relevant references to %ver with GET_MAXCWP
     37   1.6  palle - pmap_mp_init(): sun4v missing handling
     38   1.6  palle - replace constructs like "wrpr %g0, PSTATE_KERN, %pstate" with NORMAL_GLOBALS
     39   1.6  palle - replace constructs line "wrpr %g0, PSTATE_INTR, %pstate" with ALTERNATE_GOBALS
     40   1.7  palle - sun4v tsb no need to lock... per cpu... anyway...
     41   1.7  palle - ci_tsb_desc->td_ctxidx: -1 or 1?
     42  1.14  palle - MP support - currently bypassed in pmap_bootstrap() for sun4v
     43  1.12  palle - vpci.c/vpcivar.h: cleanup FIXMEs
     44  1.30  skrll - interrupts not handled properly (com at ebus only...)
     45  1.18  palle - mpt(4) complains: mpt0: Phy 0: Link Status Unknown
     46  1.20  palle - man pages for drivers imported from OpenBSD lke vpci, vbus, cbus, vdsk, ldc etc.
     47  1.20  palle - vdsk and ldc drivers: code maked with OPENBSD_BUSDMA - make the bus_dma stuff work properly
     48  1.22  palle - vbus.c: handle prom_getprop() memory leaks
     49  1.25  palle - locore.s: rft_user (sun4v specific manaul fill) - seems to work, but is it good enough (compared to openbsds rft_user?
     50  1.27  palle  - platforms tested so far:
     51  1.27  palle  -- qemu sun4v/niagara - crash in init process relaed to fork (stack?)
     52  1.27  palle  -- T2000 - mmu fault somewhere
     53  1.27  palle  -- T5 - stickcmpr is not properly initialized ???
     54