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