Commit graph

3738 commits

Author SHA1 Message Date
cinap_lenrek
0e03a5f9fd kernel: replace ulong with uintptr in ucallocb() and fix unneeded parentheses 2014-12-16 09:41:05 +01:00
cinap_lenrek
5c29603f50 kernel: remove obsolete comment regarding Mntcache size in */main.c 2014-12-16 08:11:21 +01:00
cinap_lenrek
8309f15c36 kernel: new mount cache
this is a new more simple version of the mount cache
that does not require dynamic allocations for extends.

the Mntcache structure now contains a page bitmap
that is used for quick page invalidation. the size
of the bitmap is proportional to MAXCACHE.

instead of keeping track of cached range in the
Extend data structure, we keep all the information
in the Page itself. the offset from the page where
the cache range starts is in the low PGSHIT bits and
the end in the top bits of Page.va.

we choose Page.daddr to map 1:1 the Mountcache number
and page number (pn) in the Mountcache. to find a page,
we first check the bitmap if the page is there and then
do a pagelookup() with the daddr key.
2014-12-16 05:41:20 +01:00
cinap_lenrek
bc97fa79b1 audio/flacdec: fix pcmconv pipeline race (thanks mischief and henesy) 2014-12-15 07:26:03 +01:00
cinap_lenrek
523c33bb6f kernel: minor changes to mount cache
change page cache ids (bid) to uintptr so we use the full
address space of Page.daddr.

make maxcache offset check consistent in cread().

use consistent types in cupdate() and simplify with goto.

make internal functions static.

use nil instead of 0 for pointers.
2014-12-15 06:28:27 +01:00
cinap_lenrek
c8ed49da60 xen: fix cross build 2014-12-15 01:43:31 +01:00
cinap_lenrek
07a776fad9 kernel: use new disk/mkfs -o option to get proper source filename list for bootfs.proto 2014-12-15 01:04:05 +01:00
cinap_lenrek
5c1803e1ad disk/mkfs: add -o flag to list source files 2014-12-15 00:52:22 +01:00
cinap_lenrek
2e94406e7f merge 2014-12-14 22:27:06 +01:00
cinap_lenrek
8d6171f1ae kernel: remove *.acid files in nuke target instead of $CONF.clean target 2014-12-14 22:25:15 +01:00
ftrvxmtrx
0dc1929379 png: fail on invalid bpc 2014-12-14 22:20:06 +01:00
cinap_lenrek
67bed722f2 kernel: get rid of /boot/boot parametrization
there is no use for "bootdisk" variable parametrization
of /boot/boot and no point for the boot section with its
boot methods in the kernel configuration anymore. so
mkboot and boot$CONF.out are gone.

move the rules for bootfs.paq creation in 9/boot/bootmkfile.
location of bootfs.proto is now in 9/boot/bootfs.proto.
our /boot/boot target is now just "boot".
2014-12-14 22:10:34 +01:00
cinap_lenrek
1d674abe9c xen: fix mtrr dummy functions 2014-12-14 21:58:02 +01:00
cinap_lenrek
035aacf6f5 bio: add Bfdopen() from plan9port 2014-12-14 20:21:42 +01:00
cinap_lenrek
4afb56f570 kernel: evaluate dependencies of bootfs.proto files for bootfs.paq
expand the list of files specified in bootfs.proto and use them
as dependencies to bootfs.paq rule. this way, bootfs.paq is
regenerated when the to be included files have been modified.
2014-12-14 00:00:59 +01:00
ftrvxmtrx
96525edaae various cmds: replace magic numbers with Kdel/Keof, etc 2014-12-13 21:58:49 +01:00
cinap_lenrek
feb7702c9e kernel: correct dependency for printstub.$O instead of print.$O 2014-12-13 21:44:51 +01:00
mischief
ff4daa7e93 stats: handle 'q' to close
a side effect of this is keys typed other than q/Del no longer get drawn on top of the window.
2014-12-13 11:28:16 -08:00
cinap_lenrek
25a9cc3adb pc, pc64: untangle embedded controller (ec) dependency from devarch 2014-12-13 06:23:23 +01:00
cinap_lenrek
6a3b9012d5 kernel: generate dummy bootscreeninit() function when building without vga device 2014-12-13 05:29:51 +01:00
cinap_lenrek
9be64bcb8d ndb/cs: fix spelling (thanks mischief) 2014-12-13 23:16:04 +01:00
stanley lieber
00334c0407 fortunes: UX-wise (and generally speaking, for most common uses of a computer these days), Plan9 is, sadly, almost useless. 2014-12-11 14:45:51 -05:00
stanley lieber
e14d624974 qmail: call mail instead of smtp with the wrong path 2014-12-11 14:45:16 -05:00
cinap_lenrek
651fa5bd50 cfs: change default mountpoint to /mnt/cfs and fix the manual (thanks mischief) 2014-12-11 20:38:04 +01:00
cinap_lenrek
854d028db9 acme: fix buffer overrun in xfidutfread() and xfidruneread(), cleanup
the utf8 buffers b1 where allocated from fbufalloc() which gives
us BUFSIZE bytes, but Xfid->count can be bigger than that. so just
emalloc() the requested number of bytes.

when converting from Runes to utf-8, we have to account for the
terminating '\0' byte snprint() places, so fix the maxrune number
calculation instead of using BUFSIZE+1 as buffer size.
2014-12-11 20:20:47 +01:00
cinap_lenrek
86e63c36ed kbmap: fix sprint() buffer overflow (thanks silasm)
A buffer can be overflowed in the init function of kbmap.c by using a filename of more than 112 characters.

