I have been an active
OpenBSD
developer for
more than 15 years.
Most of the work I've done has ended up being commited to the master repository.
However, incomplete or unpolished works may sometimes be found here until they
are ready to hit the tree. You'll find also some tips and other random bits,
and sometimes experimental kernels for some platforms.
For the curious people out there, here is a short (and incomplete) list of my OpenBSD achievements:
- Porting to new (well, previously unsupported) hardware
- Ported to AViiON systems. This port is no longer supported in OpenBSD.
- Ported to the Lemote Fuloong, Lynloong and Yeelong systems, as well as the
Dexxon Gdium Liberty
(loongson
port).
Files: about everything in sys/arch/loongson/ - Added multiprocessor support (SMP) to the mvme88k port.
- Fixed the mvme88k port codebase to run reliably on 88110-based systems.
- Ported to the Octane and Origin/Onyx families of Silicon Graphics
workstations and servers (including Fuel and Tezro) (part of the
sgi
port).
This required writing several specific device drivers
(XBow-PCI bridge,
IOC3
and
IOC4,
Ethernet
...)
Files mainly: sys/arch/sgi/dev/if_iec.c, sys/arch/sgi/dev/if_iecreg.h, sys/arch/sgi/dev/owmac.c, sys/arch/sgi/dev/owmacvar.h, sys/arch/sgi/dev/owmem_subr.c, sys/arch/sgi/dev/owmem_subr.h, sys/arch/sgi/dev/owserial.c, sys/arch/sgi/dev/owserialvar.h, sys/arch/sgi/pci/ioc.c, sys/arch/sgi/pci/iocreg.h, sys/arch/sgi/pci/iocvar.h, sys/arch/sgi/pci/iof.c, sys/arch/sgi/pci/iofreg.h, sys/arch/sgi/pci/iofvar.h, sys/arch/sgi/sgi/ip27.h, sys/arch/sgi/sgi/ip27_machdep.c, sys/arch/sgi/sgi/ip30.h, sys/arch/sgi/sgi/ip30_machdep.c, sys/arch/sgi/sgi/l1.c, sys/arch/sgi/sgi/l1.h, sys/arch/sgi/sgi/sginode.c, and almost everything in sys/arch/sgi/xbow/
- Extending existing hardware support to new machine families
- Added Alpha DS15/DS25/ES45 (Titan) system family support, as well as
environmental exception handling (chassis alarms) to the
alpha port.
Files: mainly sys/arch/alpha/alpha/dec_6600.c, sys/arch/alpha/include/logout.h - Ported to the MVME141 and MVME165 systems, as part of the
mvme68k
port.
Files: mainly sys/arch/mvme68k/dev/lrc.c, sys/arch/mvme68k/dev/lrcreg.h, sys/arch/mvme68k/dev/ofobio.c, sys/arch/mvme68k/dev/ofobioreg.h - Ported to the VAXstation 3520 and 3540 (Firefox)
VAX systems.
Files: sys/arch/vax/dec/sii.c, everything in sys/arch/vax/mbus/, sys/arch/vax/vax/ka60.c - Ported to the VXT2000+
VAX-based X-terminal.
Files: sys/arch/vax/vax/vxt.c, everything in sys/arch/vax/vxt/
- Added Alpha DS15/DS25/ES45 (Titan) system family support, as well as
environmental exception handling (chassis alarms) to the
alpha port.
- Device drivers
- Wrote
arcofi,
a driver for HP Audio1 device, found on HP 9000/425e (only
audio-capable hp300 system) and
various early PA-RISC systems.
Files: sys/dev/ic/arcofi.c, sys/dev/ic/arcofivar.h, and the attachments interfaces sys/arch/hp300/dev/arcofi_dio.c for hp300 and sys/arch/hppa/gsc/arcofi_gsc.c for hppa. - Added
SGC
bus support to the hp300 port.
Files: sys/arch/hp300/dev/sgc.c, sys/arch/hp300/dev/sgcreg.h, sys/arch/hp300/dev/sgcvar.h, sys/arch/hp300/dev/sti_sgc.c - Wrote
tvrx,
a driver for the Tigershark PersonalVRX
hp300 frame buffer.
File: sys/arch/hp300/dev/tvrx.c - Wrote
dnkbd,
a driver for the Apollo keyboard and mouse, used by the
hp300 port.
Files: sys/arch/hp300/dev/dnkbd.c, sys/arch/hp300/dev/dnkbdmap.c, sys/arch/hp300/dev/dnkbdmap.h - Rewrote the
HIL
subsystem for the
hppa
port. This subsystem is also used by the
hp300
port.
Files: sys/arch/hp300/dev/hil_intio.c, sys/arch/hppa/gsc/hil_gsc.c, everything in sys/dev/hil/ - Wrote
gsckbc,
a driver for the PS/2 keyboard and mouse port found on most
PA-RISC
systems.
Files: sys/arch/hppa/gsc/gsckbc.c, sys/arch/hppa/gsc/gsckbcreg.h - Wrote
vsbic,
a driver for the MVME327 SCSI controller for the
mvme68k
and
mvme88k
ports.
Files: sys/arch/mvme68k/dev/vsbic.c, sys/arch/mvme88k/dev/vsbic.c (they are almost identical and were supposed to eventually merge) - Wrote drivers for many SPARC SBus frame buffers, such as Fujitsu AG-10e
(agten),
Sun/Matrox cg12
(cgtwelve),
Southland Media Systems MGX/MGX+
(mgx),
VITEC RasterFlex
(rfx),
Parallax XVideo and PowerVideo
(tvtwo),
Vigra VS10/11/12
(vigra),
used by the
sparc and
sparc64 ports.
Files: mainly sys/dev/ic/atxxreg.h, sys/arch/sparc/dev/cgtwelve.c, sys/arch/sparc/dev/cgtwelvereg.h, sys/arch/sparc/dev/mgx.c, sys/arch/sparc/dev/rfx.c, sys/arch/sparc/dev/tvtwo.c, sys/arch/sparc/dev/vigra.c, and their sparc64 counterparts sys/dev/sbus/cgtwelve.c, sys/dev/sbus/cgtwelvereg.h, sys/dev/sbus/mgx.c, sys/dev/sbus/rfx.c, sys/dev/sbus/tvtwo.c, sys/dev/sbus/vigra.c - Wrote
tslot,
a driver for the PCMCIA bridge found in Tadpole's SPARCbook 3 systems.
File: sys/arch/sparc/dev/ts102.c - Wrote
ifb,
a driver for the Sun Expert-3D cards (with the help of Mark Kettenis).
File: mainly sys/arch/sparc64/dev/ifb.c - Wrote
gpx,
a driver for the VAX low cost color option frame buffer found on
VAXstation 3100 systems.
File: mainly sys/arch/vax/vsa/gpx.c - Added
audio
support to the VAXstation 4000 series (VLC, /60 and /90).
File: sys/arch/vax/vsa/vsaudio.c - Extended the
sti
frame buffer driver to support PCI models.
File: sys/dev/pci/sti_pci.c
- Wrote
arcofi,
a driver for HP Audio1 device, found on HP 9000/425e (only
audio-capable hp300 system) and
various early PA-RISC systems.
- Other work
- Led the integration work of the stack-smashing protector (propolice), written by Hiroaki Etoh, in the OpenBSD system, enabled by default. This involved many testing cycles on all supported platforms, changes to the a.out ld.so, writing a stack smashing handling routine in libc. Although this work was started by Federico G. Schwindt, most of the bugs affecting other platforms than the mainstream i386 (amd64 did not exist back then...) were found by Hiroaki Etoh and me on my systems.
- Wrote
code
to be able to switch console path in the hppa port bootloader
(allowing models 712 to be configured for serial console despite the PROM
not allowing this).
File: sys/arch/hppa/stand/libsa/cmd_hppa.c - Designed and implemented a low-overhead workaround for R4000 infamous
end-of-page errata, allowing SGI Indigo (and some early Indy) to run
multiuser, stably.
Files: mainly sys/arch/mips64/mips64/r4000_errata.c, which comments detail the design and implementation. - Made the kernel terminal emulation code (wscons) handle failure
from frame buffer drivers, and keep enough state to be able to restart failed
update operations after a short while. This need arised when the USB DisplayLink
(udl)
driver was introduced, due to command FIFO limits in the device.
Files: wsemul* in sys/dev/wscons/, where struct wsemul_abortstate is involved (see wsemulvar.h for an explanation of its operation).