summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-01-09detection worksgicvncosarara
2024-01-08imx8, arm64: fix tbdf argumnt position for intrdisable() (thanks cosa)cinap_lenrek
2024-01-08vncv: implement autoscaling via -a flag (thanks unobe)Igor Böhm
Add vncv option '-a' to autoscale remote frame buffer to local screen window size; useful when remote frame buffer is larger than the local screen. If the remote frame buffer is larger than the local screen, and autoscaling is disabled, only the upper left corner is accessible.
2024-01-08bcm64: fix build caused by added bootargs file in arm64/cinap_lenrek
2024-01-07devip: no more wandering routescinap_lenrek
Before, it was possible to add routes before the interface existed. The routes would look for their interface lazily as the route was looked up, but this leads to all kinds of hard to explain behaviour when a interface goes away and the routes start wandering to a different interface on their own which they will stick to when a new interface comes up that would match the route better. Instead, we have routes always associated to their desination interface and remove the routes when the interface gets unbound. It is no longer possible to add routes for interfaces that do not exist. This is easier to reason about behaviour as well as allows us to get rid of canrlock(ifc) in findipifc(). All routes inside the routing tree are now by definition up-to-date (as long as we hold the routelock). Callers of v4lookup()/v6lookup() still should check if the ifcid of the interface still matches the route once they have acquired the interface lock.
2024-01-07arm64/qemu: add xhci usbKeegan Saunders
To use, add the QEMU XHCI PCI device: -device qemu-xhci,id=xhci -device usb-tablet,bus=xhci.0
2024-01-07arm64/qemu: detect VM configurationKeegan Saunders
Now, *maxmem and *ncpu are not required to be provided. They will be detected automatically from the QEMU device tree. Further, >4GB memory configurations are also supported. The maximum number of CPUs is 16 for now, and the maximum supported memory is 16GB
2024-01-07ip/ppp: increase echo timeout to 5 periods (25 seconds)cinap_lenrek
I get every hour a delay of the echo replies for as long as 20 seconds causing reconnects. It does recover however and sends all the replies eventually.
2024-01-076?, 8?, libc: add JMPF instructionJacob Moody
In 6? and 8? JMP works a bit uniquely, when passed a function name it always encodes as a JMP* instead of a JMP. This means JMP myfunc(SB) always assume that myfunc is a function pointer, not a function itself. The new JMPF instead has the same semantics as CALL and matches B and JMP in other assemblers. This allows for a small optimization in our 386 and amd64 entrypoint by avoiding a jump between _main and _callmain.
2024-01-06vncs: bind devswap also for memory(1), this used to be in devconscinap_lenrek
2024-01-06nusb/audio: name audio device as audioUxxxx/volumeUxxxx (thanks arne)cinap_lenrek
This allows having multiple audio devices.
2024-01-06mixfs: allow switching between audio devices (/dev/audio*)cinap_lenrek
At startup, look for audio devices like /dev/audio* and open the first one that shows up. We allow to later changing the audio device using the new "new" control message to /dev/audio. Only devices named /dev/audio*, #u/audio* and #A/audio* are allowd so far to prevent accidents.
2024-01-06ip/ppp: lower echo timeout to 2 periods (10 seconds)cinap_lenrek
it usually never recovers...
2024-01-059nfs: fix rfork() race with shared pid variablecinap_lenrek
2024-01-05cifs: fix rfork() race with shard pid variablecinap_lenrek
2024-01-05telco: fix rfork() race for pidcinap_lenrek
2024-01-05ip/ppp: fix race condition with rfork()cinap_lenrek
ipinprocpid is static so shared with parent and child, so we need a temporary variable on the local stack to properly assign ipinprocpid.
2024-01-05ip/ppp: remove -> delcinap_lenrek
2024-01-05imx8: the mpid should not contain other bits from MPIDR_EL1, only the AFF bitscinap_lenrek
By looking at ATF, it seems only the affinity bits are expected here, no MT bit.
2024-01-05kernel: fix EDF scheduler double ready() and more robust double-ready detectioncinap_lenrek
Move the "double-ready" check into queueproc() function, doing it while holding the runq lock, meaning all transitions to Ready state are serialized. We do not just check for double-ready but for any "illegal" transisions: ready() on Dead, Moribund, New, Ready, Running and Waitrelease is not allowed. ready() on Queueing*, Wakeme, Broken, Stopped and Rendez is only valid when done from another process. For rescheduling, we have to go to Scheding state before calling ready(). (rebalance(), schedinit()...) The EDF scheduler had this bug where it could ready() multiple times as it was staying in Waitrelease state after releasing the edflock. Now it transitions thru Scheding avoiding the issue.
2024-01-05kernel: never do sched() in unlock() when not in "Running" state.cinap_lenrek
Some callers of unlock change the process state (such as qlock()) which means they are committed to calling sched() anyway, so no ned to call it internally.
2024-01-04kernel: fix typo in sema assert= vs == (thanks moody)cinap_lenrek
2024-01-04kernel: handle errors in semacquirecinap_lenrek
Move waserror()/poperror() out of the loop, so we can also catch errors from canacquire(). This is theoretically possible if memory has been paged out and we get I/O errors when trying to page it back in.
2024-01-04kernel: .... aaand devswap :)cinap_lenrek
2024-01-04kernel: add extra "New" process state to catch invalid state transitionscinap_lenrek
For ready() to check invalid state transitions, we want to ensure that ready() is never called on a dead proc (or one that is currently dying), however when we create a new process, its initial state was "Dead" until is is ready()d. Instead, introduce the state "New", which is set when the proc is removed from the freelist by newproc(), making New -> Ready -> Running state transition valid. Also make sure we never leave notes to deadly processes or ones that are in "Broken" state.
2024-01-04kernel: forgot portfns.h from last changecinap_lenrek
2024-01-04kernel: don't sched() for clock interrupt when up->state != Runningcinap_lenrek
When we get a clock interrupt, we should not call sched() when the process is not in "Running" state as it is already committed to call sched() itself. (An example is qlock(), just after the unlock() call). As this is basically the same check as done in preempted(), unify both and add a "clockintr" argument to preempted(). Then most trap handlers just become: preempted(irq()); Also, we do not want to call preempted() for traps, as the trap handler has just setup some machine state to resolve the trap. We can wait for the clock interrupt if we really need the preempt.
2024-01-04kernel: make sure process is in Queueing state in qunlock()cinap_lenrek
2024-01-02etherseeq: defer enabling controller until attach(), provide shutdown() functioncinap_lenrek
On pnp(), just allocate descriptors and bring the controller in a halted state. Start the controller and dma in attach(). This prevents MAME from locking up when there is ethernet traffic during bootup.
2024-01-02mt7688/uarti8250.c; fixed interruptsadventuresin9
2024-01-02sgi: make newport graphics work in MAMEcinap_lenrek
MAME doesnt support RGB Map 1 mode so use RGB Map 0 instead. Hardware cursor is screwed up too, so just implement software cursor for now.
2024-01-01ip/dhcpd: don't override local address for gateway casecinap_lenrek
2024-01-01sgi: fix botched conversion to stacks below Proc.cinap_lenrek
2023-12-31libc: add _callmain to share more initialization codeJacob Moody
Before each arch had to implement the _privates array themselves in assembly, which meant it was quite easy for them to get out of sync. This cleans this up to be a single enum and shares this initialization code.
2023-12-31/sys/lib/acid/kernel: fix proctab()cinap_lenrek
2023-12-317l: dont dump constant-pool in the middle of switch/case jump tablecinap_lenrek
2023-12-29?c: fix nodret checkcinap_lenrek
we used to compare the symbol to nodret->s to see if we got the return pointer, but this is wrong as nodret is a OIND, pointing to a ONAME and therefore sym would be nil. instead, just compare the symbol string to ".ret".
2023-12-29qc: fix crash, nodet not nused/initializedcinap_lenrek
2023-12-28mk: Various improvementscinap_lenrek
Variables are lists, just as in rc, so preserve emptry strings ('') in variables properly: FOO='' bar baz should result in FOO=('' bar baz) in the environment, while FOO= becomes a emptry list FOO=(). Get rid of the Evy struct, the environment can be represented as just an array of Symtab pointers, also meaning the value can never be out of sync. Embedd the name string in Symtab struct. It is immutable and dont require the caller to strdup() the name. Make Word's immutable, embedding the string value in the Word struct. This avoids alot of extra allocations. Provide a Strdup() function that handles allocation error. Handle variable overrides from the command line internally, avoiding the maketmp() file. When executing a recipe, pass the body using the -c flag to rc, avoiding a pipe() and fork(). This also has the advntage that rc can optimize the script as it sees it in its entirety and avoid fork() down the line. Make sure not to leak file-descriptors into sub-processes. Do an attempt at freeing memory (mostly for Arc's and environment values).
2023-12-27rc: handle Xeflag in exitnext()cinap_lenrek
2023-12-23ref: check if object is a commit when neededOri Bernstein
2023-12-23git/log: ensure we're starting to log from a commit hashOri Bernstein
2023-12-22kernel: add pc field in QLock for debuggingcinap_lenrek
Maintain a QLock.pc and RWLock.wpc field which is the callerpc() of the last owner of the qlock/wlock. The previous patch that set QLock.use.pc was kind of nonsensical as it will get overridden by the next attempt to acquire the qlock.
2023-12-20libgeometry: fix typo from previous commitrodri
2023-12-20libgeometry: add matrix minor and cofactor functionsrodri
2023-12-19ethervirtio: make multicast work (thanks Arne)cinap_lenrek
> this fixes multicast on hypervisors without a command queue > for the ethernet interface, like OpenBSD. > Right now the driver does not install a multicast function when > no command queue is ava> ilable. > This breaks multicast because the network stack errors out in > netif.c:netmulti. > To fix this, move the check for the queue to the multicast and > promiscuous functions and install those functions unconditionally.
2023-12-18ip/cifsd: dont add pointless logging (already logged when debug is active)cinap_lenrek
2023-09-28cifsd: clarify SMBv1 is supported, not SMB 2/3.Romano
SMB 2/3 is not supported by cifsd, so clarify that in the man page and update teh code to mention in the log file if SMB2/3 is attempted. Also, while in the code, fix a typo, add a few more commands to the explicitly unsupported list, and align the return value for unsupported calls to the SMBv1 spec.
2023-12-18qlock: keep the caller pc in the qlock for debuggingOri Bernstein
Keeping the PC for the qlock call isn't very useful, since it's always going to be the same PC. Instead, set the Lock's pc to the pc of the QLock locker.
2023-12-12cc: don't rearrange constant scaling across unsigned castscinap_lenrek
On 64-bit platforms, when the index being 32-bit unsigned, any calculation there must be done modulo 2^32, but rearranging the factors into the address calculation is done in signed 64-bits yielding the wrong index.