zrj [Mon, 8 Apr 2019 07:41:31 +0000 (10:41 +0300)]
libkvm: Minor trailing whitespace cleanup.
Sascha Wildner [Mon, 8 Apr 2019 17:14:52 +0000 (19:14 +0200)]
libc: Add prototypes for various functions we use in __weak_reference().
Sascha Wildner [Mon, 8 Apr 2019 16:22:03 +0000 (18:22 +0200)]
libc/stdlib: Fix two -Wunused-parameter warnings.
zrj [Sat, 6 Apr 2019 20:04:59 +0000 (23:04 +0300)]
fstat(1): Mangle dev2udev() name.
Avoid symbol conflicts with libkvm internal one.
zrj [Sat, 6 Apr 2019 20:00:10 +0000 (23:00 +0300)]
fstat(1): Move out vm_map traversal functions to libkvm.
For ports benefit.
Suggested-by: dillon
zrj [Sat, 6 Apr 2019 18:28:10 +0000 (21:28 +0300)]
libkvm: Raise WARNS.
zrj [Sat, 6 Apr 2019 18:26:48 +0000 (21:26 +0300)]
libkvm: Suppress last -Wsign-compare warnings.
zrj [Sat, 6 Apr 2019 17:56:47 +0000 (20:56 +0300)]
libkvm: Remove not needed casts in vsnprintf() calls.
Caught by -Wcast-qual.
zrj [Sat, 6 Apr 2019 17:52:33 +0000 (20:52 +0300)]
libkvm: Move kvm_notrans() to kvm.c
Only used in kvm.c and avoids -Winline warnings.
zrj [Sat, 6 Apr 2019 17:41:30 +0000 (20:41 +0300)]
libkvm: Silence -Wtype-limits warning.
The VM_MIN_USER_ADDRESS is currently defined as 0. Prevent "< 0" warning
by using intermediate variable.
zrj [Sat, 6 Apr 2019 17:21:24 +0000 (20:21 +0300)]
libkvm: Silence -Wmissing-field-initializers warnings.
Use designated initializers.
zrj [Sat, 6 Apr 2019 17:11:12 +0000 (20:11 +0300)]
libkvm: Fix -Wunused-parameter warnings.
Remove unused arguments for local functions.
Add __unused attributes for public ones.
zrj [Sat, 6 Apr 2019 17:10:01 +0000 (20:10 +0300)]
libkvm: Fix -Wshadow warnings for gcc47.
zrj [Sat, 6 Apr 2019 16:53:27 +0000 (19:53 +0300)]
libkvm: Fix -Wshadow warnings.
Move variable declarations to top.
zrj [Sat, 6 Apr 2019 16:30:01 +0000 (19:30 +0300)]
libkvm: Sort items in <kvm.h>
zrj [Sat, 6 Apr 2019 16:26:10 +0000 (19:26 +0300)]
libkvm: Always use local kvm.h header.
zrj [Sat, 6 Apr 2019 15:39:18 +0000 (18:39 +0300)]
libkvm: Cleanup kvm_util.c
Remove not needed includes and add <kvm.h> for missing prototype.
No functional change.
zrj [Sat, 6 Apr 2019 15:35:50 +0000 (18:35 +0300)]
libkvm: Add missing prototype for dev2udev().
It is used by sys/kern/kern_kinfo.c (compiled as part of libkvm).
It would be good to mark this function as hidden.
zrj [Sat, 6 Apr 2019 15:34:19 +0000 (18:34 +0300)]
libkvm: Add include guards for kvm_private.h
zrj [Sat, 6 Apr 2019 15:30:41 +0000 (18:30 +0300)]
Kernel: Minor whitespace cleanup in kern_kinfo.c.
zrj [Sat, 6 Apr 2019 10:49:13 +0000 (13:49 +0300)]
libc/dmalloc: Adjust for aligned_alloc() changes.
Follow up for
d3a54aee8be483132cb76ecb195180d8c3cf9ed4.
zrj [Sat, 6 Apr 2019 10:14:49 +0000 (13:14 +0300)]
libc/dmalloc: Fix unused warning for non INVARIANTS.
zrj [Wed, 3 Apr 2019 13:26:44 +0000 (16:26 +0300)]
libc/stdlib: Refactor aligned_alloc().
* Lift the restriction from posix_memalign() that alignment should be
more or equal to sizeof(void *).
* Make aligned_alloc() a weak symbol.
* Adjust the manpage.
zrj [Mon, 1 Apr 2019 17:50:01 +0000 (20:50 +0300)]
Add <alloca.h> header.
There are quite a few ports that often assume <alloca.h> availability.
This addition should ease up porting efforts. It is reasonable to try
including different header than <stdlib.h> for alloca() definition:
* alloca() is not implemented in libc (it is implemented by compiler);
* <stdlib.h> will not provide alloca() macro for !__BSD_VISIBLE case;
* including <stdlib.h> might bring in additional unwanted namespace
pollution when implementing certain low-level features.
zrj [Mon, 1 Apr 2019 17:16:47 +0000 (20:16 +0300)]
libc/stdlib: Add __cxa_thread_atexit_impl() hook.
The __cxa_thread_atexit_impl() helper is needed for mainly c++ runtime
libraries to support destructors for thread local storage using LIFO.
The _thread_finalize() is implemented based on OpenBSD variant with few
exceptions: less restrictive destructors calling scheme and c++ runtime
preserves implementation details how it orders (or even uses) this libc
addition. Based on other BSDs and libsdc++/libc++ code this is least
intrusive method to have pthread_exit() hooks in libc runtime. By the
looks, in base system nothing was using libstdc++ internal version.
While there, enable __cxa_thread_atexit_impl() usage in gcc80 libstdc++.
zrj [Mon, 1 Apr 2019 11:20:40 +0000 (14:20 +0300)]
libc/stdlib: Avoid calling destructors in a wrong order.
There is a possibility that dso handle in __cxa_finalize() might be owned
by another dso. On exit(3) calling these destructors is pointless.
Sascha Wildner [Sun, 7 Apr 2019 18:42:57 +0000 (20:42 +0200)]
libc: Fix some -Wunused-parameter warnings.
Sascha Wildner [Sun, 7 Apr 2019 16:34:48 +0000 (18:34 +0200)]
libc/libpthread: Add guard to fix redundant __isthreaded declarations.
Sascha Wildner [Sun, 7 Apr 2019 16:33:25 +0000 (18:33 +0200)]
libc/stdio: Remove two redundant prototypes.
Sascha Wildner [Sun, 7 Apr 2019 15:33:54 +0000 (17:33 +0200)]
libc/net: Remove some unneeded externs.
Prototypes are in netdb_private.h.
I had forgotten this in
a1ff66cb7764cf805b759f2c7bfc51a8a11cf1aa.
Fixes some -Wredundant-decls warnings.
Sascha Wildner [Sun, 7 Apr 2019 15:46:06 +0000 (17:46 +0200)]
libc/db: Add an include guard.
joerg had added one back in 2005 in
871020e7804af32d9a544b48cd250fa4
but it was overwritten 8 years later in another sync with FreeBSD in
abd448c3b2d3508465e48d9cfdb163ef88fc242e.
This fixes a number of -Wredundant-decls which we'll hopefully enable
by default in the future.
Sascha Wildner [Sun, 7 Apr 2019 10:42:48 +0000 (12:42 +0200)]
libmd: Remove sha384 traces.
Sascha Wildner [Sun, 7 Apr 2019 09:54:49 +0000 (11:54 +0200)]
<sys/ttydefaults.h>: Constify ttydefchars[], make size implicit and assert.
While here, fix some whitespace too.
Mostly-taken-from: FreeBSD
Sascha Wildner [Sun, 7 Apr 2019 09:36:02 +0000 (11:36 +0200)]
str{,case}cmp.3: Remove further bcmp(3) references.
Sascha Wildner [Sun, 7 Apr 2019 09:05:57 +0000 (11:05 +0200)]
<termios.h>: Cleanup #include, fix whitespace.
Sascha Wildner [Sun, 7 Apr 2019 08:21:28 +0000 (10:21 +0200)]
memcmp.3: Remove bcmp(3) reference.
Sascha Wildner [Sun, 7 Apr 2019 06:57:55 +0000 (08:57 +0200)]
libc: Merge bcmp.3 and memcmp.3.
This follows the merge in the code in
83d15e579c5b3b6ab775b345f1d68069.
Sascha Wildner [Sat, 6 Apr 2019 11:46:51 +0000 (13:46 +0200)]
Sync ACPICA with Intel's version
20190405.
* Fix some issues when resuming from suspend. Likely doesn't affect
DragonFly.
* iasl(8): Support compiling multiple files to a single namespace.
For detailed list, please see sys/contrib/dev/acpica/changes.txt.
Tomohiro Kusumi [Fri, 5 Apr 2019 20:59:45 +0000 (05:59 +0900)]
sys/vfs/fuse: Fix confusing vop_write_dirent() retval test
vop_write_dirent() has confusing return value (bug).
When vop_write_dirent() returns non zero, *error is unchanged.
OTOH when vop_write_dirent() returns zero, *error may be non zero.
Tomohiro Kusumi [Fri, 5 Apr 2019 20:52:35 +0000 (05:52 +0900)]
sys/vfs/autofs: Use VFS_STATFS()
Sascha Wildner [Fri, 5 Apr 2019 22:16:29 +0000 (00:16 +0200)]
<unistd.h>: Update one more comment.
Sascha Wildner [Fri, 5 Apr 2019 22:08:40 +0000 (00:08 +0200)]
<unistd.h>/<sys/unistd.h>: Update comments.
Tomohiro Kusumi [Fri, 5 Apr 2019 19:15:20 +0000 (04:15 +0900)]
sys/vfs/fuse: Mark /dev/autofs with D_MPSAFE
/dev/autofs was left without mpsafe flag.
Tomohiro Kusumi [Thu, 4 Apr 2019 17:40:49 +0000 (02:40 +0900)]
sys/vfs/fuse: Add a comment
Matthew Dillon [Fri, 5 Apr 2019 06:46:26 +0000 (23:46 -0700)]
kernel - quiet repeated DA/CD probes for removable devices
* Don't print errors when repeated probes for cards in sdcard
readers fail, beyond the first instance.
* Fixes console spam when usb card readers are plugged in.
Sascha Wildner [Thu, 4 Apr 2019 06:22:47 +0000 (08:22 +0200)]
Remove timezone typo via 'make upgrade'.
Tomohiro Kusumi [Tue, 2 Apr 2019 15:30:11 +0000 (00:30 +0900)]
sys/vfs/fuse: Drop PCATCH from tsleep on waiting IPC completion
Even with kern_sigprocmask(SIG_BLOCK) called prior to tsleep(9),
tsleep with PCATCH flag can still catch a signal (e.g. SIGINT) and
return 0 (not EINTR).
This is due to tsleep(9) setting "lp->lwp_flags |= LWP_SINTR;" before
going into sleep when PCATCH is specified.
When this happens, KKASSERT() after tsleep(9) can be false, so just
drop PCATCH.
Matthew Dillon [Tue, 2 Apr 2019 23:00:06 +0000 (16:00 -0700)]
kernel - Add AC256 (sound) quirk
* Add quirk for AC256 sound devices.
Taken-from: FreeBSD
Tested-by: drill-use@irc
Sascha Wildner [Tue, 2 Apr 2019 16:31:40 +0000 (18:31 +0200)]
Sync ACPICA with Intel's version
20190329.
* Improve namespace support: Remove address nodes from global list
after method termination to properly remove Operation Region nodes
that are declared dynamically.
* Some improvements in iasl(8) and acpiexec(8).
For detailed list, please see sys/contrib/dev/acpica/changes.txt.
Thanks to zrj for testing.
Sascha Wildner [Tue, 2 Apr 2019 16:11:55 +0000 (18:11 +0200)]
Sync zoneinfo database with tzdata2019a from ftp://ftp.iana.org/tz/releases
* Palestine will not start DST until 2019-03-30, instead of 2019-03-23 as
previously predicted.
* Metlakatla rejoined Alaska Time (from previously Pacific Standard Time)
on 2019-01-20.
* Affecting older timestamps only: Israel observed DST in 1980 and 1984.
For a detailed list of changes, see share/zoneinfo/NEWS.
Tomohiro Kusumi [Mon, 1 Apr 2019 17:40:27 +0000 (02:40 +0900)]
sys/vfs: Remove .vop_mmap implementations
These either return EINVAL or panic.
VOP_MMAP() is unused in the first place.
(FreeBSD got rid of VOP_MMAP() entirely in 2000.)
--
commit
1afa7eea2714a80f7f460a084f2dd793df48a236
Author: eivind <eivind@FreeBSD.org>
Date: Wed Nov 1 17:57:24 2000 +0000
Give vop_mmap an untimely death. The opportunity to give it a timely
death timed out in 1996.
Tomohiro Kusumi [Mon, 1 Apr 2019 17:31:59 +0000 (02:31 +0900)]
sys/vfs/fuse: Add fuse_vop_{get,put}pages()
No functional changes (yet).
Tomohiro Kusumi [Mon, 1 Apr 2019 17:25:07 +0000 (02:25 +0900)]
sys/vfs/fuse: Add assertions
Tomohiro Kusumi [Mon, 1 Apr 2019 15:25:36 +0000 (00:25 +0900)]
sys/vfs/fuse: Cleanup (use TAILQ_FOREACH())
Didn't need to use safe version.
Sepherosa Ziehau [Mon, 1 Apr 2019 12:29:39 +0000 (20:29 +0800)]
lapic: Don't do AMD C1E fixup on virtual machines by default.
Host should already have fixed it up.
This is a follow-up fix for:
cb46bbd1802f449d255ccfb68937b5f3f2284584
zrj [Mon, 1 Apr 2019 09:14:02 +0000 (12:14 +0300)]
rc.d/sysctl: Use buffer to print out the sysctl changes.
Fixes output in logs (does not break lines).
Sascha Wildner [Mon, 1 Apr 2019 08:54:47 +0000 (10:54 +0200)]
Clean up some gcc50 remains.
Matthew Dillon [Sun, 31 Mar 2019 22:35:02 +0000 (15:35 -0700)]
kernel - Add LAPIC timer C1E test skip for AWS
* AWS's new EPYC instances (such as m5ad.large) will general-protect
fault on the MSR we use to test lapic C1E. For now introduce a
tunable that allows this test to be turned off.
* AWS instances should put 'hw.lapic_timer_c1e_test=0' in
/boot/loader.conf
* Allows DFly to boot on AWS as of ami-
027940491fc788325 on us-east
N. Virginia.
Sascha Wildner [Sun, 31 Mar 2019 18:37:28 +0000 (20:37 +0200)]
Move <sys/termios.h> to <termios.h>.
CCEQ() is moved to <sys/_termios.h>. The kernel needs nothing else from
it.
The few dports that were including <sys/termios.h> were mostly missing
some kind of "... || defined(__DragonFly__)" to go with FreeBSD's
adjustments.
Thanks to zrj and tuxillo for taking care of dports.
Tomohiro Kusumi [Sun, 31 Mar 2019 16:30:07 +0000 (01:30 +0900)]
sys/vfs/fuse: Add initial FUSE support
The basic code design comes from FreeBSD, but the code is written
from scratch. It was just easier to write from scratch than trying to
port sys/fs/fuse/* in FreeBSD for various reasons. Note that this is
to implement FUSE API/ABI, but not to be compatible with FreeBSD
implementation which contains FreeBSD specific sysctls, etc.
The initial version doesn't support FUSE_WRITE by disabling
VOP_WRITE() by returning EOPNOTSUPP. It currently works with simple
write(2) calls like dd(1) via direct I/O, but not when syncer thread
or mmap(2) gets involved under non trivial conditions. It looks to
be doable with custom VOP_GETPAGES() and VOP_PUTPAGES(), but if not
then it requires some changes to sys/kern/* and sys/vm/* to properly
support writes.
Besides above, this initial version supports basic FUSE operations
invoked from file related system calls via FUSE VOP's, but not things
like FUSE_IOCTL, FUSE_POLL, FUSE_FALLOCATE, etc. Although dmesg says
FUSE 7.28, don't expect it to support everything 7.28 (or anywhere
close to 7.28) says it has.
FUSE will be dropped from DragonFly releases until it gets stabilized
to certain extent including above, at least for write support.
Tomohiro Kusumi [Sun, 31 Mar 2019 16:30:07 +0000 (01:30 +0900)]
sys/kern: Add struct file* arg to VOP_{GETATTR,SETATTR,READ,WRITE,FSYNC,READDIR}
This commit changes VOP interface to support FUSE API/ABI.
It just adds an additional struct file* argument to VOP's, so that
FUSE VOP's can access *fp pointer (currently accessible only from
caller of VOP's if any, with exception of VOP_OPEN(), VOP_CLOSE(),
etc) and make use of its ->private_data pointer.
FUSE API/ABI requires FUSE to maintain a per file (usually per file
descriptor) data called fh. The fh is an opaque data whose purpose
may differ among userspace filesystems, but typically used to store
file descriptor value or arbitrary userspace address used by the
userspace filesystem process.
Below diagram illustrates typical flow of maintaining fh. The
userspace filesystem uses fd obtained from opening backing store
(e.g fd for regular file, socket, etc) for fh, as a consequence of
end user's open(2) syscall, and expects FUSE to maintain that value
for future use as an identifier for userspace.
* Notes on Linux VFS I/F vs BSD VFS I/F:
In Linux, supporting the concept of fh is quite straight forward since
Linux kernel has functions vector built around (opened)file including
things like mmap(2) handler, in addition to a vector built around
inode.
But since DragonFly doesn't have a vector built around file (other
than a simple struct fileops, which doesn't meet requirements of fh),
this change was needed for selected VOP's as minimum requirements
for initial FUSE API/ABI support.
--
FUSE user FUSE FUSE userspace fs
| | |
|---------open(2)--------->| |
| * issue VOP_OPEN |---------VOP_OPEN-------->|
| | * issue FUSE_OPEN | * open something
| | | * reply fd as fh
| |<--------VOP_OPEN---------|
|<--------open(2)----------| * store fh in fp |
| * open success | |
| | |
|... | |
|... | |
| | |
|---------read(2)--------->| |
| * issue VOP_READ |---------VOP_READ-------->|
| | * issue FUSE_READ |
| | with fh from fp | * read something
| | | using fh for fd
| |<--------VOP_READ---------|
|<--------read(2)----------| * return read bytes |
| * uiomove() success | |
| | |
Sascha Wildner [Sat, 30 Mar 2019 17:51:46 +0000 (18:51 +0100)]
kernel: Remove two duplicate #include's.
Sascha Wildner [Sat, 30 Mar 2019 16:57:09 +0000 (17:57 +0100)]
callout.9: Fix callout_terminate() prototype.
Matthew Dillon [Sat, 30 Mar 2019 03:21:39 +0000 (20:21 -0700)]
kernel - Fix panic in uhci attach error path (2)
* Add missing header file for last commit.
François Tigeot [Fri, 29 Mar 2019 21:26:33 +0000 (22:26 +0100)]
drm/ttm: Sync with Linux 3.16
Sascha Wildner [Fri, 29 Mar 2019 20:51:19 +0000 (21:51 +0100)]
callout.9: Remove an unneeded .Pp (before .It). Also bump .Dd.
François Tigeot [Fri, 29 Mar 2019 20:03:21 +0000 (21:03 +0100)]
drm/linux: Add some shrinker stub code
Matthew Dillon [Fri, 29 Mar 2019 16:52:51 +0000 (09:52 -0700)]
kernel - Fix panic in uhci attach error path
* Fix a panic in uhci's attach error path for an early failure
case. uhci was trying to release a non-existant irq.
Reported-by: peeter007, zrj
Sascha Wildner [Fri, 29 Mar 2019 16:23:48 +0000 (17:23 +0100)]
Adjust for the removal of callout_stop_sync().
* Remove the manual page via 'make upgrade'.
* Update porting_drivers.txt
Sascha Wildner [Thu, 28 Mar 2019 21:56:58 +0000 (22:56 +0100)]
kernel/netgraph7: Fix the build after the recent callout changes.
Matthew Dillon [Thu, 28 Mar 2019 21:38:59 +0000 (14:38 -0700)]
kernel - Add callout API calls for netgraph7 (2)
* Obviously we have to choose rarg/rfunc or qarg/qfunc.
From examining the two use cases, select qarg/qfunc.
Matthew Dillon [Thu, 28 Mar 2019 19:46:54 +0000 (12:46 -0700)]
kernel - Add callout API calls for netgraph7
* Add a few more API calls to callout to support
netgraph7's abuse of the mechanism.
Reported-by: swildner
Matthew Dillon [Thu, 28 Mar 2019 06:45:38 +0000 (23:45 -0700)]
kernel - make bcmp linux-compatible, add memcmp
world - make bcmp linux-compatible
* Make bcmp and memcmp the same. Our bcmp() was returning
0 or 1 (not subtracting the last byte), which is compatible
with the manual page but it isn't what linux does.
* It also looks like memcmp is sometimes turned into bcmp by
the compiler (?), at least when compiling the kernel, so
we don't want to break that either.
* Add memcmp to the kernel build, synchronize both memcmp and bcmp
from libc.
* This makes our bcmp compatible with linux.
Matthew Dillon [Thu, 28 Mar 2019 06:06:30 +0000 (23:06 -0700)]
kernel - Try to ensure a uniform fsid for exports (2)
* Just use a direct fsid.val[0]/val[1] comparison for now.
Fixes NFS exports. kernel compile is converting memcmp to
bcmp but bcmp doesn't returned a signed value. Will have to
check compatibility issues and fix in a follow-up commit.
Matthew Dillon [Thu, 28 Mar 2019 05:16:01 +0000 (22:16 -0700)]
kernel - Try to ensure a uniform fsid for exports
* For filesystems which do not generate their own fsid (hammer2, tmpfs,
others) we generate a fsid based on the mount path.
* Ensure fsid is uniquified when inserting onto the mount list.
Collisions should be rare but the hash is only around 24 bits.
* Index the mount structure on a RB tree via the fsid.
Matthew Dillon [Thu, 28 Mar 2019 03:01:46 +0000 (20:01 -0700)]
kernel - Rewrite the callout_*() API (4)
* Remove a debugging kprintf().
Matthew Dillon [Wed, 27 Mar 2019 23:26:06 +0000 (16:26 -0700)]
kernel - Rewrite the callout_*() API (3)
* Fix callout_reset_bycpu() (it was queueing to the current cpu
instead of the specified cpu).
Sascha Wildner [Wed, 27 Mar 2019 19:19:02 +0000 (20:19 +0100)]
man9/Makefile: Remove wrong backslash.
Introduced in
eb67213abec698ffb555ee926f2761bcb7e95f55.
While here, sort callout.9 MLINKS.
Reported-by: zrj
Sascha Wildner [Wed, 27 Mar 2019 17:59:47 +0000 (18:59 +0100)]
mtree/BSD.usr.dist: Sort.
Matthew Dillon [Wed, 27 Mar 2019 17:50:14 +0000 (10:50 -0700)]
world - Add missing sample file for aws imaging script
* Add missing sample file for aws imaging script.
* Add missing mtree directory for above.
* Fixes installworld
Matthew Dillon [Wed, 27 Mar 2019 17:32:05 +0000 (10:32 -0700)]
kernel - Fix more wiring / fictitious bugs w/recent VM work
* Fictitious pages cannot be placed on any VM paging queue,
assert this and fix a few places where it could.
* This will remove most of the 'Encountered wired page %p on queue'
warnings reported. This kprintf() is still in place for the moment
because generally speaking pages should be unwired before VM objects
are destroyed.
But other than VM object destruction, its actually ok for wired pages
to be on the paging queues now.
Matthew Dillon [Wed, 27 Mar 2019 17:10:39 +0000 (10:10 -0700)]
kernel - Rewrite the callout_*() API (2)
* Fix misc issues, particularly synchronous stalls in tsleep
due to races. Also some of the flag accounting was broken,
and STOP was not properly overriding a queued RESET.
Matthew Dillon [Wed, 27 Mar 2019 17:08:25 +0000 (10:08 -0700)]
world - Fix fstat and gcore
* fstat needs to iterate vm_map_entry's
via the RB tree, but it isn't entirely trivial because we
have to kread().
* gcore needs to steal a different field for its iterator
when building a map from procfs.
* Fixes buildworld.
Reported-by: zrj
Matthew Dillon [Wed, 27 Mar 2019 17:05:27 +0000 (10:05 -0700)]
Revert "fstat(1): Convert to RB_FOREACH() for memory maps."
This reverts commit
b8459d8490f9cd3174dc62a0e1ac4bae85da83b9.
This won't work because the pointers are in kvm, will commit
a rewrite in a sec.
zrj [Wed, 27 Mar 2019 12:22:32 +0000 (14:22 +0200)]
vkernel64: Sync to recent API changes.
zrj [Wed, 27 Mar 2019 09:48:02 +0000 (11:48 +0200)]
fstat(1): Convert to RB_FOREACH() for memory maps.
After
47ec0953d00a4e55498312418ed65d3aadc9cc8a kernel change.
zrj [Wed, 27 Mar 2019 09:39:49 +0000 (11:39 +0200)]
<sys/callout.h>: Add missing <sys/spinlock.h> include.
Needed for userland tools after:
eb67213abec698ffb555ee926f2761bcb7e95f55
Aaron LI [Wed, 27 Mar 2019 08:27:14 +0000 (16:27 +0800)]
fdisk.8: Update DragonFly slice type to 108 (6C)
Matthew Dillon [Tue, 26 Mar 2019 21:11:56 +0000 (14:11 -0700)]
kernel - Rewrite the callout_*() API
* Rewrite the entire API from scratch and improve compatibility
with FreeBSD. This is not an attempt to achieve full API compatibility,
as FreeBSD's API has unnecessary complexity that coders would frequently
make mistakes interpreting.
* Remove the IPI mechanisms in favor of fine-grained spin-locks instead.
* Add some robustness features in an attempt to track down corrupted
callwheel lists due to originating subsystems freeing structures out
from under an active callout.
* The code supports a full-blown type-stable/adhoc-reuse structural
separation between the front-end and the back-end, but this feature
is currently not operational and may be removed at some future point.
Instead we currently just embed the struct _callout inside the
struct callout.
* Replace callout_stop_sync() with callout_cancel().
* callout_drain() is now implemented as a synchronous cancel instead
of an asynchronous stop, which is closer to the FreeBSD API and
expected operation for ported code (usb stack in particular). We
will just have to fix any deadlocks which we come across.
* Retain our callout_terminate() function as the 'better' way to
stop using a callout, as it will not only cancel the callout but
also de-flag the structure so it can no longer be used.
Matthew Dillon [Sun, 24 Mar 2019 05:57:02 +0000 (22:57 -0700)]
kernel - Refactor swapcache heuristic
* Refactor the swapcache inactive queue heuristic to remove a
write to a global variable that is in the critical path, and
to improve operation. This should reduce cpu cache ping-ponging.
* Change vpgqueues.lcnt from an int to a long, change misc use
cases in the pageout code to a long.
* Use __aligned(64) to 64-byte-align vm_page_queues[]. It was
previously only 32-byte aligned.
Matthew Dillon [Sat, 23 Mar 2019 22:29:14 +0000 (15:29 -0700)]
kernel - Preliminary vm_page hash lookup (2), cleanups, page wiring
* Correct a bug in vm.fault_quick operation. Soft-busied pages cannot
be safely wired or unwired. This fixes a wire/unwire race related panic.
* Optimize vm_page_unhold() to normally not have to obtain any spin-locks
at all, since related pages are almost never in the PQ_HOLD VM page
queue. This leaves open a minor race condition where pages with
a hold_count of 0 can accumulate in PQ_HOLD.
* Add vm_page_scan_hold() to the pageout daemon. Unconditionally scan
PQ_HOLD very slowly to remove any pages whos hold_count is 0.
* REFACTOR PAGE WIRING. Wiring vm_page's no longer removes them from
whatever paging queue they are on. Instead, proactively remove
such pages from the queue only when we need to (typically in the
pageout code).
* Remove unused PV_FLAG_VMOBJECT.
* Fix missing atomic-op in pc64/x86_64/efirt.c
* Do not use m->md.pv_list for pagetable pages. It is now only used for
terminal pages.
* Properly initialize pv_flags to 0 when a pv_entry is allocated.
* Add debugging to detect managed pmap_enter()s without an object.
* Conditionalize the setting of PG_MAPPED and PG_WRITEABLE in the
pmap code to avoid unnecessary cpu cache mastership changes.
* Move assertions in vm_pageout.c that could trigger improperly due
to a race.
Matthew Dillon [Sat, 23 Mar 2019 21:11:42 +0000 (14:11 -0700)]
kernel - Optimize vm_page_wakeup(), vm_page_hold(), vm_page_unhold()
* vm_page_wakeup() does not need to acquire the vm_page spin-lock.
The caller holding the page busied is sufficient.
* vm_page_hold() does not need to acquire the vm_page spin-lock as
the caller is expected to hold the page busied, soft-busied,
or stabilized via an interlock (such as the vm_object interlock).
* vm_page_unhold() only needs to acquire the vm_page spin-lock on
the 1->0 transition of m->hold_count.
Matthew Dillon [Sat, 23 Mar 2019 18:37:36 +0000 (11:37 -0700)]
kernel - Preliminary vm_page hash lookup
* Add preliminary vm_page hash lookup code which avoids most
locks, plus support in vm_fault. Default disabled, with debugging
for now.
* This code still soft-busies the vm_page, which is an improvement over
hard-busying it in that it won't contend, but we will eventually want
to entirely avoid all atomic ops on the vm_page to *really* get the
concurrent fault performance.
Matthew Dillon [Sat, 23 Mar 2019 02:50:07 +0000 (19:50 -0700)]
kernel - Refactor vm_map structure 1/2
* Remove the embedded vm_map_entry 'header' from vm_map.
* Remove the prev and next fields from vm_map_entry.
* Refactor the code to iterate only via the RB tree. This is not as
optimal as the prev/next fields were, but we can improve the RB tree
code later to recover the performance.
Matthew Dillon [Wed, 27 Mar 2019 02:33:03 +0000 (19:33 -0700)]
kernel - Fix df and unmount of bad NFS volumes
* Fix an issue where a bad filesystem would not be listed in the
df output due to the vfsstat refresh failing. Allow vfsstat refreshes
to fail.
* Fix an issue where a NFS mount that goes bad could not be unmounted
due to the path lookup failing with EBADRPC, ESTALE, or EIO. These
may now be unmounted with umount -f ...
Sascha Wildner [Tue, 26 Mar 2019 09:15:24 +0000 (10:15 +0100)]
wait.2: Fix excessive .Dv usage. Use proper markup.
Sascha Wildner [Mon, 25 Mar 2019 17:51:08 +0000 (18:51 +0100)]
kernel: Clean up the usage of <machine/pc/bios.h> and the header itself.
* In the boot code, use defines from this header instead of keeping local
ones.
* In acpi_machdep.c, remove an unneeded inclusion of the header.
* Remove unused stuff from the header.
Reported-by: zrj
Sascha Wildner [Mon, 25 Mar 2019 10:21:27 +0000 (11:21 +0100)]
ipfw(8): Remove unnecessary cast.
Sascha Wildner [Mon, 25 Mar 2019 09:16:53 +0000 (10:16 +0100)]
dumpfs(8): Fix conversion of 32 bit ufs_time_t's with ctime().
Data from neighboring fields was leaking in, leading to odd dates.
zrj [Sun, 24 Mar 2019 12:10:16 +0000 (14:10 +0200)]
kernel/pc64: Remove leftover debug kprintf.