sample output:
% cd /sys/lib/kbmap
% touch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
% kbmap
kbmap 1974: suicide: sys: trap: fault write addr=0xa6a96510 pc=0x000011df
offending code is most likely the call to sprint in the init function of /sys/src/cmd/kbmap.c,
which in this case writes /sys/lib/kbmap/$file to a 128-bit buffer.
I'm willing to submit a patch for this myself along with a few minor improvements/fixes to kbmap
if I can figure out the nuances of doing so.

--silasm
2014-12-11 18:32:50 +01:00
cinap_lenrek
ffa761beae plan9.ini(8): fix typo (thanks ftrvxmtrx) 2014-12-11 17:03:01 +01:00
cinap_lenrek
5ae58296a9 plan9.ini(8): etheryuk 2014-12-10 19:38:44 +01:00
cinap_lenrek
ec495f37ec plan9.ini(8): document bcm and virtio ethernet and hda and ac97 audio. 2014-12-10 19:29:46 +01:00
cinap_lenrek
6357ff0e7b plan9.ini(8): remove factotumopts= (not implemented), add secstore=, clarify domain name use for fs= and auth= 2014-12-10 18:34:08 +01:00
cinap_lenrek
aa2422b5eb bootrc: keep original address when ndb/dnsgetip fails and let dial complain 2014-12-10 18:02:41 +01:00
cinap_lenrek
d4076731f1 bootrc: use "address" instead "ip" in wording netboot questions, as we domain names are allowed now. 2014-12-10 17:37:53 +01:00
cinap_lenrek
b305ea4a3d merge 2014-12-10 03:24:21 +01:00
cinap_lenrek
ba6cd37412 bootfs: remove disk/kfs fileserver, nobody uses it 2014-12-10 03:22:59 +01:00
cinap_lenrek
23b3407663 bootrc: add ndb/dnsgetip resolver to bootfs so domain names can be used for fs=, auth= and secstore= (thanks mischief) 2014-12-10 03:22:14 +01:00
cinap_lenrek
d75f5a24ba bootrc: preserve #ec/fs (thanks _sl) 2014-12-10 03:16:36 +01:00
mischief
23d6c796cd ndb(8): document ndb/dnsgetip 2014-12-09 17:33:09 -08:00
cinap_lenrek
1985bebbdd dnsgetip: filter negative answers, remove -f flag, use dnsgetip logfile 2014-12-10 02:30:25 +01:00
mischief
230cee347f ndb: add dnsgetip program to resolve A and AAAA records during bootstrapping 2014-12-09 16:18:08 -08:00
cinap_lenrek
665f0c8e3e bootrc: handle multiple fs and auth addresses in netboot, always set auth= in /net/ndb 2014-12-10 00:30:07 +01:00
cinap_lenrek
17566b4dd3 bootrc: do not pass authserver with -a flag to factotum, handle multiple secstore addresses
factotum is started in bootrc before the network is setup
(as we need it to negotiate wpa key for wifi). once, the network
is setup, the bootstrap authservers are passed in /net/ndb,
which factotum reads when doing bootstrap authdial. it does
this only when no authserver was specified earlier! but we
want net.rc to select the proper bootstrap authserver...

the $secstore variable takes precedence over $auth. as
there is no connection server yet, we have to select the set
of servers here and pass them to secstore with -s flag.
note that this will work if multiple addresses where
specified.
2014-12-09 22:26:30 +01:00
cinap_lenrek
f9d379974a factotum: accept multiple bootstrap auth servers in /net/ndb and -a arguments
we might have to deal with multiple bootstrap auth server
ip addresses (ipv4 and ipv6) in the future, so deal with them.
2014-12-09 22:07:37 +01:00
cinap_lenrek
ee6936365f secstore: allow multiple server addresses in $secstore and multiple -s arguments
on bootstrap, we might have to deal with multiple auth server ip
addresses (ipv4 and ipv6), so deal with it.
2014-12-09 21:53:07 +01:00
mischief
98645db9ab devsegment: fix segmentcreate function signature 2014-12-08 23:16:22 -08:00
cinap_lenrek
8ec06b6fc6 merge 2014-12-09 03:25:52 +01:00
cinap_lenrek
a0bb446d75 ethervirtio: fix queue notifications and interrupt flags, avoid useless notifications
bug: Rnointerrupt was used on Vqueue.used.flags instead of
Vqueue.avail.flags.

introduce vqnotify() function that notifies the device
about available ring advancement.

avoid queue notifications there that can be slow by
checking Unonotify flag in Vqueue.used.flags.

keep track of the number of notifications in the queue.
2014-12-09 03:23:53 +01:00
cinap_lenrek
469a10f1d9 hgwebfs: add fake add_handler method for HTTPRangeHandler()
provide a add_handler() so code trying to add
byterange.HTTPRangeHandler will succeed. webfs
does handle "206 Partial Content" already.
2014-12-09 23:11:05 +01:00
mischief
ee2d30984f ip/ipconfig: treat /32 mask as /0
some dhcp servers send a mask of 255.255.255.255 to indicate the gateway is directly routeable.

thanks to david du colombier for this patch.
2014-12-08 17:27:40 -08:00
cinap_lenrek
c217da0b5b ethervirtio: feature negotiation, allow setting mac address, dont read isr from ifstatus, avoid indirection
- properly negotiate Fctrlrx feature bit for promisc and multicast.
- allow setting mac address with ea= option from plan9.ini
- dont read the isr register from ifstats() as it has the side effect of reseting isr status
- embedd the Vqueue array in the Ctlr structure avoiding indirection
- add a interrupt counter Vqueue.nintr for statistical purposes
- only read network status register if the feature has been negotiated
- change name to "virtio" as "ethervirtio" is kind of redundant
2014-12-08 19:19:53 +01:00
cinap_lenrek
501e69d010 ndb/dns: ignore terminating authoritative flag for no-answer when more nameservers are provided
continue recursing when we get empty but non-negative answer
from a (claimed) authoritative nameserer that provides more
nameservers.

this fixes wordpress dns:

