TODO revision 1.17
11.17Stsutsui$NetBSD: TODO,v 1.17 2003/04/06 17:48:51 tsutsui Exp $
21.2Sthorpej
31.17StsutsuiTo do list (in some particular order)
41.17StsutsuiXXX some entries might be obsolete.
51.12Ssoda
61.17Stsutsui    o   Boot. Standalone boot program to load ELF kernels instead of
71.17Stsutsui	booting ECOFF kernels directly.
81.17Stsutsui	(maybe sgimips/stand would help, but annoying buggy ARC BIOS)
91.17Stsutsui
101.17Stsutsui    o	sysinst
111.17Stsutsui	maybe MD fdisk partitioning support is required to load files
121.17Stsutsui	from FAT partition on ARC BIOS prompt.
131.17Stsutsui
141.17Stsutsui    o	install notes
151.17Stsutsui
161.17Stsutsui
171.17Stsutsui    o	use MI driver
181.17Stsutsui
191.17Stsutsui	-   use MI ncr53c9x driver instead of home grown asc
201.17Stsutsui	    XXX patch is available. needs testers
211.17Stsutsui
221.17Stsutsui	-   make fd driver MI, and share it with other ports
231.17Stsutsui	    (contact christos about MI fd driver)
241.17Stsutsui
251.17Stsutsui	-   use MI bha driver instead of home grown btl
261.17Stsutsui	    XXX needs fixes of DESKstation support
271.14Ssoda
281.17Stsutsui    o	VXL framebuffer support (Magnum, RISCstation 2200)
291.14Ssoda
301.17Stsutsui    o	com_jazzio.c
311.17Stsutsui	-   clock handling clean up (obtain from ARC BIOS)
321.17Stsutsui	-   fifo disabling may be only needed on some Magnum?
331.1Sjonathan
341.17Stsutsui    o	remove pccons and switch to wscons completely
351.17Stsutsui	(XXX what's the problem to remove pccons?)
361.9Ssoda
371.17Stsutsui    o	AD1848 audio support
381.1Sjonathan
391.17Stsutsui    o	missing MI devices
401.17Stsutsui		ses?, vcoda, ...
411.1Sjonathan
421.4Ssoda
431.17Stsutsui    o	Xserver
441.4Ssoda
451.17Stsutsui	-   VXL		Magnum, RISCstation 2200
461.17Stsutsui	-   vga/S3	PICA, Image RISCstation - OpenBSD's?
471.17Stsutsui	-   vga/cirrus	RISCserver 2200, Express5800/240 R4400 EISA
481.17Stsutsui	-   vga/???	DESKstation Tyne, rPC44
491.17Stsutsui	-   TGA		RISCstation 2250, Express5800/230 R4400 PCI
501.4Ssoda
511.17Stsutsui    o   Find out why bitmap load to S3-928 flashes screen. (X server)
521.17Stsutsui	Know why (enable linear mode). Need S3 info.
531.5Ssoda
541.5Ssoda
551.15Ssoda    o	repair DESKstation support
561.11Ssoda	-   requires bounce buffer bus_dma for Tyne
571.17Stsutsui		XXX - too small bounce buffer size (128KB)
581.11Ssoda
591.15Ssoda    o	Olivetti M700 support
601.11Ssoda
611.17Stsutsui    o	NEC Express5800/230 R10000 PCI (NEC-JC95) support
621.17Stsutsui	(needs MI R10000 support)
631.11Ssoda
641.17Stsutsui    o	SNI RM200PCI/RM300/RM400/RM600 support
651.11Ssoda
661.11Ssoda
671.17Stsutsui    o	parse ARC BIOS configuration information and use it
681.11Ssoda
691.17Stsutsui    o	increase MAXPHYS to 64KB
701.17Stsutsui	(XXX why is it limited to 32KB?)
711.11Ssoda
721.17Stsutsui    o	fix kernel start address
731.17Stsutsui	(maybe requires bootloader support)
741.11Ssoda
751.17Stsutsui    o	allocate PICA_TL_BASE dynamically
761.5Ssoda
771.15Ssoda    o	remove inb/outb
781.8Snisimura
791.15Ssoda    o	remove UADDR
801.9Ssoda
811.17Stsutsui    o	fix mem_clusters[] usage.
821.17Stsutsui
831.17Stsutsui    o	intrcnt[] name cleanup, use MI evcnt(9)
841.17Stsutsui
851.17Stsutsui    o	test and merge soren's clean up about proc0.p_addr.
861.17Stsutsui
871.15Ssoda    o	redesign interrupt handler framework.
881.15Ssoda	i/o bus devices should have sane IPL, but currently doesn't.
891.13Ssoda
901.15Ssoda	also, current MIPS interrupt handler has overblocking and
911.15Ssoda	other problems as follows:
921.9Ssoda
931.9Ssoda	-   SR_INT_IE should be enabled before calling hardclock().
941.9Ssoda	    Since this is not done currently, spllowersoftclock()
951.9Ssoda	    on hardclock() doesn't have effect, and softclock() is
961.9Ssoda	    handled with all interrupt disabled in this case.
971.9Ssoda		-> overblocking, possibly causes missing hardclock()
981.9Ssoda
991.9Ssoda	-   MIPS3_CLKF_BASEPRI() doesn't work correctly,
1001.9Ssoda	    when MIPS_INT_MASK_5 (== MIPS_INT_MASK_CLOCK) is disabled.
1011.9Ssoda		-> micro optimization on hardclock() doesn't work.
1021.9Ssoda		   but currently this may make hardclock() latency better
1031.9Ssoda		   due to above SR_INT_IE problem.
1041.9Ssoda	    s/MIPS_INT_MASK/MIPS3_INT_MASK/ makes this work, although tricky.
1051.9Ssoda
1061.9Ssoda	-   if (ipending & INT_MASK_REAL_DEV) == 0,
1071.9Ssoda	    softnet() and softclock() are handled with all interrupt disabled.
1081.9Ssoda		-> overblocking, possibly causes missing hardclock()
1091.9Ssoda
1101.9Ssoda	-   softclock() is handled with softnet() disabled.
1111.9Ssoda		-> slightly overblocking
1121.9Ssoda
1131.9Ssoda	-   `netisr' handling in netintr() implies potential race condition.
1141.15Ssoda	    The access to `netisr' should be protected by splnet().
1151.15Ssoda	    Currently this is not real problem due to above overblocking.
1161.9Ssoda
1171.9Ssoda	    `ssir' handling on many mips ports has same problem.
1181.9Ssoda	    It should be protected by splnet() or splserial() or splhigh()
1191.9Ssoda	    (depends on the highest interrupt level which sets `ssir').
1201.9Ssoda	    Since `ssir' is accessed not only by setsoftnet() but also
1211.9Ssoda	    by setsoft(), setsoftnet() should protect `ssir' by splserial()
1221.9Ssoda	    or something. (i.e. priority level which setsoft() will be called)
1231.9Ssoda	    Probably, it is better to split `ssir' variable for each
1241.9Ssoda	    priority level.
1251.15Ssoda	    Also, _clearsoftintr() should be called before `ssir' access.
1261.9Ssoda	    currently this is not real problem due to above overblocking.
1271.9Ssoda
1281.10Ssoda	-   INT_MASK_REAL_DEV should be removed
1291.10Ssoda
1301.11Ssoda	-   make CLKF_INTR() work.
1311.11Ssoda
1321.15Ssoda	-   generic software interrupt
1331.17Stsutsui	    (see algor, mipsco, pmax etc.)
1341.15Ssoda
1351.11Ssoda	-   major rework, possibly by software emulated spl.
1361.11Ssoda		splserial()/splsoftserial()
1371.11Ssoda
1381.9Ssoda    o	it is better to always disable MIPS_INT_MASK_CLOCK.
1391.9Ssoda	those are the points which should be fixed:
1401.9Ssoda	mips_idle: li t0, (MIPS_INT_MASK | MIPS_SR_INT_IE)
1411.9Ssoda	machdep.c: curpcb->pcb_context[11] = MIPS_INT_MASK | MIPS_SR_INT_IE;
1421.9Ssoda	spl0()
1431.9Ssoda	splnone()
1441.10Ssoda
1451.10Ssoda	-   MIPS_INT_MASK_CLOCK should be removed in someway
1461.1Sjonathan
1471.17Stsutsui    o	XXX at least 2000/06/07 version is already quite unstable
1481.17Stsutsui	on PICA and NEC Image RISCstation. (but almost OK on Magnum)
1491.17Stsutsui	Userland commands dumps	core randomly.
1501.17Stsutsui	This version is before _MIPS_PADDR_T_64BIT changes
1511.17Stsutsui	and MIPS3_TLB_WIRED_UPAGES changes.	
1521.1Sjonathan
1531.17Stsutsui	"vm_page_zero_enable = FALSE" makes this problem disappeared.
1541.17Stsutsui	(vm_page_zero_enable = FALSE by default on all archs w/ UBC, now)
1551.11Ssoda
1561.17Stsutsui	currently, page zero in the idle loop is also disabled on
1571.17Stsutsui	untested platforms like DESKstation rPC44/Tyne and SNI for safety.
1581.11Ssoda
1591.17Stsutsui	    XXX what's the current status of uvm_pageidlezero()?
1601.11Ssoda
1611.4Ssoda
1621.17Stsutsui    o	resolve "XXX"
1631.5Ssoda
1641.4Ssoda
1651.17Stsutsui(following entries might be MI MIPS items)
1661.11Ssoda
1671.17Stsutsui    o	Move the RO and WIRED attribute from the pte to the pv table.
1681.17Stsutsui	This saves four instructions in the tlb miss handler.
1691.15Ssoda
1701.17Stsutsui    o   Can we have 32 double registers?
1711.15Ssoda
1721.17Stsutsui    o	64bit kernel/userland
1731.15Ssoda
1741.17Stsutsui    o	fix implementation of DELAY(), clean up clock implementation
1751.4Ssoda
1761.17Stsutsui    o	omit __SWAP_BROKEN in <mips/types.h>
1771.11Ssoda
1781.11Ssoda    o	clean up ALEAF/NLEAF/NON_LEAF/NNON_LEAF in userland.
1791.1Sjonathan
1801.1SjonathanLots of other things.....
181