ctwm_app_menu: Rewrite largely in awk for ~20-100x speedup.
Previously took ~2.5sec on my laptop, now 0.03sec.
Previously took ~10sec on a wiiu, now ~0.5sec.
Output is meant to be byte-for-byte identical, except possibly in
cases that could have screwed up ctwm by quoting shenanigans which
are now escaped. (I hope the escape sequences work, didn't actually
check how ctwm interprets them.) Can maybe support Exec line with
`"' in them by deleting some code (marked XXX) but I didn't test that
it actually works that way.
PR bin/59958: ctwm: long delay during ctwm_app_menu
make: print stack traces to the correct file
When running make -dFlog, the stack trace was printed to stderr twice,
instead of once to log and once to stderr.
wiiufb: Only use indirect register access during early boot
The current implementation relies on all register accesses being done 1)
before interrupts are enabled and secondaries have been started, or 2)
with KERNEL_LOCK held.
This change makes the driver switch from indirect accesses via the
Latte block to direct accesses through the GX frame at 0xc2000000 once
the FB driver attaches, removing the need for all register accesses to be
serialized.
When reading from an i2c device register, use repeat start on the bus.
This avoids the situation where another master gets the bus between our
register select (i.e. write) and the following read.
Add a delay after accessing our registers for the PIC implementation
of the PCF8584 (e.g. on the Sun Ultra 45).
Change swapregs to flags to handle multiple quirks and set the flags
appropriately in the Ebus frontend.
usbnet(9): Tighten tx path.
1. Verify, don't just assert, that the packet length is below the
buffer size. Even if all the callers enforce the interface's MTU,
I can't prove that the usbnet(9) tx buffer size is an upper bound
enforced on the interface's MTU.
We can remove the check later if we do enforce that upper bound at
some point, which would probably be worth doing anyway since the
MTU is checked earlier in the tx path.
2. Assert, don't check, that c->unc_xfer is nonnull. We can only
reach the tx path if we cross if_init=usbnet_init_rx_tx, and that
(via usbnet_tx_list_init) is guaranteed to fail and back out
unless all of the usbnet_chain unc_xfers get initialized.
3. If we can't fit the packet into a buffer, drop it -- don't leave
it in the queue to try again when it still won't fit in the
buffer.
[7 lines not shown]