Commit Graph

106514 Commits

Author SHA1 Message Date
jakllsch
f2005c3157 Allow e?siop_dump_script() to work with on-chip RAM. Prefix
DUMP_SCRIPT with SIOP_.  Additionally, avoid undefining DEBUG,
condition on SIOP_DEBUG instead.
2010-09-09 14:50:25 +00:00
pooka
41dca761e7 * unlock object in "error" branch
* fix typo (not in comment)
* improve indentation tailspin
2010-09-09 12:23:06 +00:00
pooka
9f2621e60c Release PG_PAGEOUT pages in aiodone. 2010-09-09 12:18:39 +00:00
pooka
2e7b2c4b52 Assert that object is locked in page unbusy. 2010-09-09 10:02:14 +00:00
pooka
0e59fd4080 hold object lock across page unbusy 2010-09-09 09:59:48 +00:00
pooka
3b79ed5da9 Use proper locking before unbusying pages.
Caught after yesterday's changes by the test suite (the ffs snapshot
test, to be precise).
2010-09-09 09:50:21 +00:00
tls
cb72c101ad From Coyote Point source tree: "fix" srt IPv4 lookup on little-endian
hosts.  IPv6 is probably still broken, and, actually, the lookup table
for mask values should be kept in network byte order, not host byte order
and the corresponding change to the srtconfig ioctl interface made.

But at least this works.
2010-09-09 03:24:57 +00:00
macallan
b10b3a9713 add backlight control via PMF
TODO: support wsconsctl
2010-09-09 01:22:10 +00:00
macallan
210f669b31 get rid of custom PMF event handlers, instead do what the upper layer expects
so volume control via PMF still works
2010-09-09 00:24:59 +00:00
sjg
ce171c67f4 First cut of simple syscall wrapper, which make(1) can use
to track process activity.
2010-09-09 00:10:16 +00:00
ahoka
f6f08ea895 add dme (dm9000 ethernet) 2010-09-08 22:55:54 +00:00
ahoka
9b9ec0b12b config for devkit8000 boards (currently beagle conf + dme)
config glue for devkit8000 ethernet
2010-09-08 22:53:53 +00:00
ahoka
b6b2e6e32c Remove the unintentional parts of the last commit. 2010-09-08 22:52:25 +00:00
ahoka
81e8f53d96 dme ethernet driver for devkit8000 gpmc 2010-09-08 22:49:49 +00:00
ahoka
71cf9e6085 Driver for Davicom DM9000 ethernet chips.
Written by Paul Fleischer, minor modifications by me.
2010-09-08 22:01:29 +00:00
pooka
69e5229866 Actually, we want to say "no aobjs" instead of "only vnodes" to
make component boundaries go right.
2010-09-08 21:14:32 +00:00
pooka
73ad216320 Improve pagedaemon performance:
* page out vnode objects
  * drain kmem/kernel_map

As long as there is a reasonable memory hardlimit (>600kB or so),
a rump kernel can now survive file system metadata access for an
arbitrary size file system (provided, of course, that the file
system does not use wired kernel memory for metadata ...).

Data handling still needs a little give&take finetuning.  The
general problem is that a single vm object can easily be the owner
of all vm pages in a rump kernel.  now, if a thread wants to allocate
memory while holding that object locked, there's very little the
pagedaemon can do to avoid deadlock.  but I think the problem can
be solved by making an object release a page when it wants to
allocate a page if a) the system is short on memory and b) too many
pages belong to the object.  that still doesn't take care of the
pathological situation where 1000 threads hold an object with 1
page of memory locked and try to allocate more.  but then again,
running 1000 threads with <1MB of memory is an unlikely scenario.
and ultimately, I call upon the fundamental interaction which is
the basis of why any operating works: luck.
2010-09-08 21:02:11 +00:00
kiyohara
a449bab930 Ensure that it is UPS_PORT_ENABLED before checking the speed of the device. 2010-09-08 14:01:58 +00:00
macallan
4f9da34eba make debug code compile again 2010-09-08 04:48:03 +00:00
joerg
b5e51c26bb Remember the end of the last text segment and set up a fake data segment
if size 0 and starting after the text segments, if no data segment was
found. Unbreaks sbrk on platforms where all loaded segments are
executable (PR 43817). The cast of executable segments after data
segments is left out for now.
2010-09-07 21:32:03 +00:00
pooka
8a2467ef8f Make the Diabolical (Page)Daemon Director drain vfs buffers when
we are short of memory.

