KERNEL AND DRIVERS 9boot: handle automatic length for 64-bit values in hexfmt() for framebuffer address (thanks Michael Forney) 9boot: mark efi boot and runtime service regions as reserved 9boot: prefer plan9.ini from ESP we loaded from audiohda: add PCI ID for Intel C610/X99 amd64, vmx: support avx/avx2 for host/guest; use *noavx= in plan9.ini to disable amd64: FP: always use enough memory to fit AVX state and align to 64 bytes audiohda: Add AMD Starship/Matisse HD Audio Controller (thanks uramekus) audiohda: do not enable interrupts before intrenable() audiohda: make it work with qemu (thanks mischief) audiohda: reset irbsts bits in hdainterrupt() (thanks LordCreepity) aux/acpi: do not expose empty files aux/kbdfs, kbmaps: enable Kmod4 for other layouts, not just neo2 aux/kbdfs: use getuser() from libc aux/kbdfs: fix mistake, remove leftover static user variable (thanks umbraticus and igor) aux/realemu: use #$/pci/B.D.Fraw to access pci config space aux/vga: remove panning, add screen tilting support ether2114x: make sure pci bar0 is I/O ether2114x: vetting the driver for pc64 ether8169: fix interrupt panic before init, defer initialization until attach ether82563: add pci id for i219-LM on thinkcenter (easypeasy, thanks hiro) etheriwl: bring back recovery on flushq timeout etherm10g: remove duplicated pci capability enum bcm64: get inbound and outbound pci window base address from device tree bcm: change color chan to RGB24 (thanks p.kosyh) bcm: download dtb files for rpi-400 and rpi-cm4 devfs: fix locking and ignore undocumented "fsdev:\n" configuration signature devmouse: remove redundant check devpccard, pci: fix pccard support and handle pci expansion roms devproc: allow anyone to change user of its own processes to "none" devsons: remove #c/pgrpid devvga: implement screen tilting, remove panning and overlays kernel: add portable pcimsienable()/pcimsidisable(), disable MSI/MSI-X on pcidisable()/pcireset() kernel: avoid palloc lock during mmurelease() kernel: handle tos and per process pcycle counters in port/ kernel: implement per file descriptor OCEXEC flag, reject ORCLOSE when opening /fd, /srv and /shr kernel: make addbroken() static, remove misleading Proc* argument kernel: remove Proc* argument from procsetuser() function kernel: remove ucalloc.c duplicates kernel: remove unused pcinextcap() function kernel: update procsave() comment, we'r not holding up->rlock anymore kernel: use 64-bit mask to avoid compiler warning in port/pci.c kw: use ethermii.c from port/ (thanks stuart) mtx: fix pci access routines (see changeset 8012:78891f472fbf) nusb/cam: don't videoclose() when open failed nusb/kb, nusb/joy: dont try to set protocol on nonboot devices nusb/kb: correct Mod4 scancode (125 → 91, to match what kbdfs has) nusb/kb: update button state if event was actually received, fix typos (thanks umbraticus) nusb: don't create rw iso endpoints (by Michael Forney) nusbrc: delect lenovo camera pc, pc64, xen: rewrite interrupt handling code pc, pc64: add *nomtrr= kernel parameter pc, pc64: add minimal HPET driver to measure LAPIC and TSC frequencies pc, pc64: allocate dma bounce buffer right after xinit() pc, pc64: allocate i/o port space for unassigned pci bars, move ioalloc() to port/iomap.c pc, pc64: cleanup cpuidentify() and some comments pc, pc64: disable all pci devices for /dev/reboot pc, pc64: disable all pci devices in pcicfginit() pc, pc64: exclude memory regions with unusual MTRR cache attributes pc, pc64: fix grub multiboot pc, pc64: ignore MTRR's when MTRRCap.vcnt and MTRRCap.fix are zero pc, pc64: implement disabling of msi interrupts pc, pc64: load idt early in trapinit0() pc, pc64: make sure write combining is supported in MTRR's before setting it pc, pc64: move all fpu specific code from main.c to fpu.c pc, pc64: move common irq handling code out of trap.c pc, pc64: new MTRR code supporting AMD TOM2 MSR and fixed mtrr ranges pc, pc64: revert addition of pcireset() call to pcicfginit() pc, pc64: warn when running out of conf.mem[] entries in meminit() pc, pc64: work around bhyve all uncached MTRR's pc, xen: move fpu setup/fork/save/restore handlers to pc/fpu.c pc/devarch: use m->cpumhz instead of recalculatin it pc/dma, pc/sdide: use uintptr for physical address instead of ulong pc/l.s: load virtual gdt pointer after mmu switch pc/l.s: remove unsued m0gdtptr/m0idtptr structs pc/pc64: fpc, pc64: ix faulty mtrr slot reuse (thanks Fulton) pc64: AMD64 mandates SSE support, remove the check in fpuinit() pc64: assign fpsave/fprestore only once in fpuinit() pc64: preserve reserved bits in CR0/CR4 for amd64 in mtrr setstate() pc: increase number of Conf.mem[] entries from 4 to 16 pc: move ldmxcsr() prototype to fpu.c sdiahci: assume 64-bit PCIWADDR() sdiahci: enable pci busmaster before ahciconfigdrive() (fix qemu crash) usbehci: use 64-bit base address, remove resetlck, simplify scanpci() usbohci: use 64-bit io base address, disable interrupts before reset, remove resetlck usbuhci: remove resetlk, simplify scanpci() vesa: make unsupported function not an error, set return status xen: fix for the last avx changes xen: use pc/fpu.c COMPILERS AND DEBUGGERS acid: increase hash size (thanks jonas.amoson) 5c, 6c, 7c, 8c, kc, qc, vc: use explicit gmove(... , nn) in cgen() for result of OAS*, OPREINC, OPOSTINC 5l: fix shifts by zero cc: fix comparison warning with constant LHS cc: remove unnecessary 128-bit add function cc: add a couple notes to the comments regarding flags cc: mk clean should delete cc.a$O [12kq]l: remove unix compat code for cputime() LIBRARIES ape: remove _SUSV2_SOURCE guard from inttypes.h ape: add missing isnan() and isinf() macros for 386 (thanks Jonas) ape: apply infinite recursion in fmod() fix (thanks jxy and ality) ape: re-implement getlogin() by stating /proc/$pid/status ape: sync flaot.h macros with u.h ape: unify math.h copies ape: implement log2 in libc ape: expose fd2path (thanks phil9) ape: sync arm getfcr.s implementation ape: fix _startbuf, check rfork return (thanks pixelherodev) ape: libap: add strndup lib9p: improve reqqueuecreate() lib9p: open /mnt/factotum/rpc with OCEXEC flag in auth9p() lib9p: open internal file-descriptor with OCEXEC flag in getremotesys() libFLAC/mkfile: update version and build with -DNDEBUG libaml: add (nop) "signal" op libaml: fix IndexField and BankField implementations (thanks Michael Forney) libauth: add procsetuser() function to change user id of the calling process libauth: change programs to use the new procsetuser() function libauth: open internal file-descriptors with OCEXEC flag libauth: re-implement procsetuser() to use /proc instead of #c/user libauthsrv: open internal file-descriptors with OCEXEC flag libbio: add aux pointer to bio libc/arm: open #c/sysstat file with OCEXEC (internal file descriptor) libc: implement getppid() reading /proc/$pid/ppid instead of /dev/ppid libc: open internal file-descriptor with OCEXEC flag libc: re-implement getuser() by stating /proc/$pid/status libc: recurse on smaller half of array libcomplete: open internal file-descriptor with OCEXEC flag libdraw: add bezierpts libdraw: do not force flushimage() on freescreen() libdraw: enter/eenter: fix Kleft for non-ascii text libdraw: enter/eenter: fix ^W removing the text on the right side of the tick libdraw: open file-descriptor with OCEXEC flag in readcolmap() libdraw: open internal file-descriptors with OCEXEC flag libdraw: remove unused Error label in freescreen() libndb: open internal file-descriptors with OCEXEC flag libndb: remove db file size limit libsec: open internal file-descriptors with OCEXEC flag libstdio: sync bits of vfprintf from APE libsunrpc: work around arm64 compiler bug in sunStringUnpack() libthread: reduce stack usage for ioprocs, open /proc/n/ctl with OCEXEC flag libthread: reduce stack usage of threadkill*(), open /proc/n/ctl with OCEXEC flag libthread: remove unused _times() function libthread: simplify threadsetname() libvorbis: 1.3.5 → 1.3.7 (fixes a bunch of CVE and other small issues) libvorbis: fix free() called on a wrong pointer stdio: remove erronous assert in dtoa strndup: don't assume buffer is terminated PROGRAMS 9fs: bell labs is very dead B, Bfn: fix invocation with multiple files, improve manual page B: dont pollute the environment Kill: don't pollute environment kill, slay, broke: dont pollute environment, use $user Mail: correct rendering of nested multipart messages Mail: fix infinite deletion loop Mail: fix inverted reply-all condition Mail: only clear upas-maintained flags on change (thanks deuteron) Mail: separate deletion from relinking messages acme: fix use after free in warning() call (thanks igor) acme: use getuser() in fsinit() acme: use global user string variable instead of getuser() aout2uimage: fix missing \n in usage print (thanks james) audio/flacenc: fix error check for fseeko audio/flacenc: fix usage audio/flacenc: missed an argument in fprintf() audio/wavdec: add -s option diff: fix change marker for -c mode dpost prologue: update /radicalex to fix square displacement (thanks umbraticus and Ethan) faces: add -c option to remove faces with button 1 click (thanks sirjofri) fax, psfax, vwhois: use $user instead of /dev/user file: ftyp mp4* is video/mp4 as well mimetype: add entry for .patch extension aux/cpuid: decode leaf 7; extend leaf 13 decoding aux/cpuid: fix final newline on printbits() aux/cpuid: correct off-by-one nul termination. aux/status^(bar msg): few small fixes (thanks umbraticus) awk: fix truncated input after fflush cal: add -s option to specify the starting day of the week cal: fix -s 7 cal: use Sa/Su in all cases, also simplify the code cwfs: fix interpretation of startdump argument dc: fix crashes with : operator (thanks istvan bak) dd: error with invalid size suffixes, add 'm' fplot: add abs and hyperbolic functions g: filter directory arguments g: initialize files env var games/gb: fix reversed audio channels games/gb: fix timer divider for input clock 0 games/gb: various HDMA fixes games/mix: fix SLAX and SRAX instructions (thanks nicolagi) games/mix: fix decoding of shift instructions games/mix: fix implementation of MOVE instruction (thanks nicolagi) games/snes: fix BRR decoding with filters 2 and 3 games/snes: implement DSP echo games/snes: implement DSP noise games/snes: use 4-point hermite interpolation to resample games/snes: use enum constants KON and ENDX instead of their values hpost: fix usage text hpost: support custom headers (thanks julienxx) html2ms: 0xFFFD → Runeerror ico: avoid potential nil pointer dereferences ico: fix interpretation of 0 widths/heights imap4d: imap4date should ignore time and timezone (RFC3501, 6.4.4) iostats: dup 9p pipe to both fd 0 and fd 1 for exportfs ip/cifsd: fix missing int return type for vpack() (thanks pr) ip/tftpd: add -n namespace-file flag (thanks sam-d) ip/tftpd: use procsetuser() instead of writing #c/user ip/tinc: fix reportedge() jpg: treat EOF as EOI marker mothra: "d": use lite version, disable redirect mothra: add "d" command to search for a text on the internet (using duckduckgo) mothra: don't insert newline after div (thanks phil9) mothra: linkify text starting with gemini:// and ftp:// mothra: resolve urls on middle click. helps with snarfing of relative urls mothra: tune up entry control logic for easier text editing marshal: remove debug junk. mklib, upas/common: clean up libcommon properly (thanks mikan) ndb/dns: handle dnskey RR's (thanks moody) ndb/dns: implement RFC6844 certificate authority authorization record type news: make -a and -n get along (thanks lyndon) newt: remove fn f, replace with walk pc: set exit status depending on errors pc: treat EOF gracefully, allowing easier use within sam command language plumb: fix wrong click attribute offset (thanks umbraticus) plumber: don't leak srvfd file descriptor into sub processes plumber: open rule files as OCEXEC, to avoid leaking them to sub commands proof: don't confuse ""(1) (thanks Stuart Morrow) ptrap: fail if invoked with no arguments ptrap: implement filtering on plumb attributes qr: fix exit status ramfs: fix truncfile() for non multiple of extend size (64k) rc: show line numbers on error rio: allow windows as small as one line of text, still scrollable rio: avoid redrawing window text on resize for programs using libdraw rio: format pid's as ulongs rio: goodrect: clarify minimal height and actually use the smallest reasonable value rio: make window focus changes deterministic, cleanup wind.c rio: open /dev/snarf with OCEXEC flag when writing rio: properly restore the windows contents on /dev/mouse close rio: rewrite better portion() function rio: simplify filsysinit() by using getuser(), format pid's as ulongs rio: use libdraw's badrect() to exclude some extreme cases in goodrect() sam/{address.c, sam.h}: bump STRSIZE to 512MB (thanks, Ori_B) screenlock: use initdisplay(2), top the window (thanks stuart morrow) seconds: remove junk from usage sort: fix memory leak (thanks Igor Boehm) src: work on awk scripts too, see "src valley" (thanks phil9) start, stop: avoid null list in concatenation witout arguments, use $user stats: don't query battery and temp as often when using acpi syscall: don't rely on . being in $path (thanks Silas) test: fix expression parser text2post: check font index for out of range tweak: support showdata plumb action (thanks sirjofri) upas/*: cleanup mkfiles (thanks amavect) upas/*: fix mkfile issues (thanks amavect) upas/common: delete library on 'mk clean' upas/fs/mbox.c: fix cosmetic typo upas/fs: fix swapped argument, dead code upas/marshal: add -S saveto to save outgoing mail, fix -F upas/marshal: handle nonexistent save folder correctly (thanks sirjofri) upas/marshal: use login instead of user (thanks sirjofri) upas/ml: touch the artwork upas/runq: bring back -a upas/runq: fix typo upas/runq: support parallel queue processing, drop -a upas/runq: clean up code, fix error handling. upas/send: add \n to error in refuse() (thanks josuah) upas/vf: exclude mime boundary from temporary attachment files upas/vf: install %τ format specifier upas/vf: remove debugging print statements upas: fix mk nuke upas: make 'all' the default target vmx: fix allocimage leaks vmx: add -D option to enable debug messages, use vmdebug for non-fatal "errors" vmx: add -v|-w flag to control window creation behaviour vmx: add fmt checking, fix fmt errors, remove duplication for vmdebug vmx: clean up mksegment, memset only if segment existed (devsegment clears new ones) vmx: mask out bits 0:2 and 24:30 of pci CONFIG_ADDRESS on read vmx: nanosec(): fix non-interruptable temporary, assign fasthz only once after xstart vmx: reduce cpu load by eliminating nop-loop vnc: I don't like your face. vncv: backing out previous change, this needs another revision vncv: do NOT map Kaltgr to meta, introduce Mod4 (Super) as an extra key to use instead vncv: pick an auth type that we support vt: improve behavior of chording vt: rfork environment varibles (thanks fshahriar) webcookies: remove straggling custom date parser winwatch: always reflow when possible (thanks telephil9) DOCUMENTATION acme(1): add references to appropriate manpages acmemail(1): Nail => Mail audio(1): fix little typo. audio(1): it is 2021 now cpu(1): refer to oexportfs(4) ctime(2): add tmdate(2) to "see also" dd(1): update manpage to match program mothra(1): eu regulations require that we disclose we're sending search queries to duckduckgo. 9boot(8): update manual to reflect efi loader search order changes 9pfid(2): document struct Qid (thanks sirjofri) fplot(1): use abs() import(4): refer to oexportfs(4) vmx(3): fix small typo nusb(4): fix typo marshal(1): fix example: upas/mail -> mail (thanks fulton) mouse(3): document "scrollswap" ctl message, fix style a bit (thanks umbraticus) mp(2): correct documentation of error handling (thanks LordCreepity) nan(2): document isInf(x, 0) matching +∞ and -∞ newuser(8): fix reference to incorrect file server console command plan9.ini(8): document *nohpet= option plan9.ini(8): document *nomtrr= and order the table pop3(1): write options consistently rio(4): list window states in order (thanks umbracticus) sega(1): fix keys (thanks bigato) tmdate(2): correct example in manpage tmdate(2): failed to (p)arse tmdate(2): remove lies troff2png(1): add manpage upasfs(4): fix small typos (thanks igor) vmx(1): build vmxgdb by default, clean it up as well vt(1): document optional command argument (thanks sl) zerotrunc(8): add manpage OTHER legal: mit neuer lizenz: mit /lib/keyboard: Anführungszeichen unten (danke sirjofri) /lib/keyboard: add fingers and more arrows (thanks umbraticus) font/terminus: you can't run a font, silly fortunes: SATAN fortunes: That depends on how you define native. -- Andre Garzia kbmap: add support for neo2 kbmak (thanks jstsmthrgk) kbmap: add one missing key to Turkish keymap (thanks kemal) kbmap: add Turkish keymap (thanks Kemal) kbmap: add croatian kbmap (thanks skerbergs) kbmap: add latvian keymap (thanks freddy) kbmap: avoid division by zero when window becomes too small kbmap: update Finnish kbmap: fix ¤ on shift+4 and add more AltGr variants plumb/basic: handle tga, wav, au, mid and mus profile: don't create $wsys if it doesn't exist theo: wrong.