Sascha Wildner [Thu, 2 Feb 2017 19:11:38 +0000 (20:11 +0100)]
Fix two typos in manual pages.
Matthew Dillon [Wed, 1 Feb 2017 02:33:33 +0000 (18:33 -0800)]
kernel - Avoid p->p_token when sending a signal to a particular lwp
* Avoid holding the per-process token excluysively when sending a signal
to a particular lwp. Hold it shared to locate the lwp, but otherwise do
all signal processing with the target lwp's token.
* Significantly improves vkernel timer operation. Timer distribution to
multiple cpus no longer trip over themselves.
Matthew Dillon [Wed, 1 Feb 2017 01:10:44 +0000 (17:10 -0800)]
kernel - Augment vm_fault_page() for vkernel operations
* Augment vm_fault_page(), adding required elements from vm_fault() that
were missing.
* In particular, this fixes a bug in any copyout to a growable stack segment
(including the copyouts the exec code does), where the stack was not being
properly grown and the copyout/suword64/etc calls were failing when they
shouldn't have.
* Note optimization in pmap_clean_pte(). When turning off VPTE_RW, we
do not have to MADV_INVAL to the real host if we determine that VPTE_M
is not set. Due to the way the vkernel works and host works, the host
will utilize a read-only real PTE for read faults on VPTE_RW entries,
in order to be able to detect writes by forcing a write fault when the
write occurs.
* Fix a race between pmap_enter() and pmap_page_protect(). The vkernel
doesn't have a convenient pv-lock like the read kernel pmap code, so
use the vm_page spinlock instead.
* Generally use atomic ops for other operations on ptes that should be
using atomic ops.
* Only clear PG_WRITEABLE while holding the vm_page spinlock.
Matthew Dillon [Wed, 1 Feb 2017 01:06:06 +0000 (17:06 -0800)]
vkernel - Adjust invalidation ABI a bit
* Make some adjustments to tighten up the atomic ops the vkernel uses to
modify VPTEs.
* Report unexpected VPTE_M races.
Matthew Dillon [Wed, 1 Feb 2017 01:04:42 +0000 (17:04 -0800)]
kernel - Validate that previous pte was cleaned.
* In pmap_enter(), validate that the previous pte was cleaned. Add
a debugging kprintf() if it wasn't.
Matthew Dillon [Wed, 1 Feb 2017 01:04:13 +0000 (17:04 -0800)]
kernel - Minor formatting cleanup
* Minor formatting cleanup
Matthew Dillon [Tue, 31 Jan 2017 06:23:47 +0000 (22:23 -0800)]
kernel - Fix race with vmspace_entry destroy race
* Fix a race in a host-side vkernel related structure that could
result in a double-free.
Matthew Dillon [Tue, 31 Jan 2017 02:25:17 +0000 (18:25 -0800)]
rc.d - Use kldstat -m to test existance before kldload
* Use kldstat -m module || kldload -n module || exit 1 (roughly) when
testing modules in rc scripts.
* Fixes issue where kernels boot up in secure mode (aka vkernels do this
by default) and rc scripts fail because kldload exits immediately with
an error, even if the module already exists.
Matthew Dillon [Mon, 30 Jan 2017 20:13:58 +0000 (12:13 -0800)]
vkernel - Change how VPTE_M works to fix seg-faults during paging
* Properly set and clear PG_WRITEABLE
* TAILQ_FOREACH() iterations on m->md.pv_list must be restarted
if we ever drop the spin-lock.
* Change VPAGETABLE semantics and operation, cleaning up some things
and fixing others.
Have the real-kernel only conditionally downgrade the real pte to
read-only for a VPTE_RW vpte. It only downgrades it if VPTE_M is
not set, improving performance.
Fix the virtual kernel to properly invalidate the real-kernel pte's
when clearing VPTE_M. This improves issues that crop up when the
vkernel is paging heavily.
* Replace the linear pv_plist with a RB tree. Also have pmap_remove_pages()
simply call pmap_remove().
Note that pmap_remove_pages()'s old code was broken because it only
scanned the pv_entry list and missed unmanaged pages. Fixing this
also fixes a vmspace reuse issue where the real-host pmap still
contained stale PTEs from prior use.
Matthew Dillon [Mon, 30 Jan 2017 17:45:58 +0000 (09:45 -0800)]
kernel - Fix races created by a comedy of circumstansces (3)
* Change pv semantics such that pv->pv_m must always exist while a pv is
installed in the pmap's RBTREE.
* Change pv_put() to assert that pv->pv_m exists. Use an unlock/drop
sequence for those cases where it might not exist.
* Fix an incorrect assertion.
* Move a pv_put() outside of the pmap spinlock that was incorrectly inside.
* Reorder how PG_MANGED_IDX / PG_UNMANAGED tests work.
Matthew Dillon [Mon, 30 Jan 2017 17:39:51 +0000 (09:39 -0800)]
kernel - Fix VTEXT/open race
* For now add O_RDWR to the list of flags that must use an exclusive
namecache lock when executing open(). This fixes a VTEXT/open race.
* This is not perfect w/regards to performance, so further enhancement may
be forthcoming.
Reported-by: mjg_ (Mateusz Guzik)
Matthew Dillon [Mon, 30 Jan 2017 17:37:58 +0000 (09:37 -0800)]
kernel - Fix shared/exclusive spinlock race
* Fix a long-standing bug in the shared spinlock code which could
unintentionally cause a contending exclusive waiter to acquire its
lock shared.
* Fixes a pmap issue exercised by the vkernel.
* The namecache also uses shared spinlocks but was far less likely to hit
the bug.
Matthew Dillon [Mon, 30 Jan 2017 04:25:42 +0000 (20:25 -0800)]
kernel - Add missing flag to vm_page_alloc() initializer.
* vm_page_alloc() (and the contig functions too) clear most vm_page->flags,
but not all. PG_ACTIONLIST was being improperly cleared.
* Fix the case (may fix occassional races in usched).
* Add a #define to ensure the flags we need to keep are defined in only
one place.
Sascha Wildner [Mon, 30 Jan 2017 08:56:27 +0000 (09:56 +0100)]
libc/libpthread: Some manual page cleanup after the *setaffinity* work.
Sascha Wildner [Mon, 30 Jan 2017 08:37:20 +0000 (09:37 +0100)]
libc: Remove the unused NO_P1003_1B variable checks.
Sascha Wildner [Sun, 29 Jan 2017 23:13:31 +0000 (00:13 +0100)]
Remove no longer needed include <sys/ccbque.h> (see
075c6d38244a).
Matthew Dillon [Sun, 29 Jan 2017 08:47:50 +0000 (00:47 -0800)]
kernel - Fix races created by a comedy of circumstances (2)
* Fix an issue where _pv_get() would not properly retry a pv lookup
after sleeping on a blocked placemark index.
Matthew Dillon [Sun, 29 Jan 2017 04:02:03 +0000 (20:02 -0800)]
kernel - Fix races created by a comedy of circumstances
* Fix several loop iteration races in the pmap code revealed by a chain
of events. Initially the commit to relax locking of vm_map for
MADV_INVAL operations (used by the vkernel) worked just fine. The
idea being that the pmap code was fine-grained locked and so a wider
encompassing lock should not have been needed.
However, a later commit to reduce the size of the zalloc pcpu caches
caused more cycling of pv_entry structures across cpus which revealed
a number of SMP races in the pmap code.
* A number of these races were fixed in recent commits and this commit
fixes a few more, primarily in the vm_page_t pv_entry loop iterators.
Matthew Dillon [Sat, 28 Jan 2017 22:08:39 +0000 (14:08 -0800)]
kernel - Fix races in the vm_map and vm_object page-scanning code
* Calling lwkt_yield() while depending on the vm_object token to stabilize
a vm_page_t is a bad idea. Move the calls to the end of the routine
where they don't hurt anyone (the RB tree scanning code can handle
ripouts, the callback functions cannot).
* Unconditionally busying a vm_page_t in a RB tree scanning callback
and then trying to re-check it to see if its still ok is a bad idea.
Instead, use vm_page_busy_try() so as not to break the object token
lock. If it fails, sleep on the page and set a retry condition but
do not act on it.
* Fix an issue in vm_object_pmap_remove() where the function operates
incorrect if passed a 0-length address range.
Matthew Dillon [Sat, 28 Jan 2017 22:07:02 +0000 (14:07 -0800)]
kernel - Use GDF_VIRTUSER to help measure user% in the vkernel host
* The vkernel host measures time in the vkernel VMM (when VMM is enabled)
as system time. Use the GDF_VIRTUSER flag to try to measure that time
as user time.
Matthew Dillon [Sat, 28 Jan 2017 18:30:53 +0000 (10:30 -0800)]
kernel - Fix vkernel race in host
* Obtaining a cache_ref before setting the DELETED flag deals with any
drop race on cache_refs from another thread.
This is actually quite elegant when done correctly. The VKE_REF_DELETED
on ve->refs determines when the ve has been destroyed, while
ve->cache_refs determines when to kfree() the ve. Acquiring an extra
cache_ref before setting DELETED interlocks the two fields for last-drop
purposes.
Matthew Dillon [Sat, 28 Jan 2017 08:19:59 +0000 (00:19 -0800)]
vkernel - Save/restore errno in signal code
* Save and restore errno in the signal handling code, as most of this code
can potentially make system calls.
Matthew Dillon [Sat, 28 Jan 2017 08:18:33 +0000 (00:18 -0800)]
vkernel - Fix numerous pmap invalidation bugs
* Fix various vkernel pmap invalidation bugs and normalize the code a bit.
Matthew Dillon [Sat, 28 Jan 2017 08:17:37 +0000 (00:17 -0800)]
vkernel - Zero out memory on startup
* Zero out memory on startup to force it to be paged in. This was already
done for non-VMM mode. Also do it for VMM mode. Work in progress.
Matthew Dillon [Sat, 28 Jan 2017 08:16:35 +0000 (00:16 -0800)]
kernel - Adjust vmm_guest_sync_addr()
* Adjust vmm_guest_sync_addr() to invalidate the current cpu's tlb
only for VMM when called with (NULL, NULL).
Matthew Dillon [Sat, 28 Jan 2017 08:08:05 +0000 (00:08 -0800)]
kernel - Change vm_fault_page[_quick]() semantics + vkernel fixes
* vm_fault_page[_quick]() needs to be left busied for PROT_WRITE so
modifications made by the caller do not race other operations in the
kernel. Modify the API to accomodate the behavior.
* Fix procfs write race with new vm_fault_page() API.
* Fix bugs in ept_swapu32() and ept_swapu64() (vkernel + VMM)
* pmap_fault_page_quick() doesn't understand EPT page tables, have it
fail for that case too. This fixes bugs in vkernel + VMM mode.
* Also do some minor normalization of variables names in pmap.c
* vkernel/pmap - Use atomic_swap_long() to modify PTEs instead of a
simple (non-atomic) assignment.
* vkernel/pmap - Fix numerous bugs in the VMM and non-VMM code for
pmap_kenter*(), pmap_qenter*(), etc.
* vkernel/pmap - Collapse certain pmap_qremove_*() routines into the
base pmap_qremove().
Matthew Dillon [Sat, 28 Jan 2017 08:00:54 +0000 (00:00 -0800)]
kernel - Remove ffs_rawread() (2)
* Remove conf/files entry
Matthew Dillon [Fri, 27 Jan 2017 23:05:11 +0000 (15:05 -0800)]
kernel - Remove numerous user VM page functions
* Remove vmapbuf() and vunmapbuf(), they are unsafe.
* Remove xio_init_ubuf() - It is not used and is unsafe.
* Remove vm_fault_quick_hold_pages() - It is not used as is unsafe.
Matthew Dillon [Fri, 27 Jan 2017 23:04:03 +0000 (15:04 -0800)]
kernel - Remove direct mapping of user buffers to CAM
* Remove direct mappings, always bounce. Nothing uses this code any
more and vmapbuf/vunmapbuf are about to go away, so just bounce.
Matthew Dillon [Fri, 27 Jan 2017 22:56:47 +0000 (14:56 -0800)]
kernel - Remove ffs_rawread()
* Remove ffs_rawread(), because we will be removing vmapbuf/vunmapbuf soon
as well (because it isn't safe).
Matthew Dillon [Fri, 27 Jan 2017 21:56:33 +0000 (13:56 -0800)]
vkernel - Partial fix to EPT swapu32 and swapu64
* EPT needed swapu32/swapu64 functions, write them.
* Fix bounds checking bug in std_swapu32()
* Misc cleanups.
Matthew Dillon [Fri, 27 Jan 2017 18:33:15 +0000 (10:33 -0800)]
kernel - Prune pcpu vmzone a bit
* Put a cap of 16MB worth of entries in the vm_zone pcpu cache, per cpu.
This cap is triggered on large-memory systems which would otherwise
set too high a limit on the vmzone pcpu caches.
This primarily affects pvzone, limiting the pcpu pmap pv_entry cache
to around 200000 elements (~800MB worth of page mappings).
* Reduces the amount of memory waste on a large-memory system. For example,
before roughly 2GB worth of unused pv_entry's could accumulate on a
32-way system with 128GB of ram during nominal use. Now only around 512MB
worth of unused pv_entry's can accumulate.
* Note that we do not want to set this cap too low because it is absolutely
necessary for concurrent fork/exec/wait/exit performance.
* Increase the zone_burst from the global cache to the pcpu cache from
32 to 128 elements to further reduce unnecessary lock collisions in
zalloc().
Sascha Wildner [Fri, 27 Jan 2017 18:29:23 +0000 (19:29 +0100)]
fetch.9/store.9: Adjust for recent changes.
Imre Vadász [Fri, 27 Jan 2017 12:28:39 +0000 (13:28 +0100)]
kernel/usb4bsd: Use pci_alloc_1intr() for MSI allocation in xhci_pci.c.
* The existing pci_alloc_msi() call was still expecting the FreeBSD API,
causing a panic on single-cpu machines when trying to allocate an MSI.
SMP machines didn't panic, but were accidentally always using CPU1 for
the xhci MSI interrupt.
Imre Vadász [Wed, 11 Jan 2017 11:47:14 +0000 (12:47 +0100)]
sdhci - Use pci_alloc_1intr in sdhci pci attachement.
Matthew Dillon [Fri, 27 Jan 2017 05:52:10 +0000 (21:52 -0800)]
msdosfs - Mount ricoh camera cards
* Ricoh cameras mis-format their sdcards, mis-programming the 64-bit
pm_nxtfree field with a 32-bit-truncated -1. Allow the case so we
can finish mounting the card.
Reported-by: luxh
Matthew Dillon [Thu, 26 Jan 2017 22:45:20 +0000 (14:45 -0800)]
kernel - Fix improper dereference in the vmspace subsystem
* Fix an improper deref in the vmspace subsystem (used by vkernels),
which could cause host memory to become corrupt.
Matthew Dillon [Thu, 26 Jan 2017 19:37:58 +0000 (11:37 -0800)]
vkernrel - Synchronize w/master, adjust for vmm_guest_sync_addr() changes
* synchronize suword, fuword, etc naming conventions with master.
* Use the new vmm_guest_sync_addr() ABI to more safely make adjustments
to virtual page tables.
Matthew Dillon [Thu, 26 Jan 2017 19:35:47 +0000 (11:35 -0800)]
kernel - Refactor suword, fuword, etc. change vmm_guest_sync_addr()
* Rename the entire family of functions to reduce confusion.
* Change how vmm_guest_sync_addr() works. Instead of loading one value
into a target location we exchange the two target locations, with the
first address using an atomic op. This will allow the vkernel to
drop privs and query pte state atomically.
Matthew Dillon [Thu, 26 Jan 2017 19:34:31 +0000 (11:34 -0800)]
kernel - Accomodate high-ncpu + low-mem configurations
* Make some adjustments to accomodate high cpu core count but low physical
memory configurations. This mainly accomodates test configurations.
Do set pageout minimums or targets to unreasonable values in these
configurations.
Matthew Dillon [Thu, 26 Jan 2017 02:31:48 +0000 (18:31 -0800)]
vkernel - Refactor pmap
* Refactor the pmap code. Use vm_page locking to protect PTEs.
* Change the accounting from using vm_page->hold_count to using
vm_page->wire_count.
* Replace unlocked pt/pd/pdp lookups with explicit page tests for non-kernel
pmaps.
Matthew Dillon [Thu, 26 Jan 2017 02:30:43 +0000 (18:30 -0800)]
kernel - Remove object->agg_pv_list_count
* Remove the object->agg_pv_list_count field. It represents an unnecessary
global cache bounce, was only being used to help report vkernel RSS,
and wasn't working very well anyway.
Matthew Dillon [Thu, 26 Jan 2017 01:39:01 +0000 (17:39 -0800)]
kernel - Optimize lwp-specific signaling. (2)
* Fix bug in last sig commit.
Matthew Dillon [Wed, 25 Jan 2017 19:18:20 +0000 (11:18 -0800)]
vkernel - Clock optimizations, pre-zero 'ram'.
* The vkernel now defaults to using an imprecise (host-tick-resolution)
timer.
* The vkernel now pre-faults all of its 'system' memory at startup in order
to avoid dynamically faulting it in after it has gone MP (which creates
a lot of contention on the host machine).
Matthew Dillon [Wed, 25 Jan 2017 17:25:40 +0000 (09:25 -0800)]
kernel - Optimize lwp-specific signaling.
* Optimize the signal code to remove most instances of needing proc->p_token
when lwp-specific signals are sent.
* Add a CURSIG_LCK_TRACE() macro which can now return with p_token held, and
pass the status to postsig() which then consumes it.
* lwpsignal() now tries very hard to avoid acquiring proc->p_token.
* Significantly improves vkernel operation under heavy (vkernel) IPI loads.
Matthew Dillon [Wed, 25 Jan 2017 16:11:57 +0000 (08:11 -0800)]
kernel - Allow VM_FAULT_DIRTY to use a shared lock
* Allows VM_FAULT_DIRTY (write) faults to use a shared object lock as
long as the evnetual page does not need to be unswapped.
* More than doubles vkernel performance when doing a parallel make
by removing a major contention spot.
Matthew Dillon [Wed, 25 Jan 2017 16:11:04 +0000 (08:11 -0800)]
procfs - don't try to count rss
* Don't try to count rss. Scanning individual pages for a 64-bit
mapping can take forever (literally!).
* Fixes problems accessing /proc/*/map for vkernel processes.
Sepherosa Ziehau [Wed, 25 Jan 2017 09:19:38 +0000 (17:19 +0800)]
cputimer: Update comment
Matthew Dillon [Mon, 23 Jan 2017 20:20:23 +0000 (12:20 -0800)]
kernel - pmap and vkernel work
* Remove the pmap.pm_token entirely. The pmap is currently protected
primarily by fine-grained locks and the vm_map lock. The intention
is to eventually be able to protect it without the vm_map lock at all.
* Enhance pv_entry acquisition (representing PTE locations) to include
a placemarker facility for non-existant PTEs, allowing the PTE location
to be locked whether a pv_entry exists for it or not.
* Fix dev_dmmap (struct dev_mmap) (for future use), it was returning a
page index for physical memory as a 32-bit integer instead of a 64-bit
integer.
* Use pmap_kextract() instead of pmap_extract() where appropriate.
* Put the token contention test back in kern_clock.c for real kernels
so token contention shows up as sys% instead of idle%.
* Modify the pmap_extract() API to also return a locked pv_entry,
and add pmap_extract_done() to release it. Adjust users of
pmap_extract().
* Change madvise/mcontrol MADV_INVAL (used primarily by the vkernel)
to use a shared vm_map lock instead of an exclusive lock. This
significantly improves the vkernel's performance and significantly
reduces stalls and glitches when typing in one under heavy loads.
* The new placemarkers also have the side effect of fixing several
difficult-to-reproduce bugs in the pmap code, by ensuring that
shared and unmanaged pages are properly locked whereas before only
managed pages (with pv_entry's) were properly locked.
* Adjust the vkernel's pmap code to use atomic ops in numerous places.
* Rename the pmap_change_wiring() call to pmap_unwire(). The routine
was only being used to unwire (and could only safely be called for
unwiring anyway). Remove the unused 'wired' and the 'entry'
arguments.
Also change how pmap_unwire() works to remove a small race condition.
* Fix race conditions in the vmspace_*() system calls which could lead
to pmap corruption. Note that the vkernel did not trigger any of
these conditions, I found them while looking for another bug.
* Add missing maptypes to procfs's /proc/*/map report.
Sepherosa Ziehau [Wed, 25 Jan 2017 02:24:36 +0000 (10:24 +0800)]
lwp: Restore lwp syscalls (except lwp_create*) declaration.
Sepherosa Ziehau [Wed, 25 Jan 2017 01:46:40 +0000 (09:46 +0800)]
lwp: Bump version for shuffle lwp syscalls.
Sepherosa Ziehau [Tue, 24 Jan 2017 13:42:34 +0000 (21:42 +0800)]
cputimer: Reorder fields a bit to avoid implicit padding.
Sepherosa Ziehau [Tue, 24 Jan 2017 13:27:42 +0000 (21:27 +0800)]
cputimer: Initialize explicitly.
Matthew Dillon [Mon, 23 Jan 2017 01:15:26 +0000 (17:15 -0800)]
vkernel - change hz default, optimize systimer
* Change the hz default to 50
* Refactor the vkernel's systimer code to reduce unnecessary signaling.
* Cleanup kern_clock.c a bit, including renaming HZ to HZ_DEFAULT to avoid
confusion.
Matthew Dillon [Sun, 22 Jan 2017 23:35:37 +0000 (15:35 -0800)]
sort - Don't live-loop threads
* Worker threads now use a pthread_cond_t to wait for work instead of
burning the cpu up.
Matthew Dillon [Sun, 22 Jan 2017 23:28:05 +0000 (15:28 -0800)]
kernel - Improve vm_page_register_action*() performance.
* Improve the performance for vm_page_register_action() and related
routines by splitting the global lock into per-hash-index locks.
Also change from a token to lockmgr locks.
* Shift some code around in umtx_sleep() so the tsleep_interlock()
occurs after the registration code to avoid interference with
the new lockmgr() operations in the registration code.
Matthew Dillon [Sun, 22 Jan 2017 21:47:05 +0000 (13:47 -0800)]
vkernel - Fix vmspace_*() call bottleneck
* Remove a global token in most cases by caching ve's, and hold it shared
for lookups if it cannot be found in the cache.
Matthew Dillon [Sun, 22 Jan 2017 21:46:20 +0000 (13:46 -0800)]
vkernel - Fix races in if_vke.c
* Fix races in if_vke.c, several cpu_lfence() calls were in the wrong place.
Imre Vadász [Sun, 22 Jan 2017 21:38:31 +0000 (22:38 +0100)]
if_iwm - Add firmware API definitions for TX power commands.
* While there remove unused IWM_UCODE_TLV_CAPA_LMAC_UPLOAD definition,
which isn't defined in iwlwifi.
Taken-From: Linux iwlwifi
Sascha Wildner [Sun, 22 Jan 2017 19:55:29 +0000 (20:55 +0100)]
kernel/if_wi: Unlock before returning.
Matthew Dillon [Sun, 22 Jan 2017 17:23:37 +0000 (09:23 -0800)]
vkernel - Fix pv_entry_count bug
* Now that we are not protected by a global vm_token, pv_entry_count
must use atomic ops.
Matthew Dillon [Sun, 22 Jan 2017 16:36:23 +0000 (08:36 -0800)]
kernel - Fix NFS sillyrename code
* Due to the delayed vnode reclamation changes done several years ago
the NFS client code was not properly removing silly-renamed files
on last-close (these are files which NFS renames to .nfs* when
remove()'d while still open()).
* Fixed by flagging finalization on last-close if a sillyrename occurs.
Sepherosa Ziehau [Sun, 22 Jan 2017 14:25:08 +0000 (22:25 +0800)]
sched: Add cpuset_t for FreeBSD compat
Sepherosa Ziehau [Thu, 19 Jan 2017 14:03:01 +0000 (22:03 +0800)]
libc: Add sched_getcpu().
Matthew Dillon [Sun, 22 Jan 2017 07:43:07 +0000 (23:43 -0800)]
vkernel - Restabilize pmap code, redo kqueue, systimer, and console code
* Remove vm_token and add necessary vm_page spin locks to the vkernel's
pmap code, improving its stability.
* Separate the systimer interrupt and console tty support from the
kqueue subsystem.
Uses SIGURG for systimer
Uses SIGIO for kqueue
Uses SIGALRM for cothread signalling
* The vkernel systimer code now uses a dedicated cothread for timing. The
cothread is a bit of a hack at the moment but is a more direct way of
handling systimers.
* Attempt to fix user%/sys%/intr%/idle% in the systat -vm and
systat -pv output. Still isn't perfect, but it is now more
accurate.
Matthew Dillon [Fri, 20 Jan 2017 22:46:41 +0000 (14:46 -0800)]
vkernel.7 - Update manual page
* Update the manual page with a better vkernel NFS client example.
Antonio Huete Jimenez [Thu, 19 Jan 2017 08:03:16 +0000 (00:03 -0800)]
vkernel: Make kptobj a static structure.
- There is a chicken-egg problem while allocating kptobj. Recent changes
have made vm_object allocation to depend on kmalloc() which will call
pmap_growkernel() when kptobj is not yet ready.
Antonio Huete Jimenez [Wed, 18 Jan 2017 23:59:27 +0000 (15:59 -0800)]
kernel: Add a new vm_object_init()
Antonio Huete Jimenez [Wed, 18 Jan 2017 22:37:31 +0000 (14:37 -0800)]
kernel: Rename vm_object_init() to vm_object_init1()
- No functional change.
Antonio Huete Jimenez [Thu, 19 Jan 2017 08:02:58 +0000 (00:02 -0800)]
vkernel: Fix build
- Partially-submitted by: zrj
Antonio Huete Jimenez [Wed, 18 Jan 2017 22:19:42 +0000 (14:19 -0800)]
lwp: vkernel actually uses some lwp_* functions
Imre Vadász [Wed, 18 Jan 2017 20:34:52 +0000 (21:34 +0100)]
sdhci - Simplify SDHCI_PRESENT_STATE register loop in sdhci_start_command().
Taken-From: FreeBSD (svn r311693)
Imre Vadász [Wed, 18 Jan 2017 20:31:31 +0000 (21:31 +0100)]
sdhci - Add a new interface method, get_card_present.
Taken-From: FreeBSD (svn r311660)
Sascha Wildner [Thu, 19 Jan 2017 17:28:00 +0000 (18:28 +0100)]
Sync ACPICA with Intel's version
20170119.
Just some minor things:
* In iASL, fix an inadvertent remark.
* Remove the compiler bit width from the common signon of all tools.
* Add 2017 copyright.
For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.
Sascha Wildner [Thu, 19 Jan 2017 18:21:59 +0000 (19:21 +0100)]
kernel/acpica: Include <stdarg.h> only for userland compilation.
We generally don't include /usr/include/*.h headers in kernel code,
and the kernel doesn't need it.
It also caused issues when compiling with clang (due to redefinitions).
Reported-by: zrj
Sascha Wildner [Thu, 19 Jan 2017 17:49:01 +0000 (18:49 +0100)]
Update the pciconf(8) database.
January 8, 2017 snapshot from http://pciids.sourceforge.net/
Sascha Wildner [Wed, 18 Jan 2017 17:44:30 +0000 (18:44 +0100)]
cpdup: When verbose, also log the successful creation of a directory.
Sepherosa Ziehau [Wed, 18 Jan 2017 09:09:04 +0000 (17:09 +0800)]
em/emx: Retry interrupt allocation with MSI
Reported-by: jh32
Sepherosa Ziehau [Wed, 18 Jan 2017 05:46:30 +0000 (13:46 +0800)]
tools/kq_sendrecv: Fix building on FreeBSD
Matthew Dillon [Tue, 17 Jan 2017 22:52:22 +0000 (14:52 -0800)]
kernel - kmemstatistics list wasn't MPSAFE
* Put a spinlock around the kmemstatistics list. This list is modified
whenever a kmalloc area is created or destroyed, and this generally does
not happen concurrently except with kernels run by expert hackers like
us and get scared.
* ...Or if a machine is running synth and/or doing a lot of concurrent
tmpfs mounts and unmounts.
Reported-by: swildner
John Marino [Tue, 17 Jan 2017 21:24:57 +0000 (15:24 -0600)]
npx.h: fix comment alignments (cosmetic)
John Marino [Tue, 17 Jan 2017 20:00:55 +0000 (14:00 -0600)]
Expand fpusave union to include x86_64 versions
The structure of envmmx remains a constant size, but changes composition
between the i386 and x86_64 versions. While here, flesh out the
832-byte saveymm structure, also distinguishing between 32 and 64 bit
versions.
While here, convert u_char, u_short, u_int16_t, u_int32_t to standard
integers; <sys/types.h> with it's redundant guards is no longer required
although <stdint> is now needed.
This allows the fpu context to be seen on x86_64 by casting the fpusave
union to the new savexmm64 and saveymm64 structures.
Sepherosa Ziehau [Tue, 17 Jan 2017 15:47:55 +0000 (23:47 +0800)]
tools/kq_recvserv: Add option to set receiving thread's CPU affinity.
Sepherosa Ziehau [Tue, 17 Jan 2017 15:27:41 +0000 (23:27 +0800)]
tools/kq_recvserv: Add option to enable SO_REUSEPORT
Sepherosa Ziehau [Tue, 17 Jan 2017 14:58:47 +0000 (22:58 +0800)]
tools/kq_sendcli: Add option to set sending thread's CPU affinity
Sepherosa Ziehau [Tue, 17 Jan 2017 14:59:35 +0000 (22:59 +0800)]
tools/kq_recvserv: Add option to set read size
Sepherosa Ziehau [Tue, 17 Jan 2017 14:31:40 +0000 (22:31 +0800)]
tool/kq_sendcli: Add option to set write size.
Sepherosa Ziehau [Tue, 17 Jan 2017 14:18:46 +0000 (22:18 +0800)]
tools/kq_sendcli: Add sendfile support.
Based on work done by QianYue You.
Imre Vadász [Mon, 16 Jan 2017 12:43:20 +0000 (13:43 +0100)]
sdhci - Use the right capability field for printing the bus width.
* In sdhci_init_slot(), use the right capability field for determining
the announced bus width based on MMC_CAP_*_BIT_DATA.
Taken-From: FreeBSD (svn r311794)
Sepherosa Ziehau [Mon, 16 Jan 2017 14:04:28 +0000 (22:04 +0800)]
lwp: Move all lwp syscalls to sys/lwp.h
Discussed-with: swildner, zrj
Sepherosa Ziehau [Mon, 16 Jan 2017 03:07:59 +0000 (11:07 +0800)]
param: Bump version according to the comment.
Imre Vadász [Sun, 15 Jan 2017 09:55:42 +0000 (10:55 +0100)]
kernel/usb4bsd: Configure the correct bMaxPacketSize for control endpoints.
* Configure the correct bMaxPacketSize for control endpoints before
requesting the initial complete device descriptor and not as part of
the subsequent babble error recovery. Babble means that the received
USB packet was bigger than than configured maximum packet size. This
only affects enumeration of FULL speed USB devices which use a
bMaxPacketSize different from 8 bytes. This patch might help fix
enumeration of USB devices which exhibit USB I/O errors in dmesg
during boot.
Taken-From: FreeBSD (svn r295928)
Sascha Wildner [Sun, 15 Jan 2017 19:41:22 +0000 (20:41 +0100)]
Wipe the start of the disk when formatting the disk with MBR, too.
Sascha Wildner [Sun, 15 Jan 2017 19:32:06 +0000 (20:32 +0100)]
installer: Add basic UEFI system setup.
GPT partition 0 is a 128MB FAT32 EFI system partition. Microsoft
recommends at least 100MB and FAT32 in [1]. Partition 1 is a
"DragonFly Label64" (aka "dragonfly" in gpt(8)) for the rest of
the disk. It is analogous to slice 1 in our MBR setup, and has the
same name, e.g. /dev/da0s1. The rest of the UEFI setup is identical
to an MBR setup. disklabel64, newfs*, and so forth.
We currently only support installing DragonFly to the whole disk
in UEFI mode, and we don't set any NVRAM EFI variables during
installation, so for now we are copying our stage 1 loader to
\EFI\BOOT\BOOTX64.EFI on the EFI system partition.
Also, there isn't any support for Secure Boot.
[1] https://technet.microsoft.com/en-us/library/hh824839.aspx#DiskPartitionRules
Sascha Wildner [Sun, 15 Jan 2017 14:01:29 +0000 (15:01 +0100)]
Add a uefi(8) manual page giving some info on the UEFI boot procedure.
Adapted-from: FreeBSD
Sascha Wildner [Sun, 15 Jan 2017 14:00:48 +0000 (15:00 +0100)]
rconfig: Add a script for setting up a HAMMER/UEFI system.
Sascha Wildner [Sun, 15 Jan 2017 19:29:03 +0000 (20:29 +0100)]
nrelease: Add UEFI mode capable boot media.
Add an EFI system partition to the IMG (to boot on UEFI systems) but
keep MBR (to boot on legacy BIOS systems).
The approach in https://wiki.freebsd.org/UEFI#CD.2FDVD_Boot_under_UEFI
is used to make the ISO boot on both UEFI and legacy systems.
Sepherosa Ziehau [Sun, 15 Jan 2017 08:53:39 +0000 (16:53 +0800)]
pthread: Implement pthread_attr_{get,set}affinity_np
Sepherosa Ziehau [Sun, 15 Jan 2017 08:52:42 +0000 (16:52 +0800)]
x86_64: Fix machdep.smp_active sysctl type.
Sepherosa Ziehau [Sat, 14 Jan 2017 13:16:08 +0000 (21:16 +0800)]
lwp: Add lwp_create2 syscll, which takes cpumask for scheduling.