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