9FRONT “NO THINKPAD” RELEASED
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.386.iso.gz.torrent
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi.img.gz.torrent
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi3.img.gz.torrent
DASH 1 MANUAL
http://fqa.9front.org/dash1.nothinkpad.pdf
dash 1 and man pages in print: http://9front.org/propaganda/books
THANKS: momus
KERNEL AND DRIVERS
kernel: catch execution read fault on SG_NOEXEC segment
kernel: clear FPillegal in pexit() and before pprint()
kernel: expose no execute bit to portable mmu code as SG_NOEXEC / PTENOEXEC, add PTECACHED bits
kernel: get rid of tmperrbuf and use syserrstr swapping instead in namec()
kernel: make exec clear errstr, stop side-channels and truncate on utf8 boundary
kernel: make user stack segment non-executable
kernel: move common ethermii to port/
kernel: prohibit changing cache attributes (SG_CACHED|SG_DEVICE) in segattach(), set SG_RONLY in data2txt()
kernel: simplify pgrpnote(); moving the note string copying to procwrite()
bcm, kw, omap, teg2: implement setregisters()
bcm: add cache invalidate before accessing prop buffer
bcm: fix typo in gpio.c on unused AFedge0 constant
bcm: flush out early boot messages on uart and screen initialization
bcm: invalidate cache on Fbinfo after firmware completion
bcm: set XN bits for kernel device mappings
bcm64: add addarchfile() prototype to fns.h (for qeed)
bcm64: add config for raspberry pi 4
bcm64: add driver for emmc2 controller
bcm64: add gic interrupt controller driver for raspberry pi 4
bcm64: add gisb arbiter driver to catch bus timeouts
bcm64: add pci express driver for raspberry pi 4
bcm64: add support for more than 1GB of ram (untested)
bcm64: deal with discontinuous memory regions, avoid virtual memory aliasing, implement vmap() proper
bcm64: do not use OTP_BOOTMODE_REG to determine OSC frequency (thanks richard miller)
bcm64: enable devgpio in kernel configuration (thanks qeed)
bcm64: enter page tables in mmutop AFTER switching asid in mmuswitch()
bcm64: fix mmu0clear() mistake from previous commit
bcm64: fix wrong prescaler for generic timer on rpi4
bcm64: generalize mmu code
bcm64: implement dtracy support
bcm64: implement reboot support
bcm64: no need to flush instruction cache when switching TTBR0
bcm64: poll gisb arbiter for asynchronous bus errors
bcm64: remove unneccesary tlb flush on mmuidmap()
bcm64: reorganize virtual memory map for rapberry pi4
bcm64: replace emmc2 driver with richard millers sdhc driver
bcm64: set XN bits for kernel device mappings
bcm64: strip debug symbols to make sure .img file is multiple of 4 bytes
bcm64: switch to 64k page size
bcm64: update io.h for pci express and raspberry pi 4
bcm64: work in progress genet ethernet driver for raspberry pi 4
bcm, bcm64: add BCM2711 support for gpiopull(), fix gpiomeminit(), cleanup
bcm, bcm64: add dmaflush() function and make virtio size and virtual address configurable in Soc.virtio and Soc.iosize
bcm, bcm64: add support for device tree parameter passing
bcm, bcm64: add vcore support for raspberry pi 3 GPIO expander
bcm, bcm64: clean dma destination buffer before issuing dma in case of non cache-line-size aligned buffer
bcm, bcm64: fix cache operations for dma and emmc
bcm, bcm64: make irq.$O optional and add intrdisable(), use intrenable()
bcm, bcm64: preserve memsize across reboots, avoid trashing atags while parsing cmdline
devdtracy: make machlocks and dtktab static
devip: fix permission checking
devip: if the server does not support TCP ws option, disable window scaling (thanks joe9)
devproc: fix fishy locking in proctext(), check proc validity, static functions
devproc: move proctab() call after Qnotepg special case in procwrite()
devproc: restore psstate info string in procstopwait()
devuart: make sure uart is enabled in uartkick()
ethergenet: fix flow control negotiation
ethergenet: remove debugging
emmc: 50MHz highspeed support (from richard miller)
pc: move low-level allocation details out of mmu.c into memory.c rampage() function
pc64: fix compiler warning in rebootjump() entry calculation
pc64: implement NX bit discovery, map kernel mappings no-execute
pc64: map kernel text readonly and everything else no-execute
pc64: preallocate mmupool page tables
sdide: silence compiler warning in atadebug()
usbehci: introduce dmaflush() function to handle portable cache invalidation for device drivers
usbehci: silence “param declared but not used” compiler warning in itdinit()/sitdinit()
usbxhci: fix mysterious ENABLESLOT failures (update to XHCI spec revision 1.2 (2019))
usbxhci: implement portable dma flush operations and move to port/
usbxhci: fix endpoint stall recovery, handle Ep.clrhalt flag
vgai81x: use vmap() for uncached access to cursor data instead of manipulating kernel page table
COMPILERS AND DEBUGGERS
7l: don’t hardcode 4k pagesize, use INITRND
8c, 6c: LEA x, R; MOV ®, R -> MOV x, R
8c, 6c: avoid allocating index registers when we don’t have to
8c, 6c: fix INDEX node #reg calculation
8c: skip 64-bit regpair allocation for OINDEX nodes in cgen64()
8l, 6l: fix “unknown relation: TEXT” xfol() bug (thanks mischief)
cc: fix void cast crash
cc: remove nullwarn() from OCAST codegen, zap void casts
cc: use 7 octal digits for 21 bit runes
cc: Allow address expressions in ?c after int casts.
cc: Import compiler warnings and bugfixes from Charles.
acid/kernel: fix procstk() for arm64, set kdir for arm/arm64 to bcm/bcm64
acid/kernel: for stacktraces, try to use context from error stack when process is not sleeping
LIBRARIES
ape: Add mkstemp to /sys/src/ape/lib/ap/gen/mkfile
ape: don’t hardcode list of ape library directories in /sys/src/ape/lib/mkfile
ape: fix stdio putc() macro, avoiding “result of operation not used” warning
ape: reimplement rename() - fixing compiler warnings and handling more error cases
ape: revert rename() change
ape: Include integer limits from generic stdint.h in system-specific stdint.h
ape: Add missing UINTsz_MIN defines to ape stdint.h
ape: Add test for pow.c
ape: Add toascii()
ape: Handle NaN and Inf edge cases as specified by posix, instead of barfing.
ape: Turn on warnings when building libap.
ape: Add mkstemp to stdlib.h
lib9p: fix listensrv() filedescriptor leaks
libauth: do not set errstr in auth_rpc() for ARdone result (thanks majiru)
libflac: Tell it that we have stdint.h so it finds SIZE_MAX
libstdio: fix putc(), plan9 version
libventi: define VtEntryNoArchive constant
libventi: implement vtreconn and vtredial functions
libventi: implement vtsha1 and vtsha1check functions
PROGRAMS
ape/cc: Add arm64 and remove alpha, add spim
awk: no need to call getargv() twice to get the value for FILENAME
cwfs: fix listen filedescriptor leaks
date: Add RFC2822 (email style) formatted dates
g: Make it grep recursively by default.
auth/rsa2asn1: implement private key export with -a flag (thanks kvik)
snoopy: add support for dhcp classless static routes option
snoopy: avoid extra spaces in dhcp filter output
snoopy: include dhcp.h instead of replicating bootp/dhcp options enum
ssh: work around github.com’s broken cipher negotiation code (thanks Ori_B)
cmd/ip/*: chown the network connection after authentication
cwfs: fix root access time qid path comparison
cwfs: properly handle 64 bit qid path
cwfs: remove old some assert() debugging
cwfs: remove orphaned lrand.c
disk/format: implement long name support
file: recognise unified diff output
gs: apply fixes for CVE-2018-16509 (thanks jsmoody)
gs: apply mitigations against CVE-2017-8291 (thanks jsmoody)
gs: fix missing type check in ztype (thanks jsmoody)
ip/cifsd: add basic support for UNIX extensions
ip/cifsd: dont return garbage in upper 32 bit of unix extension stat fields
ip/cifsd: exit to close connection when we get malformed smb header (fixes linux mount hang)
ip/ipconfig: don’t leave behind null address when dhcp gets interrupted
ndb/dnsquery, ndb/csquery: write “>” prompt to stderr (thanks kvik)
pcc: Always turn on the -+ flag in cpp
plumber: loop will go out of bounds when *++s == ‘\0’; replace with strstr
rc-httpd: avoid duplicate log output in dir-index handler
rc-httpd: only emit charset option for text/plain content type
rc-httpd: serve markdown with text/plain content-type
rc-httpd: set charset=utf-8 for all text/* content types
sshfs: use threadexits() instead of exits()
upas/fs: remove read timeout via alarm(2) in pop3resp
upas/fs: speedup mtree and henter()
upas/smtp: handle temporary authentication failures
vmx: handle build arch exclude in /sys/src/cmd/mkfile
vncv: fix snarf buffer realloc memory corruption
DOCUMENTATION
2c(1): document 7c (arm64)
draw(3): memlorigin
nusb(2): remove startdevs() reference, document getdev() (thanks BurnZeZ)
rsa(2): document asn1encodeRSApriv() and asn1encodeRSApub() functions
rune(2): complete source references
sshnet(4): … and incoming TCP calls
tinc(8): add history section
vmx(1): update BUGS
walk(1): add history section
OTHER
/sys/lib/dist/mkfile: adjust 2GB for pi3 and zynq img
/sys/lib/dist/mkfile: storage vendors idea of 2GB is deflating
/sys/src/cmd/mkfile: fix PCONLY exclude (thanks stefan)
/sys/src/boot/bcm/mkfile: add missing device tree file for raspberry pi 4
/sys/src/boot/bcm/mkfile: add raspberry pi 4 kernel and bootloader to pi3.img target
bootrc: remount devip after /dev/hostowner has been written by factotum
bootrc: unmount devip before starting factotum
mkone: fix man target (thanks Amavect)