63766.3: sending to 192.0.80.93/ns1.wordpress.com bossypally.files.wordpress.com ip
63766: rcvd OK from 192.0.80.93 (authoritative)
	Q:    bossypally.files.wordpress.com ip
	Auth: files.wordpress.com              5 min           ns   	mdns1.wordpress.com
	      files.wordpress.com              5 min           ns   	mdns2.wordpress.com
	      files.wordpress.com              5 min           ns   	mdns3.wordpress.com
	      files.wordpress.com              5 min           ns   	mdns4.wordpress.com
	      files.wordpress.com              5 min           ns   	mdns5.wordpress.com
	Hint: mdns1.wordpress.com              4 hr            ip   	192.0.75.7
	      mdns2.wordpress.com              4 hr            ip   	198.181.117.7
	      mdns3.wordpress.com              4 hr            ip   	198.181.116.7
	      mdns4.wordpress.com              4 hr            ip   	198.181.118.7
	      mdns5.wordpress.com              4 hr            ip   	192.0.74.7


63766.4: sending to 192.0.75.7/mdns1.wordpress.com bossypally.files.wordpress.com ip
63766: rcvd OK from 192.0.75.7 (authoritative)
	Q:    bossypally.files.wordpress.com ip
	Ans:  bossypally.files.wordpress.com   5 min           ip   	192.0.72.2
	      bossypally.files.wordpress.com   5 min           ip   	192.0.72.3
----------------------------
answer bossypally.files.wordpress.com   5 min           ip   	192.0.72.2
answer bossypally.files.wordpress.com   5 min           ip   	192.0.72.3
----------------------------

note the authoritative flag in the first response from ns1.wordpress.com that
would otherwise terminate the search.
2014-12-08 01:26:07 +01:00
cinap_lenrek
887d02274d ethervirtio: fix missing */ 2014-12-07 18:20:47 +01:00
cinap_lenrek
6b5d69391c ethervirtio: implement promisc and multicast mode, cleanup
add vctlcmd() function to setup and comlete control commands.
handle Vctlq and implement promiscuous and multicast mode commands.
remove Vqueue.block[] and Vqueue.header. these are not properties
of the queue (Vctlq as no block array).

the block[] array only needs to be half the queue size as we use
two descriptors per packet.

fix broken shutdown() and remove useless ctl() function.
2014-12-07 17:58:51 +01:00
cinap_lenrek
aff0dc5e67 ethervirtio: avoid dumping packets in txproc when ring gets full 2014-12-07 15:34:53 +01:00
cinap_lenrek
964dafbdf0 9boot(8): -from 2014-12-07 14:34:15 +01:00
cinap_lenrek
972577b61e strcat(2): fix strchr() and strrchr() function prototypes (thanks BurnZeZ) 2014-12-07 14:26:41 +01:00
mischief
1fe69754b6 pc, pc64: add and enable ethervirtio driver
many thanks to cinap_lenrek, erik quanstrom and david du colombier for feedback and testing.
2014-12-06 22:13:44 -08:00
mischief
e584f7f374 resize: fix typo 2014-11-26 19:32:16 -08:00
mischief
250e120400 astro: fix typo 2014-11-26 18:56:00 -08:00
cinap_lenrek
97e7b5f71d games/md: fix interlace at scale 2 2014-11-22 20:35:28 +01:00
aiju
41ef4524ab games/md: interlacing, sort of 2014-11-22 19:40:36 +01:00
cinap_lenrek
f55c43fe8d audio(1): add mixfs to NAME section 2014-11-22 18:17:06 +01:00
cinap_lenrek
af8657b8da pc, pc64: more conservative pcirouting
when we hit a conflict where the pci INTL register gives us
a different irq than we get from southbridge irq router, dont
just change the router setting to the bios assigned irq (that
was previously known as the BIOS workarround), but assume the
southbridge setting to be valid and change the pci INTL register
on the device to it.

only when the router link doesnt seem to be configured or
disabled, then program the router to the irq that bios asisgned
in the INTL register.

the reason is that changing the router setting changes the
irq routing for *all* devices on the same link and changing
it breaks previously checked and valid interrupt routings.
(so happend with virtualbox where the last device on the bus
is some powermanagement device that has wrong INTL setting
and changing the routing breaks the ethernet interrupts)

this change shouldnt affect modern machines which use ioapic
and mp tables or acpi for pci interrupt routing.
2014-11-22 17:23:46 +01:00
cinap_lenrek
529082d34d pc, pc64: preserve last KB of conventional memory (might contain bios tables)
we add new function convmemsize() that returns the size of
*usable* conventional memory that does some sanity checking
and reserves the last KB below the top of memory pointer.

this avoids lowraminit() overriding potential bios tables
and sigsearch() going off the rails looking for tables
at above 640K.
2014-11-20 19:05:43 +01:00
cinap_lenrek
5a6131ea09 games/snes: do message display in screenproc
do the message drawing from the screenproc so there are no
race conditions with libdraw.
2014-11-20 01:26:31 +01:00
cinap_lenrek
dc2c8dca5b games/md, games/snes: fix memory leak on resize 2014-11-19 21:01:36 +01:00
cinap_lenrek
a1066aa992 hjfs(8): theres no chown in plan9, link to chgrp(1) manpage. 2014-11-19 01:31:20 +01:00
cinap_lenrek
a28263f7b2 games/snes: fix extern pic declaration to match reality 2014-11-18 17:03:45 +01:00
cinap_lenrek
e15d0126ad games/md: apply same screen flush changes from games/snes 2014-11-18 17:00:44 +01:00
cinap_lenrek
763231588c games/snes: flush screen in parallel to audio (fixes buffer underruns on x200s)
the x200s is too slow on a single core to keep up without
audio buffer underruns, so the idea is to flush screen
in parallel to witing audio samples in a separate process.