There are still some funnies left to iron out.  For example, with
a certain file system / memory size configuration it's still not
possible to create enough files to make the file system run out of
inodes before the kernel runs out of memory.  Also, with some other
configurations disk access slows down gargantually (though i'm sure
there are >0 buffers available).  Anyway, it ~works for now and
it's by no means worse than what it was before.
2010-09-07 21:11:10 +00:00
pooka
f3c7386990 Rename jump label to something a little more negative. No, I'm
not doing it for cosmetic value or out of angst.  See, PIC_PROLOGUE
on i386 uses the "1" label internally.  Now, everything would be
fine and dandy for the first 551245 calls to random.  After that
p+q is negative and the jump is taken.  However, it is taken into
the middle of PIC_PROLOGUE instead of where upon superficial
examination we assumed we are jumping.  This causes wrong(tm) things
to happen and "ret" triggers a jump into hyperspace.

(no, I did not see that coming)
2010-09-07 20:35:50 +00:00
macallan
48d31d1edf make this work with PMF hotkey events
Now the volume control buttons work on my Pismo
2010-09-07 18:47:24 +00:00
pooka
8fff110d3d Allocate softint vectors for the final number of CPUs, not the
number currently attached.  Deals with a SNAFU in my commit earlier
today which would cause softints established early to lack a
softint context on non-bootstrap CPUs.
2010-09-07 18:25:38 +00:00
mhitch
9c443068a6 Fix a performance problem with the ciss(4) driver. NetBSD does common
queueing at the scsipi midlayer, and if the midlayer is not requested to
enable tagged queueing, the midlayer will only queue one command to the
adapter driver for each device.  The SmartArray adapter is capable of
handling multiple commands, and in the rather common case where there is
no battery backup and no write cache, doing single write commands is very
slow.  The SmartArray adapter runs much better when several commands can
be issued to a device.

This has been observed and discussed in several list threads, notably:
http://mail-index.NetBSD.org/netbsd-users/2008/10/01/msg002083.html
http://mail-index.NetBSD.org/tech-kern/2008/11/30/msg003704.html

This also addresses PR kern/39686.

To enable tagged queueing, the adapter driver responds to the midlayer
request to set the transfer mode.  However, the SmartArray does not respond
to the SCSI INQUIRY command with an ANSII field of 2 or more, so the
scsipi midlayer will ignore the CmdQue bit in the flags3 field of the
inquiry data.  This fix will patch the inquiry data so set the ANSII field
to 2, and responds to the midlayer request to set the transfer mode by
requesting tagged queueing.

In addition, the original port of the driver did not set up the adapter
parameters correctly as mentioned in the second list thread mentioned
above.  The adapt_openings is the total number of commands that the
adapter will accept rather than the number of commands divided by the
number of logical drives.  Also, the adapt_max_periph is the maximum number
of commands which can be queued per peripheral device, not the number of
logical drives [which in the case of a single logical drive limited the
number of commands queued to 1].

