1$NetBSD: TODO,v 1.16 2001/08/28 15:17:47 tsutsui Exp $ 2 3To do list (not in any particular order). 4 5 o XXX at least 2000/06/07 version is already quite unstable 6 on PICA and NEC Image RISCstation. (but almost OK on Magnum) 7 Userland commands dumps core randomly. 8 This version is before _MIPS_PADDR_T_64BIT changes 9 and MIPS3_TLB_WIRED_UPAGES changes. 10 11 "vm_page_zero_enable = FALSE" makes this problem disappeared. 12 (vm_page_zero_enable = FALSE by default on all archs w/ UBC, now) 13 14 currently, page zero in the idle loop is also disabled on 15 untested platforms like DESKstation rPC44/Tyne and SNI for safety. 16 17 o XXX sudden hang up in a few minutes or dozens of minutes. 18 2000 Mar 17 -current is OK. Mar 29 is NG. 19 20 o Move the RO and WIRED attribute from the pte to the pv table. 21 This saves four instructions in the tlb miss handler. 22 23 o Boot. Standalone boot program instead of booting the kernel directly. 24 25 o Find out why bitmap load to S3-928 flashes screen. (X server) 26 Know why (enable linear mode). Need S3 info. 27 28 o Can we have 32 double registers? 29 30 o 64bit kernel/userland 31 32 o NEC RISCstation 2200 support 33 34 - VXL framebuffer 35 - VGA framebuffer or character generator 36 - oosiop 37 38 o repair DESKstation support 39 40 - requires bounce buffer bus_dma for Tyne 41 XXX - too small bounce buffer size 42 43 o Olivetti M700 support 44 45 o NEC Express 5800/230 R10000 version support 46 47 o SNI RM200PCI support 48 49 o sysinst 50 51 o install notes 52 53 o www: diskless HOW-TO port-arc specific part. 54 55 o Xserver 56 57 - VXL magnum, some RISCserver 2200 58 - vga/S3 pica, Image RISCstation - OpenBSD's? 59 - vga/cirrus some RISCserver 2200 60 - vga/??? DESKstation Tyne, rPC44 61 - TGA RISCserver 2250 62 63 o X clients 64 probably pmax binary is good enough. 65 66 o remove inb/outb 67 68 o remove UADDR 69 70 o redesign interrupt handler framework. 71 i/o bus devices should have sane IPL, but currently doesn't. 72 73 also, current MIPS interrupt handler has overblocking and 74 other problems as follows: 75 76 - SR_INT_IE should be enabled before calling hardclock(). 77 Since this is not done currently, spllowersoftclock() 78 on hardclock() doesn't have effect, and softclock() is 79 handled with all interrupt disabled in this case. 80 -> overblocking, possibly causes missing hardclock() 81 82 - MIPS3_CLKF_BASEPRI() doesn't work correctly, 83 when MIPS_INT_MASK_5 (== MIPS_INT_MASK_CLOCK) is disabled. 84 -> micro optimization on hardclock() doesn't work. 85 but currently this may make hardclock() latency better 86 due to above SR_INT_IE problem. 87 s/MIPS_INT_MASK/MIPS3_INT_MASK/ makes this work, although tricky. 88 89 - if (ipending & INT_MASK_REAL_DEV) == 0, 90 softnet() and softclock() are handled with all interrupt disabled. 91 -> overblocking, possibly causes missing hardclock() 92 93 - softclock() is handled with softnet() disabled. 94 -> slightly overblocking 95 96 - `netisr' handling in netintr() implies potential race condition. 97 The access to `netisr' should be protected by splnet(). 98 Currently this is not real problem due to above overblocking. 99 100 `ssir' handling on many mips ports has same problem. 101 It should be protected by splnet() or splserial() or splhigh() 102 (depends on the highest interrupt level which sets `ssir'). 103 Since `ssir' is accessed not only by setsoftnet() but also 104 by setsoft(), setsoftnet() should protect `ssir' by splserial() 105 or something. (i.e. priority level which setsoft() will be called) 106 Probably, it is better to split `ssir' variable for each 107 priority level. 108 Also, _clearsoftintr() should be called before `ssir' access. 109 currently this is not real problem due to above overblocking. 110 111 - INT_MASK_REAL_DEV should be removed 112 113 - make CLKF_INTR() work. 114 115 - generic software interrupt 116 117 - major rework, possibly by software emulated spl. 118 splserial()/splsoftserial() 119 120 o it is better to always disable MIPS_INT_MASK_CLOCK. 121 those are the points which should be fixed: 122 mips_idle: li t0, (MIPS_INT_MASK | MIPS_SR_INT_IE) 123 machdep.c: curpcb->pcb_context[11] = MIPS_INT_MASK | MIPS_SR_INT_IE; 124 spl0() 125 splnone() 126 127 - MIPS_INT_MASK_CLOCK should be removed in someway 128 129 o fix kernel start address 130 131 o allocate PICA_TL_BASE dynamically 132 133 o fix mem_clusters[] usage. 134 135 o test and merge soren's clean up about proc0.p_addr. 136 137 o parse ARC BIOS configuration information and use it 138 139 o omit __SWAP_BROKEN in <mips/types.h> 140 141 o fix implementation of DELAY(), clean up clock implementation 142 143 o increase MAXPHYS to 64KB 144 145 o wscons / VXL framebuffer 146 147 o wscons / VGA framebuffer (merge bjy's driver) 148 149 o wscons / VGA character generator (fix initialization on RISCserver) 150 151 o asc.c scsi clock/NCR53CF94 handling clean up 152 153 o com_jazzio.c 154 155 - clock handling clean up (obtain from ARC firmware) 156 - fifo disabling may be only needed on some Magnum? 157 158 o intrcnt[] name cleanup, use evcnt 159 160 o oosiop (NCR 53c700 driver) by Urata-san 161 for NEC RISCserver 2200, RISCstation 2200 and RISCstation 2250. 162 163 o audio driver 164 165 o use MI driver 166 167 - use MI ncr53c9x driver instead of home grown asc 168 169 - use MI bha driver instead of home grown btl 170 171 - make fd driver MI, and share it with i386 172 (contact christos about MI fd driver) 173 174 - make pccons MI, and share it with i386, 175 or simply eliminate pccons 176 177 o LKM support on MIPS 178 179 o and missing MI devices 180 ses?, vcoda, ... 181 182 o bus_dmamap_sync: Hit_Invalidate and Hit_Write_Back cache operation 183 184 o clean up ALEAF/NLEAF/NON_LEAF/NNON_LEAF in userland. 185 186 o resolve "XXX" 187 188Lots of other things..... 189