dlg [Fri, 16 Jun 2017 01:55:45 +0000 (01:55 +0000)]
add garbage collection of unused lists percpu cached items.
the cpu caches in pools amortise the cost of accessing global
structures by moving lists of items around instead of individual
items. excess lists of items are stored in the global pool struct,
but these idle lists never get returned back to the system for use
elsewhere.
this adds a timestamp to the global idle list, which is updated
when the idle list stops being empty. if the idle list hasn't been
empty for a while, it means the per cpu caches arent using the idle
entries and they can be recovered. timestamping the pages prevents
recovery of a lot of items that may be used again shortly. eg, rx
ring processing and replenishing from rate limited interrupts tends
to allocate and free items in large chunks, which the timestamping
smooths out.
gc'ed lists are returned to the pool pages, which in turn get gc'ed
back to uvm.
ok visa@
dlg [Fri, 16 Jun 2017 01:33:20 +0000 (01:33 +0000)]
split returning an item to the pool pages out of pool_put as pool_do_put.
this lets pool_cache_list_put return items to the pages. currently,
if pool_cache_list_put is called while the per cpu caches are
enabled, the items on the list will put put straight back onto
another list in the cpu cache. this also avoids counting puts for
these items twice. a put for the items have already been coutned
when the items went to a cpu cache, it doesnt need to be counted
again when it goes back to the pool pages.
another side effect of this is that pool_cache_list_put can take
the pool mutex once when returning all the items in the list with
pool_do_put, rather than once per item.
ok visa@
mikeb [Thu, 15 Jun 2017 20:12:12 +0000 (20:12 +0000)]
Don't defer attaching PV devices
Now that both hvn(4) and hvs(4) can perform VMBus channel operations
during autoconf, it's no longer necessary to defer their attachment.
akfaew [Thu, 15 Jun 2017 20:10:25 +0000 (20:10 +0000)]
Remove the Installation section and fix a nonexistent path.
OK tb@ (fix paths diff) deraadt@
mikeb [Thu, 15 Jun 2017 20:08:56 +0000 (20:08 +0000)]
Make sure we can free GPA handles when cold
mikeb [Thu, 15 Jun 2017 20:06:13 +0000 (20:06 +0000)]
Support executing NVSP and RNDIS commands during autoconf
tb [Thu, 15 Jun 2017 19:37:10 +0000 (19:37 +0000)]
Finer grained pledge for at(1). After setegid(), do a three-way pledge:
For AT and BATCH: "stdio rpath wpath cpath fattr getpw unix"
For ATRM: "stdio rpath cpath getpw unix"
For ATQ and CAT: "stdio rpath getpw"
"unix" is needed for poke_daemon() and "fattr" to chmod +x spoolfile.
idea and ok millert
mikeb [Thu, 15 Jun 2017 18:21:08 +0000 (18:21 +0000)]
Provide storage for the response message in each CCB
mikeb [Thu, 15 Jun 2017 18:05:52 +0000 (18:05 +0000)]
Remove the structure definition for an old (pre Win8) I/O request type
since the new one is backwards compatible and the correct length of the
request can be specified w/o an actual definition.
mikeb [Thu, 15 Jun 2017 18:00:26 +0000 (18:00 +0000)]
Put back copying of the response message into the polling callback
The response message is allocated on the stack of hvs_intr and its
content is valid during a single message processing loop iteration.
Due to the fact that polled transfers finish completion in a callee
context, the cached pointer to the response message becomes stale
very quickly. To avoid this situation the poll completion callback
needs to make sure the content of the response is provided to the
next completion routine.
krw [Thu, 15 Jun 2017 17:06:17 +0000 (17:06 +0000)]
Nuke unused parameter 'client_addr' from the 'handlers', i.e.
dhcpoffer(), dhcpack(), dhcpnak().
krw [Thu, 15 Jun 2017 16:56:11 +0000 (16:56 +0000)]
Nuke unused parameter 'client_addr' from packet_to_lease().
zhuk [Thu, 15 Jun 2017 16:07:54 +0000 (16:07 +0000)]
Assorted tweaks for x11/qt* modules description.
zhuk [Thu, 15 Jun 2017 16:06:02 +0000 (16:06 +0000)]
It's never too late to document x11/kde module. At least a (non-obvious) bit.
zhuk [Thu, 15 Jun 2017 16:03:52 +0000 (16:03 +0000)]
Document MODQMAKE_RECURSIVE and test framework support for devel/qmake.
zhuk [Thu, 15 Jun 2017 15:53:23 +0000 (15:53 +0000)]
The devel/qmake port module handles Qt3 as well.
mikeb [Thu, 15 Jun 2017 15:01:28 +0000 (15:01 +0000)]
Correct the number of targets vs number of LUNs
jsg@ has found out that the number of targets wasn't correct and
it turns out that the device supports up to 2 targets and 1 or 64
LUNs depending on whether it's taking over an IDE device or is a
virtual SCSI.
While here make sure the command response is copied back only for
synchronous commands that are issued during initialization phase.
bcallah [Thu, 15 Jun 2017 13:48:42 +0000 (13:48 +0000)]
Add -E flag (make warnings fatal), following the behavior of GNU m4 1.4.9+
Help and direction millert@ espie@ anton@ deraadt@
ok espie@
fcambus [Thu, 15 Jun 2017 11:48:49 +0000 (11:48 +0000)]
We do not support iso7 nor pcvt encoding, so remove macro definitions
and commented entries.
OK mlarkin@
bentley [Thu, 15 Jun 2017 06:44:47 +0000 (06:44 +0000)]
"10th's of a second" -> "tenths of a second"
ok jmc@
dlg [Thu, 15 Jun 2017 03:50:50 +0000 (03:50 +0000)]
report contention on caches global data to userland.
dlg [Thu, 15 Jun 2017 03:48:50 +0000 (03:48 +0000)]
white space tweaks. no functional change.
dlg [Thu, 15 Jun 2017 03:47:07 +0000 (03:47 +0000)]
add a rough start to a pcache view, to show pool cpu cache info.
ok mikeb@ millert@
dlg [Thu, 15 Jun 2017 03:44:17 +0000 (03:44 +0000)]
implement the backend of the sysctls that report pool cache info.
KERN_POOL_CACHE reports info about the global cache info, like how long
the lists of cache items the cpus build should be and how many of these
lists are idle on the pool struct.
KERN_POOL_CACHE_CPUS reports counters from each each. the counters
are for how many item and list operations the cache has handled on
a cpu. the sysctl provides an array of ncpusfound * struct
kinfo_pool_cache_cpu, not a single struct kinfo_pool_cache_cpu.
tested by hrvoje popovski
ok mikeb@ millert@
----------------------------------------------------------------------
dlg [Thu, 15 Jun 2017 02:52:30 +0000 (02:52 +0000)]
add some kinfo structs and sysctl mibs for info about per cpu pool caches
there are two sysctls, one that shows info about the pools global
cache info, and another that dumps info about the caches on all the
cpus in one go.
ok mikeb@ millert@
schwarze [Thu, 15 Jun 2017 00:27:22 +0000 (00:27 +0000)]
round default width of tbl(7) text blocks in the same way as groff
schwarze [Wed, 14 Jun 2017 23:23:51 +0000 (23:23 +0000)]
implement so-called absolute horizontal motion: \h'|...',
used for example by zoem(1)
schwarze [Wed, 14 Jun 2017 22:50:37 +0000 (22:50 +0000)]
Naive implementation of the roff(7) .po (page offset) request.
This clearly works when .po is called on the top level, but might
not be sophisticated enough if people call .po inside indentation-changing
contexts, but i haven't seen that in manual pages (yet :).
mikeb [Wed, 14 Jun 2017 22:35:43 +0000 (22:35 +0000)]
Enable hvs(4), "go for it" from deraadt.
mikeb [Wed, 14 Jun 2017 22:24:11 +0000 (22:24 +0000)]
Borrow some of dlg's smarts to make this look like a real SCSI driver
rpe [Wed, 14 Jun 2017 21:39:53 +0000 (21:39 +0000)]
Add a new function reorder_kernel() that relinks and installs the
new kernel in the background on system startup. It stores the hash
of the new kernel and sends a notification email to the admin or
root user. If it finds /usr/share/compile.tgz, it removes the
existing compile dir and replaces it with the content of (new)
archive. If the hash of /bsd does not match the stored one, no
relinking happens.
Idea from, joint work with and OK deraadt@
OK tb@ halex@
unnoticed by many
schwarze [Wed, 14 Jun 2017 20:56:42 +0000 (20:56 +0000)]
add the \(ru (0.5m baseline ruler) character escape sequence,
abused by mail/nmh; groff_char(7) confirms that this really exists
akfaew [Wed, 14 Jun 2017 20:48:54 +0000 (20:48 +0000)]
Don't support loading appletalk addresses from /etc/appletalk.names.
OK deraadt@
krw [Wed, 14 Jun 2017 20:27:08 +0000 (20:27 +0000)]
No need to be coy - call a "struct interface_info *" a
"struct interface_info *" and not a "void *".
No intentional functional change.
schwarze [Wed, 14 Jun 2017 19:39:05 +0000 (19:39 +0000)]
simple implementation of the roff(7) .als (macro alias) request,
sufficient for pages using po4a(1)
deraadt [Wed, 14 Jun 2017 18:30:03 +0000 (18:30 +0000)]
sync
schwarze [Wed, 14 Jun 2017 18:23:26 +0000 (18:23 +0000)]
let \l use the right fill character
schwarze [Wed, 14 Jun 2017 17:50:43 +0000 (17:50 +0000)]
improve rounding rules for scaling units
in horizontal orientation in the terminal formatter
stsp [Wed, 14 Jun 2017 16:58:28 +0000 (16:58 +0000)]
Currently, iwm(4) uses only one phy context, so stop sending commands to the
firmware for unused ones. This should be refactored further, but for now this
change is good enough to reduce the amount of commands we throw at the firmware.
ok deraadt@
stsp [Wed, 14 Jun 2017 16:57:47 +0000 (16:57 +0000)]
When a task in iwm(4) obtains an rwlock(9), bail out if the device was
reset while the task was asleep waiting for the lock.
ok deraadt@
stsp [Wed, 14 Jun 2017 16:56:50 +0000 (16:56 +0000)]
Make the iwm(4) ioctl handler wait until the transition to SCAN has completed
when bringing the interface up. Otherwise we get racy behaviour when running
ifconfig commands which issue several ioctls in quick succession.
Should fix the occasional "could not initiate scan" errors.
ok deraadt@
stsp [Wed, 14 Jun 2017 16:56:04 +0000 (16:56 +0000)]
Make iwm(4) wait for the PHY calibration result notification during HW init.
Code inspection revealed that Linux does this, and so should we.
ok deraadt@
krw [Wed, 14 Jun 2017 16:52:35 +0000 (16:52 +0000)]
Move active, new, offered_leases, leases from
client_state to interface_info.
Nuke empty struct client_state.
No intentional functional change.
deraadt [Wed, 14 Jun 2017 16:36:09 +0000 (16:36 +0000)]
Grow sgi iso, to account for base containing compile.tgz.
SGI has 8 kernels, so the file is 113MB!
anton [Wed, 14 Jun 2017 16:32:11 +0000 (16:32 +0000)]
Remove main() prototype and unused envp argument.
ok deraadt@ martijn@
krw [Wed, 14 Jun 2017 16:29:58 +0000 (16:29 +0000)]
Move state, destination, interval, requested_address from
client_state to interface_info.
No intentional functional change.
krw [Wed, 14 Jun 2017 16:09:42 +0000 (16:09 +0000)]
Move xid, secs, first_sending, startup_time fields from
client_state to interface_info.
No intentional functional change.
krw [Wed, 14 Jun 2017 15:57:25 +0000 (15:57 +0000)]
Start consolidating client_state into interface_info. First
fields to move: recv_packet, sent_packet and sent_packet_length.
No intentional functional change.
krw [Wed, 14 Jun 2017 15:39:55 +0000 (15:39 +0000)]
No need for two 'flags' fields. Consolidate into one, fixing
value of IFI_HUP while passing.
schwarze [Wed, 14 Jun 2017 14:23:50 +0000 (14:23 +0000)]
harmless, but weird typo; found with afterstep_faq(1)
schwarze [Wed, 14 Jun 2017 14:01:34 +0000 (14:01 +0000)]
implement the roff(7) d (macro or string defined) conditional
patrick [Wed, 14 Jun 2017 13:12:49 +0000 (13:12 +0000)]
Split early startup code out of armv7_start.S into locore0.S. Adjust
link run so that this locore0.o is always at the start of the
executable. But randomize the link order of all other .o files in the
kernel, so that their exec/rodata/data/bss segments land all over the
place. Note that this commit does not yet unmap the early bootcode
since this is not as easy as on arm64.
As a result, the internal layout of every newly build bsd kernel is
different from past kernels. Internal relative offsets are not known
to an outside attacker. The only known offsets are in the startup code,
which has been unmapped.
Ramdisk kernels cannot be compiled like this, because they are gzip'd.
When the internal pointer references change, the compression dictionary
bloats and results in poorer compression.
With guidance and ok deraadt@
schwarze [Wed, 14 Jun 2017 13:00:13 +0000 (13:00 +0000)]
implement roff(7) .rj (right justify) request
jmc [Wed, 14 Jun 2017 12:42:09 +0000 (12:42 +0000)]
match the (hvs) description to the man page; ok mikeb
mikeb [Wed, 14 Jun 2017 12:28:41 +0000 (12:28 +0000)]
Special handling for request 0 clashes with CCB 0
mikeb [Wed, 14 Jun 2017 12:05:37 +0000 (12:05 +0000)]
Increase the maximum amount of requests and do some cleanup
mikeb [Wed, 14 Jun 2017 10:36:37 +0000 (10:36 +0000)]
Mention hvs(4)
mikeb [Wed, 14 Jun 2017 10:35:36 +0000 (10:35 +0000)]
Hook up hvs.4
mikeb [Wed, 14 Jun 2017 10:34:41 +0000 (10:34 +0000)]
hvs(4) man page
mikeb [Wed, 14 Jun 2017 10:25:40 +0000 (10:25 +0000)]
Hookup hvs(4)
mikeb [Wed, 14 Jun 2017 10:24:51 +0000 (10:24 +0000)]
Hyper-V storage driver
Based on the FreeBSD driver, attaches only to emulated SCSI controllers.
mikeb [Wed, 14 Jun 2017 09:47:37 +0000 (09:47 +0000)]
Add another type of a scatter-gather list operation used by StorVSC
Obtained from FreeBSD.
nicm [Wed, 14 Jun 2017 07:42:41 +0000 (07:42 +0000)]
Don't overwrite error message when it is available in
cmd_string_parse. Reported by Jimi Damon in GitHub issue 975.
nicm [Wed, 14 Jun 2017 07:37:17 +0000 (07:37 +0000)]
Add missing error message when no target, GitHub issue 971.
dlg [Wed, 14 Jun 2017 03:00:40 +0000 (03:00 +0000)]
tweak sysctl_string and sysctl_tstring to use size_t for lengths, not int
theyre both wrappers around sysctl__string, which is where half the
fix is too.
schwarze [Wed, 14 Jun 2017 01:31:19 +0000 (01:31 +0000)]
implement the roff(7) \p (break output line) escape sequence
dtucker [Wed, 14 Jun 2017 00:31:38 +0000 (00:31 +0000)]
Add user@host prefix to client's "Permisison denied" messages, useful in
particular when using "stacked" connections where it's not clear which
host is denying. bz#2720, ok djm@ markus@
deraadt [Tue, 13 Jun 2017 19:49:18 +0000 (19:49 +0000)]
sort
deraadt [Tue, 13 Jun 2017 19:41:55 +0000 (19:41 +0000)]
no need for branding in .Nd line
schwarze [Tue, 13 Jun 2017 19:33:24 +0000 (19:33 +0000)]
Partial support for the \n[an-margin] number register.
Manuals autogenerated from reStructuredText are reckless enough
to peek at this non-portable, implementation-dependent, highly
groff-specific internal register - for no good reason, because the
man(7) language natively provides in a much simpler way what they
are trying to emulate here with much fragility.
A full implementation would be very hard because it would require
access to output-device-specific formatting data at the roff(7)
preprocessor stage, which mandoc doesn't support at all.
So hardcode a few magic numbers as reStructuredText expects them
for terminal output. For other output modes (like HTML), code using
this register is utterly broken anyway.
sf [Tue, 13 Jun 2017 18:13:18 +0000 (18:13 +0000)]
Revert 'Implement VFS read clustering for MSDOSFS' again
This has again caused regressions, this time when reading from msdosfs.
This reverts
denode.h 1.31
msdosfs_vnops.c 1.114
Requested by deraadt@
deraadt [Tue, 13 Jun 2017 17:10:00 +0000 (17:10 +0000)]
sync
deraadt [Tue, 13 Jun 2017 17:09:52 +0000 (17:09 +0000)]
For KARL, include a linkkit into the base set, as usr/share/compile.tgz.
This contains the relevant pieces from all the GENERIC* compile directories
(*.o ld.script Makefile gap.S). It also includes the machine/ subdir for
now, to support re-randomizing of gap.S, though other methods are being
investigated. (Any binutils ld.script hackers out there?)
collaboration with rpe
deraadt [Tue, 13 Jun 2017 16:40:00 +0000 (16:40 +0000)]
newbsd: target which re-links a kernel. We cannot use the bsd: target
since it has source dependencies, and relinking doesn't have any. Also
the bsd: target is created by config(8)...
worked on with rpe.
deraadt [Tue, 13 Jun 2017 16:28:04 +0000 (16:28 +0000)]
The KARL compile.tgz linkkit adds some growth to the base set.
Prepare the install*.fs files for this growth.
schwarze [Tue, 13 Jun 2017 16:11:58 +0000 (16:11 +0000)]
If the layout is empty except for requesting a left vertical frame,
record that detail in struct tbl_opts, such that term_tbl() can do
correct column calculations and doesn't prematurely break lines.
Fixes the tbl/layout/empty regression test that got broken when
line breaking in text block cells was implemented.
krw [Tue, 13 Jun 2017 16:02:46 +0000 (16:02 +0000)]
Kill unused #define IFI_NOMEDIA.
krw [Tue, 13 Jun 2017 15:49:32 +0000 (15:49 +0000)]
Rename 'packet' field to 'recv_packet' and 'bootrequest_packet'
field to 'sent_packet'. Also 'bootrequest_packet_length' to
'sent_packet_length'.
Adopt consistent idiom of a local variable 'packet' to point at
packet being manipulated.
No intentional functional change.
deraadt [Tue, 13 Jun 2017 15:37:30 +0000 (15:37 +0000)]
needs a fake ld.script for KARL tooling
schwarze [Tue, 13 Jun 2017 15:05:22 +0000 (15:05 +0000)]
Delete the arbitrary range restriction for -Owidth.
We provide users with tools. We don't attempt to prevent them from
using them in stupid ways: depending on the context, not every
stupid-looking use is necessarily actually stupid, and not every
stupidity can be automatically detected anyway, so don't even try.
schwarze [Tue, 13 Jun 2017 14:38:38 +0000 (14:38 +0000)]
fix the interaction of the allbox option with spanned cells in the layout
visa [Tue, 13 Jun 2017 14:06:39 +0000 (14:06 +0000)]
Do not invalidate remote TLB entries with new mappings because the
virtual addresses really should not have TLB hits. This reduces IPIs.
schwarze [Tue, 13 Jun 2017 13:50:17 +0000 (13:50 +0000)]
Explicitly ignore .br, .ce, and .sp inside tbl(7) text blocks.
With the current code structure, they would appear at the wrong
place in the syntax tree, so it is better to not insert them
into the tree at all and issue an UNSUPP message instead.
visa [Tue, 13 Jun 2017 13:41:15 +0000 (13:41 +0000)]
Tweak order of operands to check constant `cache_valias_mask' first.
djm [Tue, 13 Jun 2017 12:13:59 +0000 (12:13 +0000)]
Do not require that unknown EXT_INFO extension values not contain
\0 characters. This would cause fatal connection errors if an
implementation sent e.g. string-encoded sub-values inside a value.
Reported by Denis Bider; ok markus@
dlg [Tue, 13 Jun 2017 11:41:11 +0000 (11:41 +0000)]
when enabling cpu caches, check the item size against the right thing
lists of free items on the per cpu caches are built out the pool items
as struct pool_cache_items, not struct pool_cache. make the KASSERT
in pool_cache_init check that properly.
djm [Tue, 13 Jun 2017 11:22:15 +0000 (11:22 +0000)]
missing prototype.
fcambus [Tue, 13 Jun 2017 08:00:24 +0000 (08:00 +0000)]
Increase WSFONT_NAME_SIZE size, this will allow storing longer font
names in wsdisplay_font structures.
OK deraadt@
nicm [Tue, 13 Jun 2017 07:12:33 +0000 (07:12 +0000)]
Remove xterm flag from key before checking prefix, reported by Peter
Fern in GitHub issue 974.
dlg [Tue, 13 Jun 2017 06:16:31 +0000 (06:16 +0000)]
use size_t for the size of things in memory, not int.
this tweaks the len argument to sysctl_rdstring, sysctl_struct, and
sysctl_rdstruct.
there's probably more to fix.
ok millert@
yasuoka [Tue, 13 Jun 2017 05:40:22 +0000 (05:40 +0000)]
Initialize the length parameter for radius_get_vs_raw_attr() since
it's read/write. diff from IIJ.
deraadt [Tue, 13 Jun 2017 01:44:27 +0000 (01:44 +0000)]
Split early startup code out of locore.S into locore0.S. Adjust link
run so that this locore0.o is always at the start of the executable.
But randomize the link order of all other .o files in the kernel, so
that their exec/rodata/data/bss segments land all over the place.
As a result, the internal layout of every newly build bsd kernel is
different from past kernels. Internal relative offsets are not known
to an outside attacker. The only known offsets are in the startup code
(which will be gone when it is smashed).
The bootstrap code unmapping or smashing isn't done yet, and there is
some potential for more bits from locore.S to move to locore0.S
deraadt [Tue, 13 Jun 2017 01:42:52 +0000 (01:42 +0000)]
add a dummy ld.script. macppc does not use one of these yet, but
infrastructure that is coming requires an architecture to carry such a
file.
deraadt [Tue, 13 Jun 2017 01:42:12 +0000 (01:42 +0000)]
Prepare install_extint() for the vector being relative-negative (ie
lower in the address space). Previously it could only be higher
than... uhm locore.o
Discussed with drahn and tom
deraadt [Tue, 13 Jun 2017 00:16:09 +0000 (00:16 +0000)]
First step of randomized link for sparc64: gap.S and randomize files.
locore isn't split up yet, nor is the startup code smashed.
ok dlg, pieces seen before by kettenis
mestre [Mon, 12 Jun 2017 23:37:44 +0000 (23:37 +0000)]
pledge(2) bpf has been in use for some time now on tcpdump(8), this will enable
it also for pflogd(8)'s priv proc.
OK deraadt@
dlg [Mon, 12 Jun 2017 23:20:10 +0000 (23:20 +0000)]
have the timeout call if qstart via the serialiser isntead of directly
hfsc schedules a timeout to keep traffic moving if somethings has been
delayed an no other tx activity has occurred. that timeout was calling
(*ifp->if_qstart)(ifq) rather than ifq_start. the latter prevents
concurrent calls to if_qstart.
without this change bjorn ketelaars on misc@ was experiencing weird
pauses in traffic and lockups because the tx ring was corrupted
because re_start was run concurrently, once from the stack and once
from hfsc.
thanks to bjorn ketelaars for debugging, and mikeb@ for most of the
legwork in diagnosing the problem.
ok mikeb@
schwarze [Mon, 12 Jun 2017 22:50:02 +0000 (22:50 +0000)]
test the new allbox and wrapping features
schwarze [Mon, 12 Jun 2017 22:48:52 +0000 (22:48 +0000)]
Two minor fixes for the "allbox" modifier:
1. It does not reduce explicit "||" in the layout to "|".
2. It does not cause three horizontal lines at the end of a table,
even if the table ends with an explicit "_" data line.
schwarze [Mon, 12 Jun 2017 22:05:41 +0000 (22:05 +0000)]
If a tbl(7) layout contains a 'w' (minimum width) modifier for a
given column, that column contains no literal or numeric cell of
larger width, and all text block cells in that column can be line
wrapped to fit into that minimum width, groff does not increase
that column width beyond the specified minimum: so do the same.