Kernel
Signals/Error Handling
Arithmetic Fault Handling
- When we get an arithmetic fault of types 8,9,10. The PC is backed up to point
at the instruction causing the fault. If we just send a SIGFPE and return,
and there is no SIGFPE hander, the program goes into an infinite loop with
the arith_fault handler, and the faulting instr. Should we a) try and
advance PC, or b) send it a signal that kills it?
- Arithmetic needs attention to do a proper job on SIGFPE – returning info etc...
Machine check
Implement Machine check handling (arch/vax/kernel/cpu_xxx.x)
Signals Implementation
Implement RT signals, Siginfo (arch/vax/kernel/signal.c) -done DA
Kernel Stack Overflow
Guard page in processes task_struct to catch kernel stack overflow.
System Control Block Faults
Implement missing SCB fault vectors (floating point, reserved addressing mode etc) in place of the stubs.
Interrupts
Interrupt Stats
Implement interrupt stats in /proc/interrupts (arch/vax/kernel/interrupt.c)
Machine Interrupt Vectors
Replace CONFIG_VAX_4000HC with something else.... Currently its more like CONFIG_HARDCODE_INTERRUPT_NUMBERS.
Interrupt Detection
Occasional Misdetection of console and network interrupt vectors.
Memory management
Page consolidation
Condense the three pages/task we use for pgd and pmd into one page. (arch/vax/mm/pgalloc.c) Guard page to catch overruns and underruns at the boundary between P0 and P1 ptes.
Code Cleanup
Clean up the definitions of mk_pte in pagelet_pte.h, make sure the early code and iomap are using it correctly. (Andy Phillips)
Flush code
Write a flush_tlb_8 that flushes a set of pagelet hwptes and use where needed in place of current flush_tlb_all()'s.
Translation not valid handler
Write a translation-not-valid fault hander that doesnt lock up the machine or lock up a process in a deadlock at the capture of the mm semaphore if we are in the middle of an existing
access violation or translation invalid mmfault. (e.g. Bad S0 pte in the middle of a user page fault) (arch/vax/mm/fault.c)
Memory Allocation Issues
Make sure we keep the VMB/PROM bitmap safe from the memory allocator.
Use the information in the prom bitmap to feed information about bad pages to the bootmem allocator.
Reboot Code
Save/Set up the RPB (reboot parameter block) properly so we can restart if needed.
Other Enhancements
- Swapon to a file would be useful.
- Track latest linus tree (2.4 series)
Other Problems
Infinite loops
- Occasionally processes will go into an infinite loop (configure --target=vax-dec-linux for zlib is one) that refuses to respond to signals - ctrl z, c, \. We need to do_signal somewhere where we are not, or there is something missing from the console driver.
- Occasionally, parent processes dont get woken up, when their child exits, and we end up in the idle loop.
Coredumps
Coredump problem sizeof(elf_gregset_t) (64) != sizeof(struct pt_regs) (68)
Process termination
Sometimes, we get null characters fed to a shell, when one of its children exits. This can be interpreted as EOF, and the shell will exit unless ignoreeof is set. (Seen on tcsh, and bash (although bash had other problems))
Debugging (Dave Airlie)
- Implement system call trace pathway (arch/vax/kernel/entry.S, syscall.c)
- Implement ptrace and profiling processes etc... - mostly done
Clock
- Read/Write system clock routines.
- Systems with full hardware clock implementations (KA55) need full handling of ticks.
Machine Specific Code
- Implement DMA routines for vsbus systems. KA46 has a stub that could be more intelligent.
- The KA46 needs code to turn the Floating Point unit on at boot.
- KA48 (VXT2000 and 4000/vlc) support requested.
Drivers
Network (Lance/SGEC)
- Improve ka43_diagmem handling in lance driver. (parity control bit and memory over 16mb).
- Lance driver doesnt work on KA46. It gets to init the card, and dies with a memory error (csr=8881). The KA46 DMA region/registers need sorting properly.
Other
- vax-5380 driver is very slow, and occasionally locks up under heavy swapping.
- Complete NCR53C9x driver for the 4000/60 and 3100/85 (vax_esp.c).
- If we halt using the usual method (/sbin/halt) the console stops accepting input. On halt how should the dz console be setup?
Miscellaneous
GCC
- Update to gcc 3.0 when glibc can compile with it.
- Can't compile natively without REAL_ARITHMETIC defined, why not? If we do, constant doubles are stored with the wrong bit pattern, and generate reserved operand faults. e.g. compile + run "make". Debug native compiler build.
GLIBC
Start port. (Dave Airlie)
uClibc
Assembler error messages compiling des.c
/tmp/ccX7jORA.s: Assembler messages:
/tmp/ccX7jORA.s:1231: Warning: Ignoring statement due to "Bad
operand"
/tmp/ccX7jORA.s:1231: Warning: Ignoring statement because "a register has
no address"
Bootloader (Andy Phillips)
Generic Bootloader. asbl handles basic scsi boot on KA42/KA43...
Other
- Update mopd to use new packet filter API.
- Dynamic libraries.