with the proc, we also can keep updating the screen on resize
when paused.
2014-11-18 16:07:34 +01:00
aiju
844612fcb8 games/snes: save more audio state 2014-11-17 17:00:41 +01:00
cinap_lenrek
dbb320ca90 audiohda: add pci ids for Intel 8 Series Lynx Point (thanks quux)
Based on OpenBSD driver:
- /sys/dev/pci/azalia.c rev 1.209
- /sys/dev/pci/pcidevs rev 1.1689
- only tested on amd64; machine is an Acer V5-573G
    exact model: V5-573G-74518G1Takk
2014-11-17 10:12:29 +01:00
cinap_lenrek
fbdaa03d84 wpa: handle essid: with whitespaces from ether ifstats file 2014-11-17 00:53:02 +01:00
cinap_lenrek
2310258d57 wpa: fix quoting for essid with spaces 2014-11-17 00:12:55 +01:00
BurnZeZ
73eea8402b abaco: cleanup, handle image/x-icon, don't use backspace as a hotkey, and remove urlconvience()/related functions 2014-11-16 09:58:21 -05:00
aiju
170913631b nintendo(1): NTSC only 2014-11-16 15:17:34 +01:00
cinap_lenrek
242007de7c sed: fix error handling for "Output line too long" and other stuff
sed just continued writing past genbuf when it should stop
with "Output line too long".

quit when we get unspecified options.

stupid casts from long to char* for no reason.

some 0 vs nil cleanup.
2014-11-16 01:48:18 +01:00
cinap_lenrek
d069c9b486 pc: get rid of fixed 8MB memory map (now dynamically between 4 to 16 MB depending on kernel size)
we now do mapping of KZERO to ROUND(end, 4*MB) where
end needs not to be above 16MB. this allows for bigger
kernels.
2014-11-15 15:21:24 +01:00
cinap_lenrek
4e00cf6b17 pc64: get rid of fixed 8MB INIMAP and dynamically map KZERO-end in l.s
traditionally, the pc kernel mapped the first 8MB of physical
address space. when the kernel size grows beyond that memory mapping,
it will crash on boot and theres no checking in the build process
making sure it fits.

with the pc64 kernel, it is not hard to always map the whole
kernel memory image from KZERO to end[], so that the kernel will
always fit into the initial mapping.
2014-11-15 11:43:05 +01:00
stanley lieber
62f5818481 fortunes: (no plan9 to hand) 2014-11-14 12:11:42 -05:00
cinap_lenrek
9841f7f3f5 upas/fs: handle ramfs and hjfs "file locked" error 2014-11-14 10:09:29 +01:00
cinap_lenrek
52c1f712ec upas/fs: handle cwfs "file is locked" error message 2014-11-14 23:36:18 +01:00
cinap_lenrek
f51f73bdca ip: implement "hangup" ctl for udp protocol 2014-11-13 16:47:19 +01:00
cinap_lenrek
9840ce91cf kernel: make use of nil vs 0 consistent in qio.c (sorry) 2014-11-13 16:46:41 +01:00
cinap_lenrek
402140675f rootstub: create /sys/src/pkg and /sys/lib/pkg directories 2014-11-13 10:23:53 +01:00
cinap_lenrek
585f475c01 httpfile(4): document webfs dependency 2014-11-12 12:33:14 +01:00
cinap_lenrek
c79dc3263e httpfile: use webfs, fix 9p flushes
we can improve performance alot by using webfs which
does http keep alives for us, so connection setup
overhead is eleminated.

fix 9p flushes and double frees.
2014-11-12 12:03:51 +01:00
stanley lieber
5540ca6b68 nintendo(1): more detail about gba 2014-11-11 14:57:45 -05:00
stanley lieber
994977e4d0 nintendo(1): document games/gba 2014-11-10 01:05:18 -05:00
cinap_lenrek
bd7e387b51 pc64: fix comment description of pc64 kernel configuration 2014-11-10 12:22:50 +01:00
cinap_lenrek
28977d24b2 ether8169: add support for RTL8411B (thanks quux)
from quux 9fans post:

- based on the following changes in FreeBSD/OpenBSD:
http://svnweb.freebsd.org/base?view=revision&revision=257305
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/re.c.diff?r1=1.144&r2=1.145&f=h
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/rtl81x9reg.h.diff?r1=1.76&r2=1.77&f=h
http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/ic/rtl81x9reg.h.diff?r1=1.83&r2=1.84&f=h
- sysinfo _with_ patch, on amd64 (please disregard non-working audio and iwl stuff):
http://sysinfo.9front.org/src/86/body
- tested only on amd64; machine is an Acer V5-573G (exact model: V5-573G-74518G1Takk)
2014-11-10 12:13:07 +01:00
cinap_lenrek
2f8ee8fb4e pc, pc64: command flag sometimes doesnt reset, just check for IBF 2014-11-10 00:53:22 +01:00
cinap_lenrek
95dbc72801 io: add -E flag to access embedded controller space 2014-11-10 00:35:07 +01:00
cinap_lenrek
ee05bbccbc merge 2014-11-10 00:06:01 +01:00
cinap_lenrek
bcb67353c1 pc, pc64: provide access to embedded controller with #P/ec file 2014-11-10 00:04:37 +01:00
mischief
895d883bbd filter(1): fix typo i introduced
this is a good example of why blindly copy-pasting patches is a bad idea.
2014-11-09 13:41:06 -08:00
cinap_lenrek
b18a641397 kernel: remove implicit Proc* argument from procctl()
procctl() is always called with up and it would not
work correctly if passed a different process, so
remove the Proc* argument and use up directly.
2014-11-09 08:19:28 +01:00
cinap_lenrek
1ffcdbab88 dont flush screen when hiding software cursor
we can avoid some flickering when removing the software cursor
from the shadow framebuffer by avoiding the flushscreenimage()
call.

