cinap_lenrek [Fri, 2 May 2014 02:23:21 +0000 (04:23 +0200)]
sdide: never timeout or retry scsi commands from the controller driver
this was a big mistake. we should never attempt to
timeout or retry a scsi command from the controller
driver because theres no way to tell how long a
command would take or if a command has side effects
when being retried.
cinap_lenrek [Thu, 1 May 2014 15:24:50 +0000 (17:24 +0200)]
pc64: increase sizes of physical memory bank maps
number of bank slots in Conf.mem[4] was too small
for kenjis machine, set it to maximum 16 (the
size of the RAM map in pc64/memory.c).
also increasing the UPA memory map to 64. the
e820 map on my x200s has 31 entries and many
holes. this gets rid of the "mapfree: ... losing"
messages on boot.
if theres an error transmitting a Tclunk or Tremove request,
we cannot assume the fid to be clunked. in case this was
a transient error, reusing the fid on further requests
will fail.
as a work arround, we zero the channels fid and allocate
a new fid before the chan is reused.
this is not correct as we essentially leak the fid
on the fileserver, but we will still be able to use
the mount.
the previous change tried to work arround this but had the
concequence that only the lastly defined endpoint was
usable.
this change addresses the issue by allowing up to 32 endpoints
per device (16 output + 16 input endpoints) in devusb. the
hci driver will ignore the 4th bit and will only use the
lower 4 bits as endpoint address when talking to the usb
device.
when we encounter a conflict, we map the input endpoint
to the upper id range 16..31 and the output endpoint
to id 0..15 so two distinct endpoints are created.
nusb: workaround for endpoints with same index but different types
nusb code assumes endpoint numbers are unique. It's true in general
case, but it becomes false once the direction bit is ignored. The
commit adds a check so that two endpoints of different types are not
merged into one with Eboth direction. It does overwrite endpoint
though, so it shouldn't be considered as a full fix.
stanley lieber [Tue, 22 Apr 2014 15:49:32 +0000 (11:49 -0400)]
fortunes: i was up at 9am, climbed a mountain, hiked 6 km through 4ft deep slush (the image you are supposed to get is of 12 million overturned slurpee cups, and of geting your groin wet in slurpee), nearly died eating beef vindaloo, wrote some code, talked on the phone, wrote mail, and now it's almost 4am and this is absolutely beyond ridiculous.
the 802.11 spec only specifies the msb of the rate for
Beacon, Probe Response, Association Response, Reassociation Response,
Mesh Peering Open, and Mesh Peering Confirm management frames
...
The MSB of each Supported Rate octet in other
management frame types is ignored by receiving STAs.
this should make no difference but on some netgear ap's not
setting this bit seems to ignore these data rates.
driver sets wifi->rates array to tell wifi layer what
rates it supports. when we receive beacon, we determine
the minimum and maximum data rates and set wn->minrate
and wn->maxrate to point to the entries in wifi->rates.
it is the responsibility of the driver to use this
information on transmit.
wpa support for tcp boot, remove duplicate secstore code from factotum
to run aux/wpa at boot, we need factotum to be running. tho
factotum was started only after the network was configured.
what we do now is start factotum early, not fetching keys
from secstore. once network is available and the auth server
is known, we fetch keys from secstore using auth/secstore in
bootrc.
to pass the authserver for p9 authentication to factotum, we
write it in /net/ndb and the special _authdial() in factotum
will picks it up.
as we are using auth/secstore binary in any case, we remove
the duplicated secstore code from factotum and make it just
exec auth/secstore to fetch the keys on startup (unless -n
or -S is specified).
load x-stretched scanline and use image replication bit to let
devdraw do the y-stretching. this reduces slow RGB15 -> display
conversions as devdraw caches small numbers of converted source
scanlines (one in hour case). setting pixels should also be a
bit faster. (only 3 writes instead of 9 for x3 scaling)
libmemdraw: improve readbyte() and writebyte() routines
remove unused memsetb() routine.
replace foo ? 1 : 0 with foo != 0
avoid double calculation of rgb components in readbyte()
handle byte aligned color components in writebyte()
which lets us avoid the read-modify-write and the shifting.
surprisingly, the branches in the loop are way less important
than avoiding the memory access.
this change makes ganes/snes playable at -3 scaling.
games/snes: upsample audio to 44100 hz instead of setting audio device frequency
used to set audio device frequency thru /dev/volume tho
only ac97 driver supports this. as a quick work arround,
upsample the 32000 hz audio signal to 44100 hz (without
any interpolation).
move the sample buffer room check from audiosample() into
dspstep() so that when the buffer is full (shouldnt happen),
we wont advance dspstate so samples will not get dropped.
libc: allow announce address of the form #I1/tcp!*!564
we allow protocol path to begin with # for dial, so should
allow this for announce as well. this is primarily usefull
when booting the fileserver to listen on alternate ip stack.
process acpi interrupt source override entries in a 2nd pass over the madt (APIC) table (thanks erik)
according to erik, virtualbox puts the source overrides
before the ioapic entries so the addirq() call fails
as no ioapics have been declared yet. use a second pass
over the table after we processed the apic entries.
devproc: change address format in segment file to %8p (thanks eekee)
the original format for addresses was %8lux which was changed
to %p for amd64. this broke linuxemu which assumes fixed format
in the segment file. as a compromize we change it to %8p and
amd64 port of linuxemu will hopefully use a more robust parser :)
sam, acme: fix character classes quoting for 21-bit runes
quote handling was broken with 21-bit runes. nextrec()
returned quoted rune as long rune | (Runemax+1) to escape
it.
with 16-bit runes, storing that long into 16-bit Rune
would automatically remove the escaping, but with 21-bit
runes, Rune is uint32 so the escaping would remain. we
now use (Runemask+1) instead, and mask the escaping off
explicitely when storing back to Rune.
cinap_lenrek [Sun, 30 Mar 2014 02:29:04 +0000 (04:29 +0200)]
grep: fix wrong rlcass splitting (thanks erik and kenji)
add 0xffff to tab1 as range 0xffff-0x10ffff has 4 byte utf-8 sequence.
use Runemax (0x10ffff) instead of Runemask (0x1fffff) to denote
the last valid rune for inverted [^] match as Runemask is out of the
valid rune space.
when the previous instruction sets the zero flag,
we can remove the CMPL/CMPQ instruction.
this removes compares for zero/non zero tests only.
it only looks at the previous non-nop instruction
to see if it sets our compare value register.
cinap_lenrek [Wed, 26 Mar 2014 17:39:58 +0000 (18:39 +0100)]
audio/oggdec: wait for pcmconv child process to exit
we have to wait for the pcmconv process to exit before
exiting yourselfs because otherwise pcmconv could
keep /dev/audio open and prevent further reopens for
a short period of time.
cinap_lenrek [Mon, 24 Mar 2014 18:00:34 +0000 (19:00 +0100)]
pc64: prevent dat.h from getting overwritten by ../pc/dat.h
the rule that was used to copy header files from ../pc
accidently overwrote dat.h when ../pc/dat.h was updated
because it matched on all *.h files that was also found
in ../pc directory. change to exact match on $PCHEADERS
to prevent this.
cinap_lenrek [Sun, 23 Mar 2014 17:47:59 +0000 (18:47 +0100)]
hget: revert hget -v change, this needs more thought
problems that need to be addressed:
- reads in the whole /proc every second for no reason
- breaks when http server doesnt include Content-Length header
- length is wrong for continued download (-o option)