TODO revision 1.9
11.9Ssoda$NetBSD: TODO,v 1.9 2000/04/15 21:57:37 soda Exp $
21.2Sthorpej
31.1SjonathanTo do list (not in any particular order).
41.1Sjonathan
51.9Ssoda    o	XXX sudden hang up in a few minutes or dozens of minutes.
61.9Ssoda	2000 Mar 17 -current is OK. Mar 29 is NG.
71.9Ssoda
81.1Sjonathan    o	Move the RO and WIRED attribute from the pte to the pv table.
91.1Sjonathan	This saves four instructions in the tlb miss handler.
101.1Sjonathan
111.1Sjonathan    o   Boot. Standalone boot program instead of booting the kernel directly?
121.1Sjonathan
131.5Ssoda    o   Find out why bitmap load to S3-928 flashes screen. (X server)
141.4Ssoda	Know why (enable linear mode). Need S3 info.
151.4Ssoda
161.4Ssoda    o   Can we have 32 double registers?
171.4Ssoda
181.4Ssoda    o	64bit kernel/userland
191.4Ssoda
201.5Ssoda    o	repair DeskStation and Algor support
211.5Ssoda
221.5Ssoda	-   64bit device physical address space for Tyne (see OpenBSD pmap.c)
231.5Ssoda
241.5Ssoda	-   requires bus_dma
251.5Ssoda
261.4Ssoda    o	source code structure is quite obsolete,
271.4Ssoda	general clean up is needed as nisimura-san suggested.
281.4Ssoda	especially:
291.4Ssoda
301.4Ssoda 	-   introduce struct platform and remove ugly ``switch (cputype)''
311.4Ssoda	    in many places.
321.4Ssoda
331.7Snisimura	-   redesign interrupt handler framework to be flexible for
341.7Snisimura	    possible variations; must be sane and useful for R4030/R4230
351.7Snisimura	    'local' devices and any combinations with ISA/EISA/PCI
361.7Snisimura
371.7Snisimura	-   implement and use bus_dma, keeping in mind TLB assisted VDMA
381.7Snisimura	    that R4030/R4230 chip provides
391.1Sjonathan
401.4Ssoda	-   clean up bus_space implementation, remove inb/outb
411.8Snisimura
421.8Snisimura	-   try to interporate HZ; may be possible for R4030/R4230 system
431.8Snisimura	    or 'hardclock() by R4000' system.  Clock resolution of 100Hz
441.8Snisimura	    without any interporation is substandard
451.9Ssoda
461.9Ssoda    o	overblocking on interrupt handler, and related problems
471.9Ssoda
481.9Ssoda	-   SR_INT_IE should be enabled before calling hardclock().
491.9Ssoda	    Since this is not done currently, spllowersoftclock()
501.9Ssoda	    on hardclock() doesn't have effect, and softclock() is
511.9Ssoda	    handled with all interrupt disabled in this case.
521.9Ssoda		-> overblocking, possibly causes missing hardclock()
531.9Ssoda
541.9Ssoda	-   MIPS3_CLKF_BASEPRI() doesn't work correctly,
551.9Ssoda	    when MIPS_INT_MASK_5 (== MIPS_INT_MASK_CLOCK) is disabled.
561.9Ssoda		-> micro optimization on hardclock() doesn't work.
571.9Ssoda		   but currently this may make hardclock() latency better
581.9Ssoda		   due to above SR_INT_IE problem.
591.9Ssoda	    s/MIPS_INT_MASK/MIPS3_INT_MASK/ makes this work, although tricky.
601.9Ssoda
611.9Ssoda	-   if (ipending & INT_MASK_REAL_DEV) == 0,
621.9Ssoda	    softnet() and softclock() are handled with all interrupt disabled.
631.9Ssoda		-> overblocking, possibly causes missing hardclock()
641.9Ssoda
651.9Ssoda	-   softclock() is handled with softnet() disabled.
661.9Ssoda		-> slightly overblocking
671.9Ssoda
681.9Ssoda	-   `netisr' handling in netintr() implies potential race condition.
691.9Ssoda	    `netisr' access should be protected by splnet().
701.9Ssoda	    currently this is not real problem due to above overblocking.
711.9Ssoda
721.9Ssoda	    `ssir' handling on many mips ports has same problem.
731.9Ssoda	    It should be protected by splnet() or splserial() or splhigh()
741.9Ssoda	    (depends on the highest interrupt level which sets `ssir').
751.9Ssoda	    Since `ssir' is accessed not only by setsoftnet() but also
761.9Ssoda	    by setsoft(), setsoftnet() should protect `ssir' by splserial()
771.9Ssoda	    or something. (i.e. priority level which setsoft() will be called)
781.9Ssoda	    Probably, it is better to split `ssir' variable for each
791.9Ssoda	    priority level.
801.9Ssoda	    also, _clearsoftintr() should be called before `ssir' access.
811.9Ssoda	    currently this is not real problem due to above overblocking.
821.9Ssoda
831.9Ssoda    o	it is better to always disable MIPS_INT_MASK_CLOCK.
841.9Ssoda	those are the points which should be fixed:
851.9Ssoda	mips_idle: li t0, (MIPS_INT_MASK | MIPS_SR_INT_IE)
861.9Ssoda	machdep.c: curpcb->pcb_context[11] = MIPS_INT_MASK | MIPS_SR_INT_IE;
871.9Ssoda	spl0()
881.9Ssoda	splnone()
891.1Sjonathan
901.4Ssoda    o	fix kernel start address
911.1Sjonathan
921.4Ssoda    o	merge new wscons
931.1Sjonathan
941.4Ssoda    o	parse ARC BIOS configuration information and use it
951.4Ssoda
961.5Ssoda    o	omit __BROKEN_CONFIG_UNIT_USAGE
971.5Ssoda
981.5Ssoda    o	omit __SWAP_BROKEN in <mips/types.h>
991.5Ssoda
1001.4Ssoda    o	fix implementation of DELAY(), clean up clock implementation
1011.4Ssoda
1021.5Ssoda    o	asc.c scsi clock/NCR53CF94 handling clean up
1031.5Ssoda
1041.4Ssoda    o	if_sn.c ether address handling clean up
1051.4Ssoda
1061.5Ssoda    o	com_lbus.c clock handling clean up
1071.5Ssoda
1081.5Ssoda    o	implement NCR 53c700(?) driver for NEC RISCserver 2200
1091.5Ssoda	based on amiga siop driver?
1101.5Ssoda
1111.6Ssoda    o	audio driver
1121.6Ssoda
1131.4Ssoda    o	use MI driver
1141.4Ssoda
1151.4Ssoda	-   use MI ncr53c9x driver instead of home grown asc
1161.4Ssoda
1171.4Ssoda	-   use MI bha driver instead of home grown btl
1181.4Ssoda
1191.4Ssoda	-   make sonic driver MI, and share it with mac68k, newsmips/apbus
1201.4Ssoda
1211.4Ssoda	-   make fd driver MI, and share it with i386
1221.4Ssoda	    (contact christos about MI fd driver)
1231.1Sjonathan
1241.4Ssoda	-   make pccons MI, and share it with i386,
1251.4Ssoda	    or simply eliminate pccons
1261.5Ssoda
1271.6Ssoda	-   LKM
1281.5Ssoda
1291.6Ssoda    o	ARC boot device name -> NetBSD root device conversion
1301.5Ssoda
1311.6Ssoda    o	and missing MI devices
1321.6Ssoda		ses?, lkm, vcoda, ...
1331.5Ssoda
1341.6Ssoda    o	way to specify serial console
1351.5Ssoda
1361.5Ssoda    o resolve "XXX"
1371.1Sjonathan
1381.1SjonathanLots of other things.....
139