once the cursor is redrawn, we flush the combined rect of its
old and new position in one go.
2014-11-08 11:48:38 +01:00
cinap_lenrek
e4af9bc392 smtpd: cleanup hello() domain check code
theres no point in doing domain checks on literal ip addresses,
so handle that case early.
2014-11-08 09:00:04 +01:00
cinap_lenrek
4908ea43d7 merge 2014-11-08 05:23:59 +01:00
cinap_lenrek
9dfe587b27 smtpd: accept literal ipv6 addresses in HELO/EHLO 2014-11-08 05:22:25 +01:00
mischief
cd3a742b32 all: typo fixes from ray@raylai.com 2014-11-07 10:39:50 -08:00
cinap_lenrek
797cc13c70 fix dangerous werrstr() usages
werrstr() takes a format string as its first argument.
a common error is to pass user controlled string buffers
into werrstr() that might contain format string escapes
causing werrstr() to take bogus arguments from the stack
and crash.

so instead of doing:
	werrstr(buf);

we want todo:
	werrstr("%s", buf);

or if we have a local ERRMAX sized buffer that we can override:
	errstr(buf, sizeof buf);
2014-11-07 12:51:59 +01:00
cinap_lenrek
5364fa720d libc: import cleaned up syslog() function from sources
this fixes a potential format string problem where the
error string is passed to werrstr() as fmt. also, the
directory comparsion is simplified in this version using
a helper function.
2014-11-07 08:42:19 +01:00
cinap_lenrek
958d698bf8 libc: improve dial error handling
when dial is called with a generic dialstring, it will try
/net and /net.alt in sequence. error out if the /net dial
gets interrupted and do not continue dialing /net.alt.

reduce stack usage by using the swaping nature of errstr()
instead of keeping two error string buffers on the stack.
2014-11-07 08:10:19 +01:00
cinap_lenrek
a0e001a234 devproc: reset p->pdbg under p->debug qlock in procstopwait()
theres a race where procstopwait() is interrupted by a note,
setting p->pdbg to nil *before* acquiering the lock and
and pexit() and procctl() accessing it assuming it doesnt
change under them while they are holding the lock.
2014-11-07 05:21:42 +01:00
cinap_lenrek
20cc2799af mouse(2): fix atomouse (thanks qrstuv) 2014-11-06 04:59:07 +01:00
cinap_lenrek
ea80ea451d libdraw: fix atomouse 2014-11-06 04:42:20 +01:00
mischief
9f75e55216 libc: allow dial to be interrupted
previously, if dial was interrupted by an alarm or other note while connecting to a host that resolved to multiple ips, dial would ignore the interruption and try the next host. now dial properly returns with error when it is interrupted.
2014-11-05 17:24:55 -08:00
cinap_lenrek
2c1dc1aa4f fix some manpage cross references 2014-11-05 21:00:23 +01:00
cinap_lenrek
3f09d4b623 acpi: fix pcibusno() when PCI0._ADR = 0
libaml comresses zero integer as nil, so remove the
nil check. this makes interrupts work in vmware with
efi.
2014-11-04 06:42:39 +01:00
cinap_lenrek
f5e45a02d4 pc: enable page size extension early in apbootstrap
vmware in efi mode brings application processors up
with CR4 = 0 (pse disabled) which makes us page fault
when accessing the ap's pdb which might be in a 4MB
mapping when the boot processor used pse to setup
page tables.

so we unconditionally enable pse in apbootstrap
(and disable pae in case of surprises).
2014-11-04 05:52:42 +01:00
cinap_lenrek
32b5b2f42d 9boot(8): remove redundant "the" 2014-11-02 21:25:37 +01:00
cinap_lenrek
9916e03947 9boot(8): improve efi documentation 2014-11-02 21:22:03 +01:00
cinap_lenrek
9ac3a0c39e wpa: fork note group when going to background (thanks jpm)
bug: as jpm pointed out, when we run aux/wpa in rio window
and delete the window, aux/wpa was killed as it shared the
note group of the window.

fix: fork the notegroup.
2014-11-02 17:23:10 +01:00
cinap_lenrek
bb95002c2d pc, pc64: implement acpi reset (for efi)
x230 booted in efi only (no csp) mode hangs
when traditional i8042reset() keyboard reset
is tried.

so we try acpireset() first which discoveres
and writes the acpi reset register.
2014-11-02 03:52:53 +01:00
cinap_lenrek
670493fe5e realemu: make sure instruction arguments are initialized even when decoding traps 2014-11-02 00:50:37 +01:00
cinap_lenrek
2020190f94 pc, pc64: more sanity checking for lowraminit() 2014-11-02 00:32:46 +01:00
cinap_lenrek
153f96ebc6 pc64: remove unused pdballoc and pdbfree counters from mach structure 2014-11-01 20:53:36 +01:00
cinap_lenrek
5c5daef9f6 dist: generate efi bootable cd image 2014-10-31 20:59:35 +01:00
cinap_lenrek
bb33ba6b9a nusb/kb: dont set boot protocol on HidCSP interface when we failed to read report descriptor (thanks aap_)
this fixes wireless keyboard/mouse on raspi.
2014-10-31 20:40:13 +01:00
cinap_lenrek
634c55543a efi: generate /386/efiboot.fat for generating efi bootable cd images (see -E option of mk9660) 2014-10-31 20:07:54 +01:00
cinap_lenrek
c7a5345aa6 efi: iso filesystem support for cdrom booting
instead of including kernel and config in the efi
fat image, we can just include the loaders and
read the plan9.ini and kernel from iso filesystem
just like the bios loaders.
2014-10-31 19:43:47 +01:00
cinap_lenrek
5f91d3f484 efi: add test targets for iso and fat (for documentation only) 2014-10-31 03:15:15 +01:00
cinap_lenrek
2cfbc3c1cb mk9660: add -E option to create EFI boot entry 2014-10-31 03:06:09 +01:00
cinap_lenrek
4bfa18a5d1 bcm: fix baudrate setting for serial console (thanks to aap and hiro)
the uartmini enable function used to override the baud
register so the effecive baudrate was always set to
115200 baud.