I'm also suppressing an error message for invalid commands if the error
was due to the SCSI_SYNCHRONIZE_CACHE_10 command, since that command is
not supported by the SmartArray adapter, but used with wapbl(4) meta-data
journaling.  Setting the ANSII version to 2 to allow enabling tagged queueing
also enables the use of the SCSI_SYNCHRONIZE_CACHE_10 command.
2010-09-07 18:19:16 +00:00
pooka
d00164124d update comments. no code change. 2010-09-07 17:49:23 +00:00
pooka
91ada95af8 regen: rcvp/cdir interfaces go byebye in favour of rump syscalls 2010-09-07 17:14:18 +00:00
pooka
18ec09b711 Retire the prehistoric chroot/cwd interfaces now that there is a
process model in rump.
2010-09-07 17:13:03 +00:00
pooka
a9f67b6a36 regen: getcwd 2010-09-07 17:10:48 +00:00
pooka
0d2a7de3b6 getcwd for rump 2010-09-07 17:10:08 +00:00
pooka
4aea95690f Attach only one CPU for the bootstrap phase. 2010-09-07 07:59:48 +00:00
pooka
5862500201 Improve page allocator performance by using pool_cache for the
structure itself and allocating the backing page directly from the
hypervisor.

* initial write to a large tmpfs file is almost 2x faster
* truncating the file to 0 length after write is over 50% faster
* rewrite of the file is just slightly faster (indicating that
  kmem does a good job with caching, as expected)
2010-09-07 07:47:36 +00:00
cegger
31b69ed482 do not assume all fw devices speak sbp.
teach the fw attach code to deal with different fw device classes.
this allows other fw drivers than sbp to attach
2010-09-07 07:26:54 +00:00
cegger
f8af7a09a8 convert tsleep to kpause 2010-09-07 07:19:45 +00:00
pooka
80374562eb Use rb_tree for page lookup instead of list. Unshockingly, this
makes dealing with large uobjs (files) quite a bit faster.
2010-09-07 06:06:54 +00:00
pooka
04d191ff71 Make "no options VMSWAP" kernels compile again. 2010-09-07 04:45:22 +00:00
pooka
ffe3bf49ce Make the pager loops more resilient against the aobj pager which is
lazy and doesn't like to return anything except the bare minimum.
(forgot to commit this earlier)
2010-09-06 21:33:07 +00:00
pooka
90dec69258 Use standard uvm aobj pager. Most of the kernel aobj pager complexity
comes from swap handling, but that is included only with VMSWAP.
2010-09-06 20:10:20 +00:00
christos
139f2c9fc9 make it compile. 2010-09-06 20:03:56 +00:00
pooka
347b0daf87 regen: umask 2010-09-06 20:01:31 +00:00
pooka
a50c905497 rump umask 2010-09-06 20:00:09 +00:00
pooka
bbcc16c9cf add a few more system calls 2010-09-06 18:43:28 +00:00
pooka
6b2c39723d Broadcast instead of signal since the condition is a boolean. 2010-09-06 18:03:57 +00:00
pooka
8664a51e24 pager wants truncated offsets 2010-09-06 17:56:56 +00:00
pooka
cd3531b9f2 simplify and fix len-to-npages calculation 2010-09-06 17:32:38 +00:00
jmcneill
eb0e82d870 Add support for blacklisting ACPI BIOS implementations by year. By default,
don't use ACPI on BIOS which advertise release years <= 2000. This
can be changed by setting option ACPI_BLACKLIST_YEAR=0 or by setting
acpi_force_load=1.
2010-09-06 15:54:26 +00:00
pooka
e6a0920565 renamelock is mandatory 2010-09-06 15:07:33 +00:00
pooka
811ba61255 Try to draw faster than Lucky Locke. 2010-09-06 14:50:34 +00:00
jakllsch
eb044d2951 Remove quirk added in rev 1.14. Even after the change of 1.16, it
still matches more boards that just the one with the problem.

Interrupts from the SATA controllers on my MSI K8N Neo3 boards
(which both versions of this quirk matched) are broken when ACPI
is disabled.  My board does not exhibit AE_AML_INFINITE_LOOP
problems.

If we want to avoid manually specifying RB_MD2 in boothowto on
pgoyette@'s board, we're going to have to find another way; perhaps
with the DMI strings available from pmf(9).

Anyhow, some boards needing RB_MD2 during boot(8) is in my opinion
better than others needing to set acpi_force_load in ddb or gdb.
2010-09-06 14:09:54 +00:00
chs
bf2af3b9b5 accept the LDT selector in check_sigcontext32() too. 2010-09-05 20:52:38 +00:00