now the default baudrate of 9600 is set correctly and can
be changed in the console= boot parameter.

thanks aap and hiro for debugging, pizza and beer :)
2014-10-30 20:13:44 +01:00
cinap_lenrek
482e03c64d merge 2014-10-29 17:31:37 +01:00
cinap_lenrek
840ade48c4 fix syslog() use with linefeeds for various programs 2014-10-29 17:29:09 +01:00
cinap_lenrek
4616c93e8d cs: fix linefeeds in syslog(), cleanup 2014-10-29 03:20:43 +01:00
cinap_lenrek
fe23dcefd4 cs: use /net/ether* instead /net/ether[0123], dont remove srv file with -n, dont write dns logfile 2014-10-29 02:43:18 +01:00
stanley lieber
6213e137ff newt: implement ned-style address ranges and overhaul h command to suit 2014-10-28 00:38:58 -04:00
cinap_lenrek
c38cd50805 rio: dont serve a kbd file per window when we didnt got one from the environment
9vx doesnt provide a /dev/kbd file and rio faking one
up causes problems with vncv. (issue #223)
2014-10-25 02:05:44 +02:00
stanley lieber
88486c7529 fortunes: this exact error message is in the fortunes file. 2014-10-24 14:40:48 -04:00
cinap_lenrek
fa3e71ab80 efi: change eficonfig ordering so memconf() is first, dont fallback to fs when /cfg/pxe/ file isnt there
having the memconf() (*e820=) last clutters the screen.
do it first, so we can read *acpi= and *bootscreen=
prints.

we want to continue using tftp even when the /cfg/pxe/$ether
file is not found. only when we detect no pxe/dhcp session,
then we switch to local filesystem (non-network boot).
2014-10-24 00:40:09 +02:00
cinap_lenrek
3bb7ad61aa lib9p: prevent files from being created in deleted directories (thanks BurnZeZ) 2014-10-23 00:43:27 +02:00
cinap_lenrek
89e6315699 lib9p: fix .. walk crash in deleted directory (thanks BurnZeZ)
to reproduce:

 % ramfs; cd /tmp
 % mkdir foo; cd foo
 % pwd
 /tmp/foo
 % rm /tmp/foo
 % pwd
 /tmp/foo
 % ls
 % ls /tmp
 % ls ..
 ramfs 202751: suicide: sys: trap: fault read addr=0x0 pc=0x0000e46d
 ls: ..: '..' mount rpc error
2014-10-23 23:59:16 +02:00
cinap_lenrek
16e08adb32 efi: add initial pxe support (v4 only) 2014-10-23 23:11:49 +02:00
cinap_lenrek
e81e1a4aed pc, pc64: make mtrr() callable from interrupt context and before mpinit
to make it possible to mark the bootscreen framebuffer
as write combining in early initialization, mtrr() is
changed not not to error() but to return an error string.

as bootscreen() is used before multiprocessor initialization,
we have to synchronize the mtrr's for every processor as
it comes online. for this, a new mtrrsync() function is
provided that is called from cpuidentify() if mtrr support
is indicated.

the boot processor runs mtrrsync() which snarfs the
registers. later, mtrrsync() is run again from the
application processors which apply the values from the
boot processor.

checkmtrr() from mp.c was removed as its task is also
done by mtrrsync() now.
2014-10-21 06:03:03 +02:00
cinap_lenrek
dfe8c8bffb 9boot(8): document efi booting 2014-10-19 21:55:19 +02:00
cinap_lenrek
bcc65db171 pc, pc64: lookup pci device for bootscreen() and maximize framebuffer aperture so can change screen resolution 2014-10-19 21:00:34 +02:00
cinap_lenrek
d7785060fb efi: use LocateHandle() and HandleProtocol() to check for multiple gop protocols to find a usable one
the gop returned by LocateProtocol() is not usable on thinkpad x230,
so iterate over all handles to find a usable one.
2014-10-19 19:55:45 +02:00
cinap_lenrek
d6ea496960 efi: fix compiler warnings, remove indicator prints in readn() 2014-10-19 22:01:13 +02:00
cinap_lenrek
f0ff0fb054 efi: simplify bootscreen code 2014-10-18 19:15:53 +02:00
aiju
040166493d games/gba: add state saving 2014-10-18 19:08:38 +02:00
cinap_lenrek
99e004c72e efi: convert pixel format to bootscreen color channel 2014-10-18 18:48:56 +02:00
cinap_lenrek
6aa6e9fc8b efi: make clean target virtual 2014-10-18 02:15:40 +02:00
cinap_lenrek
6f3dfb57eb efi: add experimental efi bootloader
this is basically a port of 9boot to EFI. theres
support for IA32 (386) and X64 (amd64).

has been tested only under qemu with OVMF so far.
2014-10-18 02:13:02 +02:00
cinap_lenrek
0a6439a1f5 pc, pc64: allow passing RSDT pointer in *acpi= boot parameter, early bootscreeninit(), fix rampage() usage
rampage() cannot be used after meminit(), so test for
conf.mem[0].npage != 0 and use xalloc()/mallocalign()
instead. this allows us to use vmap() early before
mmuinit() which is needed for bootscreeninit() and
acpi.

to get memory for page tables, pc64 needs a lowraminit().

with EFI, the RSDT pointer is passed in *acpi= parameter
from the efi loader. as the RSDT is ususally at the end of
the physical address space (and not to be found in
bios areas), we cannot KMAP() it so we need to vmap().
2014-10-18 02:01:58 +02:00
cinap_lenrek
b52f0c884e pc: add *bootscreen= variable to pass pre-initialized framebuffer info to kernel
EFI system has no cga or vesa anymore, so it becomes neccesary to
pass GOP framebuffer info to the kernel to get some output on the
screen.
2014-10-13 23:02:53 +02:00
cinap_lenrek
cc6ab31891 pc: sanity check bda value in lowraminit() to avoid overflow with efi 2014-10-12 20:18:59 +02:00
stanley lieber
ca694c51ef pkg: change default repo to http://9front.org/pkg/386 2014-10-12 13:27:53 -04:00
BurnZeZ
748a95266f rio: fix "-cd dir" in mountspec being ignored 2014-10-11 11:47:38 -04:00
stanley lieber
081bbcf0a1 fortunes: You have an agenda. 2014-10-06 21:17:26 -04:00
aiju
5de71b116a games/gba: new faster ppu code, audio support 2014-10-03 16:52:56 +02:00
aiju
74b7abe95c games/gba: fix dma repeat bit and eeprom addresses 2014-09-30 15:48:32 +02:00
aiju
4f264cedfb added crc32 2014-09-30 13:07:36 +02:00
cinap_lenrek
4f4d71b941 hgfs: make data files with meta headers having the right size after open
to get the right data size of a file, the revlog needs to have been
opened and the metaheader parsed. as an optimization, we used to
open revlog only on the first read resulting revlogs with metaheaders
having the wrong size returned by fstat() until the first read().

tar relies on fstat() giving the correct file size, so just open
the revlog on open. reading directories can still yield the wrong
size but it is not that critical.
2014-09-29 21:01:51 +02:00
cinap_lenrek
c1dc5d15c3 snap: change ulong return of stackptr() to uvlong for amd64 2014-09-29 20:11:58 +02:00
aiju
752841fcc1 games/gba: small fixes 2014-09-28 19:41:52 +02:00
cinap_lenrek
15afb9d00b apply ps2mouse corruption fix to omap
the omap ps2mouse driver is currently unused, but
in case of being finished at some point, apply the
fix from the pc driver.
2014-09-28 19:02:25 +02:00
cinap_lenrek
36db1295be pc/pc64: fix ps2mouse memory corruption race
there was a memory corruption bug caused by us enabling the
ps2mouseputc() handler *before* initializing packetsize.

once we enabled the handler, mouse interrupts could come
in and advance the packet buffer index (nb) beyond the
buffer boundaries.

as ps2mouseputc() only checked for ++nb == packetsize, once
nb was advanced beyond the packetsize, it would continue writing
beyond the buffer and corrupt memory with each mouse packet byte.

solution is to initialize packetsize *before* enabling the
handler, and also do a >= check in ps2mouseputc() in case the
packetsize gets changed to a smaller value at runtime.
2014-09-28 18:28:38 +02:00
cinap_lenrek
a494cc74ad ndb/dns: request recursion only for local dns servers
we used to set RD flag in requests unconditionally, which
is fine by the standard but some dns server administrators
seem to use it as a denial of service indicator (for ther
non recursive authoritative nameservers) and ignore the
request.

so only set the RD flag when talking to local dns servers.
2014-09-28 05:15:25 +02:00
cinap_lenrek
eb6a4fc1a4 devcons: avoid division by zero reading Qsysstat
alexchandel got the kernel to crash with divide error
on qemu 2.1.2/macosx at this location. probably
caused by perfticks()/tsc being wrong or accounttime()
not having been called yet from timer interrupt yet for
some reason.
2014-09-28 02:42:33 +02:00
aiju
c8cf0cee47 games/gba: remove bogus file 2014-09-28 22:42:11 +02:00
aiju
05bdd09bc3 merge 2014-09-27 20:51:00 +02:00
aiju
77f3fa19de games/gba: slowly working (no pun intended) 2014-09-27 20:50:20 +02:00
mischief
ee29c17639 pc64: enable rtl8169 driver (thanks awabimakoto for testing) 2014-09-24 14:19:22 -07:00
cinap_lenrek
decc7ec518 6c/8c: eleminate moves by swaping source and destination operands in peephole pass 2014-09-24 20:45:16 +02:00
cinap_lenrek
4cb032442a acid: fix sysr1() stack corruption
the syscall stubs (for amd64) currently have a unconditional
spill of the first (register) argument to the stack.

sysr1 (and _nsec) are exceptional in that they do not
take any arguments, so the stub is writing unconditionally
to ther first argument slot on the stack.

i could avoid emiting the spill in the syscall stubs for
sysr1 but that would also break truss which assumes fixed
instruction sequence from stub start to the syscall number.

i'm not going to complicate the syscall stubs just for
sysr1 (_nsec is not used in 9front), but just add a dummy
argument to sysr1 definition that can receive the bogus
argument spill.
2014-09-22 23:07:59 +02:00
cinap_lenrek
84c40fb226 devip: sanity check Nchan in Fsproto()
devip can only handle Maskconv+1 conversations per
protocol depending on how many bits it uses in the
qid to encode the conversation number.

we check this when the protocol gets registered.

if we do not do this, the kernel will mysteriously
panic when the conversaion numbers collide which
took some time to debug.
2014-09-21 19:24:38 +02:00
cinap_lenrek
c145a2c0aa devip: print protocol name in garbage collection notification 2014-09-21 18:02:53 +02:00
cinap_lenrek
47e52123d0 pc64: print "Plan 9" on boot, cleanup pccpu64 files 2014-09-21 16:06:25 +02:00
cinap_lenrek
2604bc3603 stats: handle /dev/sysstat 32bit overflow in delta calculation
the numbers from /dev/sysstat overflow on 32bit, so have
to do subtraction modulo 2^32 as we calculate with 64bit
integers.

thanks mischief for reporting this.
2014-09-20 18:06:59 +02:00
cinap_lenrek
19a8f66eec pc64: syscallfmt for nsec syscall 2014-09-20 01:37:11 +02:00
cinap_lenrek
acd15f13c4 pc64: put return value of nsec syscall in register on amd64
WHAT WHERE THEY *THINKING*??!?!

unlike seek, the (new) nsec syscall (not used in 9front libc)
returns the time value in register (from nix), so do the same
for compatibility.
2014-09-20 01:07:46 +02:00
cinap_lenrek
f899e55818 libmemdraw: fix byte ordering in memfillcolor()
memfillcolor() used to write longs in host byte
order which is wrong. have to always use little
endian.

to simplify, moved little endian conversion into
memsetl() and memsets() avoiding code duplication.
2014-09-19 17:49:48 +02:00
cinap_lenrek
a1b2b9b126 lib9p: fix nil dereference crash in remove for directory permission check
file->parent can be nil when the file has been previously removed.
removefile() deals with this, so skip the permission check in
that case and let removefile() error out.
2014-09-19 05:22:26 +02:00
cinap_lenrek
5d8300d2eb teg2: fix wrong l2 setshift address in wholecache() (from sources) 2014-09-17 16:34:30 +02:00
cinap_lenrek
ce80c5029e oggdec: recognize "begin of stream" packets and restart decoding 2014-09-16 20:25:01 +02:00
cinap_lenrek
187aad97be merge 2014-09-16 16:42:16 +02:00
cinap_lenrek
e060bc6df6 libauthsrv: allow multiple auth= attributes for backup auth servers, authdial() tries each one in order
some of us run auth servers from home that are used by multiple
servers on the internet. when the home authserver becomes unreachable,
services on the outside servers stop working. so we thought about
specifing a secondary auth servers for backup when the primary
server is not reachable.

this changes authdial() to consult multiple auth= entries in
the authdom= or dom= tuples, trying each one in order until
dial() succeeds.
2014-09-16 16:41:05 +02:00
mischief
e5c47ca18e ramfs: allow changing mtime in wstats 2014-09-15 15:49:39 -07:00
mischief
222018340b hg: make intermediate directories like newer hg does 2014-09-15 13:42:54 -07:00
cinap_lenrek
7011194af1 ramfs: fix directory check in wstat() (thanks mischief) 2014-09-16 22:33:27 +02:00
cinap_lenrek
694597de3b devtls: fix typo in debug print 2014-09-15 08:19:51 +02:00
cinap_lenrek
7f295c2055 telnetd: let the kernel place the shared segment in segattach() (thanks kenji arisawa) 2014-09-14 21:20:13 +02:00
cinap_lenrek
fdf3883ce4 libmemdraw: update drawtest to use same rounding in alpha calculation as libmemdraw 2014-09-14 17:03:56 +02:00
cinap_lenrek
e9fddbaad8 kernel: fix segattach() rounding of va+len (thanks kenji arisawa)
from segattach(2):

          Va and len specify the position of the segment in the
          process's address space.  Va is rounded down to the nearest
          page boundary and va+len is rounded up.  The system does not
          permit segments to overlap.  If va is zero, the system will
          choose a suitable address.

just rounding up len isnt enougth. we have to round up va+len
instead of just len so that the span [va, va+len) is covered
even if va is not page aligned.

kenjis example:

	print("%p\n",ap);	// 206cb0
	ap = segattach(0, "shared", ap, 1024);
	print("%p\n",ap);	// 206000

term% cat /proc/612768/segment
Stack     defff000 dffff000    1
Text   R      1000     6000    1
Data          6000     7000    1
Bss           7000     7000    1
Shared      206000   207000    1
term%

note that 0x206cb0 + 0x400 > 0x20700.
2014-09-14 16:04:22 +02:00
mischief
8348a233ae vi: implement _nsec syscall 2014-09-13 06:07:57 -07:00
cinap_lenrek
c8008e1ffd libsec: experimental DHE client support for tls and cleanups 2014-09-14 02:30:46 +02:00
cinap_lenrek
6c68876db6 libsec: add diffie-hellman functions 2014-09-14 02:29:18 +02:00
cinap_lenrek
4cf00ca6cb libsec: fix hmac for keys bigger then 64 byte block size
RFC2104 defines HMAC for keys bigger than the 64 byte block
size as follows:

Applications that use keys longer than B (64) bytes will
first hash the key using H (the hash function) and then
use the resultant L byte string as the actual key to HMAC.
2014-09-14 02:26:26 +02:00
aiju
69fab298be libsec: ecgen() and ecdsasign() fix 2014-09-13 19:46:41 +02:00
BurnZeZ
62a8bf1846 acme: remove unused #include 2014-09-11 12:47:04 -04:00
aiju
418ce96ca2 games/gb: minor goof 2014-09-11 11:36:35 +02:00
aiju
d63850570c games/nes: reduce volume, causes overflow and confuses ac97 2014-09-11 11:20:57 +02:00
cinap_lenrek
a49ddece8b ip/ayiya: experimental anything in anything tunnel protocol client
this is a work in progress implementation of the ayiya (anything
in anything) protocol as used by sixxs.net. hiro tested it and it
worked for him, but progress has stalled as sixxs.net rejected my
request for an account and ignored my emails since.
2014-09-06 22:59:58 +02:00
cinap_lenrek
460f482ad0 doom: fix alignment issues for arm 2014-09-04 23:02:37 +02:00
cinap_lenrek
3a322e9f32 5e: fix signed long multiply 2014-09-04 22:53:54 +02:00
cinap_lenrek
e890c3d943 5e: push ERRMAX for note message on stack avoiding unaligned stack pointer 2014-09-03 19:23:55 +02:00
cinap_lenrek
b864727723 ether8139: fix pointer to smaller int tuncation warning on amd64 2014-09-02 16:20:43 +02:00