dragonfly.git
7 years agocsh(1): Allow to bootstrap with -flto.
zrj [Wed, 5 Oct 2016 11:35:30 +0000 (14:35 +0300)]
csh(1): Allow to bootstrap with -flto.

tcsh(1) replaces malloc, thus with LTO sees multiple symbols.

7 years agoinstall(1): Silence false gcc warnings.
zrj [Tue, 4 Oct 2016 05:16:34 +0000 (08:16 +0300)]
install(1): Silence false gcc warnings.

Happens on LTO builds.

7 years agoif_iwm - Process multiple frames per RX buffer.
Imre Vadász [Sun, 4 Sep 2016 08:51:11 +0000 (10:51 +0200)]
if_iwm - Process multiple frames per RX buffer.

* Factor out iwm_handle_rxb() function from iwm_notif_intr().

* Removing the IWM_FH_RCSR_CHNL0_RX_CONFIG_SINGLE_FRAME_MSK flag allows
  the device to put multiple frames (both command responses and 80211
  frames) into a single RX buffer.

* Uses m_copym() to split up the receive buffers when multiple 80211
  frames are received in one RX buffer. The effect is basically the same
  as when using m_split(), but we want to keep the original mbuf around
  when calling iwm_mvm_rx_rx_mpdu() to make error handling a bit easier
  for now.

* Contains a small optimization to avoid the m_copym() when only a single
  80211 frame is received in one RX buffer (i.e. matching the existing
  behaviour).

Taken-From and Inspired-By: Linux iwlwifi

7 years agoRemove dead /usr/include/compat symlink, too.
Sascha Wildner [Tue, 18 Oct 2016 21:13:17 +0000 (23:13 +0200)]
Remove dead /usr/include/compat symlink, too.

Followup commit to 6737a4ffb92.

7 years agokernel: Remove the COMPAT_43 kernel option along with all related code.
Sascha Wildner [Tue, 18 Oct 2016 20:50:13 +0000 (22:50 +0200)]
kernel: Remove the COMPAT_43 kernel option along with all related code.

It is commented out in our default kernel config files for almost five
years now, since 9466f37df5258f3bc3d99ae43627a71c1c085e7d.

Approved-by: dillon
Dragonfly-bug: <https://bugs.dragonflybsd.org/issues/2946>

7 years agobsd-family-tree: Sync with FreeBSD (FreeBSD 11.0).
Sascha Wildner [Tue, 18 Oct 2016 19:34:03 +0000 (21:34 +0200)]
bsd-family-tree: Sync with FreeBSD (FreeBSD 11.0).

7 years agoUpdate the pciconf(8) database.
Sascha Wildner [Tue, 18 Oct 2016 19:32:52 +0000 (21:32 +0200)]
Update the pciconf(8) database.

October 13, 2016 snapshot from http://pciids.sourceforge.net/

7 years ago<sys/types.h>: Add definitions of bool, true and false for the kernel.
Sascha Wildner [Tue, 18 Oct 2016 19:27:32 +0000 (21:27 +0200)]
<sys/types.h>: Add definitions of bool, true and false for the kernel.

Remove some local definitions in drivers and also switch boolean_t
over to _Bool (if available).

This is similar to how FreeBSD does it.

7 years agotcpdchk(8): Honor global CFLAGS.
zrj [Tue, 18 Oct 2016 15:37:21 +0000 (18:37 +0300)]
tcpdchk(8): Honor global CFLAGS.

Forgot to include in 8d378610e3b5687c707bc8aad4e11a3a96bea2fc for tcpdmatch(8).

7 years agobinutils225: Honor global CFLAGS.
zrj [Tue, 18 Oct 2016 13:07:16 +0000 (16:07 +0300)]
binutils225: Honor global CFLAGS.

Make CFLAGS partially overridable so to preserve global CFLAGS.
block2/ld has its own config.h but still requires bfd.h.
Ensure that private config.h takes precedence over general bulibs one.

While testing noticed that block2/gas ignores its config.h, so fix that too.
block2/libgold is fine, since it uses block3/Makefile.gld.

7 years agoroute: addroute may change rt->rt_ifa; keep the local copy in sync.
Sepherosa Ziehau [Tue, 18 Oct 2016 13:23:12 +0000 (21:23 +0800)]
route: addroute may change rt->rt_ifa; keep the local copy in sync.

Reported-by: pecan
7 years agox86_64: Work around AMD erratum 793 for family 16h, models 00h-0Fh
Sepherosa Ziehau [Fri, 9 Sep 2016 00:55:48 +0000 (08:55 +0800)]
x86_64: Work around AMD erratum 793 for family 16h, models 00h-0Fh

Obtained-from: FreeBSD r305539

7 years agotcpdmatch(8): Honor global CFLAGS.
zrj [Tue, 18 Oct 2016 11:51:38 +0000 (14:51 +0300)]
tcpdmatch(8): Honor global CFLAGS.

It does not look like override was on purpose.

7 years agorestore(8): Remove (void *) casts.
zrj [Tue, 18 Oct 2016 11:38:54 +0000 (14:38 +0300)]
restore(8): Remove (void *) casts.

Mainly to unbreak gcc47 buildworld.

Reported-by: swildner
7 years agorestore(8): Fix extern type mismatch.
zrj [Wed, 12 Oct 2016 08:24:28 +0000 (11:24 +0300)]
restore(8): Fix extern type mismatch.

Noticed while playing with LTO.

While there, add volatile to prevent clobbering @ WORLD_CCOPTLEVEL=g

7 years agorestore(8): Fix and enable WARNS.
zrj [Tue, 18 Oct 2016 09:01:17 +0000 (12:01 +0300)]
restore(8): Fix and enable WARNS.

 * Add most cases were const char * should have been used.
 * In few cases use __DECONST(), should be fine for these.
 * Suffix variables with 'g' and 'l' to prevent shadowing.
 * Mark unused parameters.
 * Convert swabst() to take const char * instead of u_char *.

No functional change intended, utility still works.
(dump -af dumpas /dev/da1s1 && restore -if dumpas) restores files.

7 years agorestore(8): Use size_t were appropriate.
zrj [Tue, 18 Oct 2016 08:35:17 +0000 (11:35 +0300)]
restore(8): Use size_t were appropriate.

Mostly WARNS=3 cleanup.
Also add vlatile to prevent clobbering.

7 years agorestore(8): Fix formats in prints.
zrj [Tue, 18 Oct 2016 08:06:59 +0000 (11:06 +0300)]
restore(8): Fix formats in prints.

Also, exlude two prints if NAME_MAX >= 255.

Taken-from: FreeBSD

7 years agorestore(8): General cleanup.
zrj [Tue, 18 Oct 2016 07:24:33 +0000 (10:24 +0300)]
restore(8): General cleanup.

 * Fix include order.
 * Add missing va_end().

7 years agoif_iwm - Change UCODE_TLV_API #define-s from bitmasks to indexes.
Imre Vadász [Mon, 17 Oct 2016 22:20:29 +0000 (00:20 +0200)]
if_iwm - Change UCODE_TLV_API #define-s from bitmasks to indexes.

* Fixes oversight from commit 757eecf0e6c92745aa2eee95811e573c8300850e.
  fw_has_api now uses the isset macro instead of a simple logical-and.

7 years agoif_iwm - Sync iwm_read_firmware()'s loop to iwlwifi's code.
Imre Vadász [Fri, 16 Sep 2016 21:43:51 +0000 (23:43 +0200)]
if_iwm - Sync iwm_read_firmware()'s loop to iwlwifi's code.

Taken-From: Linux iwlwifi

7 years agoif_iwm - change the check for ADD_STA status, use IWM_ADD_STA_STATUS_MASK.
Imre Vadász [Tue, 6 Sep 2016 19:45:07 +0000 (21:45 +0200)]
if_iwm - change the check for ADD_STA status, use IWM_ADD_STA_STATUS_MASK.

Taken-From: Linux iwlwifi (git 837c4da98481d4e504b2aba077c8528fee1b6d13)

7 years agoif_iwm - Sanity check channel for IEEE80211_CHAN_ANYC in if_iwm_mac_ctxt.c.
Imre Vadász [Mon, 17 Oct 2016 21:17:06 +0000 (23:17 +0200)]
if_iwm - Sanity check channel for IEEE80211_CHAN_ANYC in if_iwm_mac_ctxt.c.

* This avoids panicing in some broken vap state handling cases.

7 years agoif_iwm - Get rid of another usage of the IWM_DEFAULT_MACID/_COLOR constant.
Imre Vadász [Sun, 16 Oct 2016 19:36:15 +0000 (21:36 +0200)]
if_iwm - Get rid of another usage of the IWM_DEFAULT_MACID/_COLOR constant.

7 years agokernel - Fix panic/crash in vm_object_page_remove()
Matthew Dillon [Mon, 17 Oct 2016 19:15:57 +0000 (12:15 -0700)]
kernel - Fix panic/crash in vm_object_page_remove()

* When vm_object_page_remove() is called with one page, the caller is allowed
  to hold a spinlock (typically on that page).  The callback is not supposed
  to call user_yield in that situation.

* Fix missing initialization of info.count which could result in the callback
  issuing a yield when it was not supposed to.

Reported-by: htse
7 years agosys/boot: Annotate LTO issue in pxe.c
zrj [Wed, 12 Oct 2016 13:31:32 +0000 (16:31 +0300)]
sys/boot: Annotate LTO issue in pxe.c

This needs to be addressed for proper use of LTO.

7 years agobinutils225: Make plugin dir overridable at compile time.
zrj [Fri, 30 Sep 2016 11:23:13 +0000 (14:23 +0300)]
binutils225: Make plugin dir overridable at compile time.

This will help to avoid touching mtree BSD.usr.dist outside libexec,
will simplify LTO plugins(liblto_plugin.so, LLVMgold.so)
installing(symlinking) and auto loading in ar, nm, ranlib.

7 years agoMerge branch 'vendor/BINUTILS225'
zrj [Mon, 17 Oct 2016 07:44:39 +0000 (10:44 +0300)]
Merge branch 'vendor/BINUTILS225'

7 years agoImport missing source needed to enable plugin support in utilities. vendor/BINUTILS225
zrj [Fri, 30 Sep 2016 10:07:50 +0000 (13:07 +0300)]
Import missing source needed to enable plugin support in utilities.

7 years agoRemove profiled version of libraries too.
zrj [Mon, 17 Oct 2016 06:18:11 +0000 (09:18 +0300)]
Remove profiled version of libraries too.

 * Expand OpenSSL removal list to include profiled versions.
 * Remove libprivate_panel ones after 19ba4072a64db34c2a861d48aa5ffe33155826ef.

7 years agoStep 1/2 of OpenSSL remove: Suppress building
John Marino [Sun, 16 Oct 2016 22:34:39 +0000 (17:34 -0500)]
Step 1/2 of OpenSSL remove: Suppress building

As of now, the NO_OPENSSL directive has been replaced with an undocumented
FORCE_OPENSSL directive.  Unless FORCE_OPENSSL is defined in make.conf,
the OpenSSL libraries, headers, and man pages will no longer be built and
installed.

Existing OpenSSL files will remain installed unless REMOVE_OPENSSL_FILES
is defined for the upgrade command, e.g.
> make upgrade REMOVE_OPENSSL_FILES=yes

It is recommended that all remaining programs and libraries linked to the
base OpenSSL libraries be rebuilt to use one of the DPorts SSL libraries.
The DPorts packages have been built with DPorts LibreSSL for a few weeks
now, so ensuring all installed packages are reinstalled or rebuilt will be
sufficient for most users, but don't forget about software built outside
of DPorts.

The OpenSSL sources and makefiles will be removed within a month (step 2),
but FORCE_OPENSSL will work in the meantime to continue building OpenSSL
although it will receive no further updates.

7 years agokernel - Modestly reduce default maxvnodes calculation
Matthew Dillon [Sun, 16 Oct 2016 21:36:10 +0000 (14:36 -0700)]
kernel - Modestly reduce default maxvnodes calculation

* Change the multipliers to modestly reduce the default kern.maxvnodes
  calculation.  For example, maxvnodes on a machine with 8GB of ram will
  be reduced from 598103 to 478483.

* Primarily targetted to hammer filesystems which can wind up using an
  unnecessarily huge amount of kernel memory caching vnode-related
  structures.

7 years agokernel - Reduce excessive inode hash table allocations
Matthew Dillon [Sun, 16 Oct 2016 21:31:40 +0000 (14:31 -0700)]
kernel - Reduce excessive inode hash table allocations

* Reduce excessive inode hash table allocations in various filesystems
  (primarily ufs).  Introduce vfs_inodehashsize() to calculate a reasonable
  hash table size instead of using 'maxvnodes'.

* The new formula is to generally use maxvnodes / 2 (2 x stacking for the
  chained hash table).  When maxvnodes is large we use maxvnodes / 4, and
  if maxvnodes is very large (> 1M vnodes) we use maxvnodes / 8.  This
  significantly reduces the amount of kernel memory used when mounting
  ufs, ext2fs, hpfs, isofs, msdosfs, nfs, ntfs, and smbfs filesystems.

7 years agotmpfs - Fix mount_tmpfs -C
Matthew Dillon [Sun, 16 Oct 2016 21:23:44 +0000 (14:23 -0700)]
tmpfs - Fix mount_tmpfs -C

* Fix mount_tmpfs -C.  FSCopy requires the contents of the pointer
  whos address is passed into it to be properly initialized (to NULL
  in this case).

* Fixes -O2 compilation of rtld & mount_tmpfs which were not problems
  with -O2 itself but instead changed the uninitialized garbage of the
  local variable we fixed above.

reported-by: zrj

7 years agokernel - Rename desiredvnodes to maxvnodes, fix deadlock
Matthew Dillon [Sun, 16 Oct 2016 21:13:39 +0000 (14:13 -0700)]
kernel - Rename desiredvnodes to maxvnodes, fix deadlock

* Rename the kernel variable 'desiredvnodes' to 'maxvnodes' to match
  the sysctl name (which has always been 'maxvnodes'), and to make the
  code more readable.

* Probable fix to a rare mount/umount deadlock which can occur in two
  situations (1) When a large number of mounts and unmounts are running
  concurrently, and (2) During a umount -a, shutdown, or reboot.

* Considered minor, normal use cases will not reproduce this bug.  Only
  synth or poudriere can generate the mount/umount traffic necessary to
  reproduce this bug.

* Also fixes a minor kernel memory leak of the mount structure which can
  occur when a 'df' or filesystem sync races a umount.  Also minor.

Reported-by: marino (mount race)
7 years agoif_iwm - Partly sync if_iwm_binding.c to Linux iwlwifi code.
Imre Vadász [Sun, 16 Oct 2016 18:55:13 +0000 (20:55 +0200)]
if_iwm - Partly sync if_iwm_binding.c to Linux iwlwifi code.

* Store macid and color values in struct iwm_vap, to avoid hardcoded
  constants a bit.

* Add iwm_mvm_binding_remove_vif() function (will be used in disconnecting
  from an access point without resetting the whole device).

* Not adding code from Linux iwlwifi yet, to handle one PHY context to
  be bound to several VAPs/virtual-interfaces, it's definitely not needed
  in the near future.

Taken-From: Linux iwlwifi

7 years agoif_iwm - Move in_phyctxt from struct iwm_node to phy_ctxt in struct iwm_vap.
Imre Vadász [Sun, 16 Oct 2016 10:23:44 +0000 (12:23 +0200)]
if_iwm - Move in_phyctxt from struct iwm_node to phy_ctxt in struct iwm_vap.

* This better matches how things are organized in Linux's iwlwifi.

7 years agosbin/mount_hammer: Add missing switch case from bab16452
Tomohiro Kusumi [Sun, 16 Oct 2016 04:01:54 +0000 (13:01 +0900)]
sbin/mount_hammer: Add missing switch case from bab16452

The previous commit bab16452 needed 1..15 case for expected values,
so as not to show an irrelevant message via default case.

7 years agosbin/mount_hammer: Fix warning messages
Tomohiro Kusumi [Sun, 16 Oct 2016 03:07:51 +0000 (12:07 +0900)]
sbin/mount_hammer: Fix warning messages

Add warning messages for -1 and non-0-15 for master_id.

-1 and 0-15 inclusive are the only supoprted values,
so remove probably from the existing warning message.

7 years agosbin/hammer: Mention bug in hammer recover command
Tomohiro Kusumi [Sat, 15 Oct 2016 14:46:57 +0000 (23:46 +0900)]
sbin/hammer: Mention bug in hammer recover command

newfs_hammer overwrites layer1/2, but doesn't overwrite data in
blockmap beyond layer1/2, so old data is still there if the volume
has been re-formatted until the new fs overwrites old fs by using
more disk space than the old fs.

This is usually not a problem because the new fs doesn't have a
pointer to data in old fs, but hammer recover just iterates zone-2
offset till it hits end of the disk space which may include data
from the old fs. As mentioned in the comment, it's likely to hit
assertion if the old data located near the end of the volume is
B-Tree nodes depending on situation of the old fs.

7 years agosbin/hammer: Add volume signature check on loading a volume
Tomohiro Kusumi [Sat, 15 Oct 2016 14:16:14 +0000 (23:16 +0900)]
sbin/hammer: Add volume signature check on loading a volume

7 years agosbin/hammer: Cleanup arguments of init_volume()
Tomohiro Kusumi [Sat, 15 Oct 2016 01:15:02 +0000 (10:15 +0900)]
sbin/hammer: Cleanup arguments of init_volume()

Change the order of arguments to make the i/f similar to open(2)
as well as load_volume().

This is only for newfs (and volume-add), nothing else gets affected.

7 years agosbin/hammer: Make hammer recover use hammer_parsedevs_noverify()
Tomohiro Kusumi [Fri, 14 Oct 2016 12:33:59 +0000 (21:33 +0900)]
sbin/hammer: Make hammer recover use hammer_parsedevs_noverify()

hammer recover command should be able to run the recovery code
even if volume header is broken (not just broken blockmap part)
to certain extent, since the purpose of this is to recover contents
of a broken filesystem.

By using 0 for verify argument of load_volume(), hammer recover
skips sanity checks for ondisk volume header.

Also see 173bd31c.

7 years agosbin/hammer: Add verify argument to load_volume()
Tomohiro Kusumi [Fri, 14 Oct 2016 12:27:09 +0000 (21:27 +0900)]
sbin/hammer: Add verify argument to load_volume()

Add an argument to select whether to verify volume header or not.
This is for the next commit.

7 years agokernel - Fix improper user-space access in sys___semctl()
Matthew Dillon [Fri, 14 Oct 2016 16:32:12 +0000 (09:32 -0700)]
kernel - Fix improper user-space access in sys___semctl()

* Fix an improper user-space access in sys__semctl()

* Fix an improper kernel-space access that was using
  a user-supplied pointer.

Reported-by: Mateusz Kocielski - LogicalTrust
7 years agodrm/linux: Add kmap_to_page()
François Tigeot [Fri, 14 Oct 2016 06:59:09 +0000 (08:59 +0200)]
drm/linux: Add kmap_to_page()

7 years agodrm/linux: Add get_nr_swap_pages()
François Tigeot [Thu, 13 Oct 2016 10:07:00 +0000 (12:07 +0200)]
drm/linux: Add get_nr_swap_pages()

7 years agoif_iwm - Allow listening on both chains/atennas to get diversity.
Imre Vadász [Wed, 12 Oct 2016 20:19:31 +0000 (22:19 +0200)]
if_iwm - Allow listening on both chains/atennas to get diversity.

* This might improve throughput slightly when far from the accesspoint,
  apparently by allowing the firmware to listen on either of the two
  antennas (if there are two, i.e. on 7260/7265/8260), whichever has
  a better reception.

Taken-From: Linux iwlwifi

7 years agosys/vfs/hammer: Use HAMMER_MAX_KEY for initial trunc_off values
Tomohiro Kusumi [Wed, 12 Oct 2016 12:57:37 +0000 (21:57 +0900)]
sys/vfs/hammer: Use HAMMER_MAX_KEY for initial trunc_off values

ip->trunc_off variants are to be compared with node elm's base.key,
so it should use HAMMER_MAX_KEY on initialization instead of
0x7FFFFFFFFFFFFFFFLL.

7 years agosys/vfs/hammer: Add HAMMER_MIN|MAX_ONDISK_LOCALIZATION
Tomohiro Kusumi [Tue, 11 Oct 2016 15:05:19 +0000 (00:05 +0900)]
sys/vfs/hammer: Add HAMMER_MIN|MAX_ONDISK_LOCALIZATION

Use | for HAMMER_MAX_ONDISK_LOCALIZATION, but not +.
Also see 7e52af60.

7 years agosys/vfs/hammer: Use MIN/MAX macros for B-Tree node's elm base
Tomohiro Kusumi [Tue, 11 Oct 2016 14:40:45 +0000 (23:40 +0900)]
sys/vfs/hammer: Use MIN/MAX macros for B-Tree node's elm base

Leave obj_type with 0 instead of using HAMMER_OBJTYPE_UNKNOWN,
since it's not intended to be unknown, but literally intended
to be a value of 0.

7 years agodrm/linux: Add sign_extend64()
François Tigeot [Tue, 11 Oct 2016 07:26:14 +0000 (09:26 +0200)]
drm/linux: Add sign_extend64()

7 years agodrm/linux: Add kasprintf and kvasprintf()
François Tigeot [Tue, 11 Oct 2016 07:04:25 +0000 (09:04 +0200)]
drm/linux: Add kasprintf and kvasprintf()

7 years agodrm/linux: Add kstrtouint()
François Tigeot [Tue, 11 Oct 2016 06:41:04 +0000 (08:41 +0200)]
drm/linux: Add kstrtouint()

Inspired from: FreeBSD

7 years agovkernel - Fix FP corruption in VMX/EPT mode
Matthew Dillon [Mon, 10 Oct 2016 17:22:12 +0000 (10:22 -0700)]
vkernel - Fix FP corruption in VMX/EPT mode

* Properly invalidating the EPT TLB cache when it potentially becomes
  stale.

* When destroying a VMX context, make sure the EPT TLB cache has been
  invalidated for that context as a safety.

* Fix a bug in vmx_vminit() where it was losing track of the currently
  loaded VMX.

* Setup the VMX to clear the host CR0_TS, and the host makes sure the FP
  state is correct prior to vmlaunch.

* Make sure the GUEST_CR0's CR0_TS reflects the vkernel says it should
  reflect.

* The vkernel has a choice of asking the guest user context to #NM fault
  on FP use or not.  Both mechanics work, but its probably better for it
  to ensure that the FP state is valid and tell the user context to not
  fault.  However, this commit makes sure that both mechanics work.

* Document why we shouldn't vmclear the old current context when loading
  a different context.

* Cleanup some of the vkernel's pmap handling.  This isn't perfect and
  probably needs to be rewritten (we need a more powerful guest pmap
  adjustment system call to properly synchronize changes).  For now
  we try to avoid races against detecting the (M)odified flag by clearing
  the RW flag first.

7 years agovkernel - Add COW image capability
Matthew Dillon [Sun, 9 Oct 2016 23:41:17 +0000 (16:41 -0700)]
vkernel - Add COW image capability

* Add a copy-on-write disk image feature.  This allows a vkernel
  to mount a disk image RO or R+W but does not try to write changes
  back to the image file.

  This allows multiple vkernel instances to use the same image
  file.

* Note that when the vkernel operates on an image in this mode,
  modifications will eat up system memory and swap, so the user
  should be cognizant of the use-case.  Still, the flexiblity of
  being able to mount the image R+W should not be underestimated.

7 years agoiwm.4: Mention iwm7265Dfw firmware. Update DIAGNOSTICS section a bit.
Imre Vadász [Sun, 9 Oct 2016 19:45:16 +0000 (21:45 +0200)]
iwm.4: Mention iwm7265Dfw firmware. Update DIAGNOSTICS section a bit.

7 years agoif_iwm - Add basic powermanagement support via ifconfig wlan0 powersave.
Imre Vadász [Sat, 23 Jul 2016 13:54:50 +0000 (15:54 +0200)]
if_iwm - Add basic powermanagement support via ifconfig wlan0 powersave.

* The DEVICE_POWER_FLAGS_CAM_MSK flag was removed in the upstream iwlwifi
  in Linux commit ceef91c89480dd18bb3ac51e91280a233d0ca41f.

* Add sc_ps_disabled flag to struct iwm_softc, which corresponds to
  mvm->ps_disabled in struct iwl_mvm in Linux iwlwifi.

* Adds a hw.iwm.power_scheme tunable which corresponds to the power_scheme
  module parameter in Linux iwlwifi. Set this to 1 for completely
  disabling power management, 2 (default) for balanced powermanagement,
  and 3 for lowerpower mode (which does dtim period skipping).

* Imports the constants.h file from iwlwifi as if_iwm_constants.h.

* This doesn't allow changing the powermanagement setting while connected,
  also one can only choose between enabled and disabled powersaving with
  ifconfig (so switching between balanced and low-power mode requires
  rebooting to change the tunable).

* After any changes to powermanagement (i.e. "ifconfig wlan0 powersave" to
  enable powermanagement, or "ifconfig wlan0 -powersave" for disabling
  powermanagement), one has to disconnect and reconnect to the accespoint
  for the change to take effect.

Taken-From: Linux iwlwifi

7 years agosys/dev/disk/dm: Make dmdebug() print __func__
Tomohiro Kusumi [Sun, 9 Oct 2016 09:22:18 +0000 (18:22 +0900)]
sys/dev/disk/dm: Make dmdebug() print __func__

and fix/remove dmdebug calls that could be cleaned up or simplified.

7 years agosys/vfs/hammer: Mention ondisk fields are in little endian
Tomohiro Kusumi [Sun, 9 Oct 2016 07:18:59 +0000 (16:18 +0900)]
sys/vfs/hammer: Mention ondisk fields are in little endian

Explicitly mention HAMMER1 uses little endian for ondisk structures,
but not host endian (which is little on currently supported arch).

This is easier because adding big endian support doesn't break
anything at least on DragonFly/x86_64.

This doesn't affect anything/anyone in reality because HAMMER1 on
DragonFly is the only HAMMER1 implementation (that I know of other
than the read only FUSE port).

7 years agosbin/hammer: Remove getdir()
Tomohiro Kusumi [Sat, 8 Oct 2016 07:22:34 +0000 (16:22 +0900)]
sbin/hammer: Remove getdir()

Using dirname(3) with a santiy check for trailing / on creating PFS
does the same as getdir(), so use a library rather than its own.

No one uses getdir() anymore, so it can be removed.

7 years agosbin/hammer: Cleanup getpfs()/scanpfsid()
Tomohiro Kusumi [Sat, 8 Oct 2016 07:12:17 +0000 (16:12 +0900)]
sbin/hammer: Cleanup getpfs()/scanpfsid()

No functional difference.

7 years agosbin/hammer: Partly revert 8b640662 in 2014
Tomohiro Kusumi [Wed, 21 Sep 2016 22:04:18 +0000 (07:04 +0900)]
sbin/hammer: Partly revert 8b640662 in 2014

I guess it makes sense that 8b640662 silently ignores trailing / and
do destructive operations to a filesystem, since there isn't really
anything one can do by specifying a root inode (directory) of a PFS,
but it shouldn't silently modify (not ignore) the user input.

A command like pfs-status uses that input after calling getpfs(),
so the program should not silently modify the string and print it
as if that was the user input, because it's not. It should also avoid
modifying argv[i] even if it's technically possible (make it shorter).

It's also better to do it based on lstat(2) result than unconditionally
checking a trailing / based on assumption that a symlink that ends
with / is a directory (which is right if it actually exists).

The only case behaves differently from 8b640662 is when there is a
slave PFS that hasn't been synced with a master PFS yet after created.
In this case it fails to run commands using path arg with trailing /,
because lstat(2) mentioned above in scanpfsid() fails due to lack of
the root inode. This occurs by design of HAMMER, but not a tool issue.

Above won't be a problem either because the scenario mentioned in
8b640662 is mostly about auto completion by a shell, while in this
case the shell just recognizes it as a broken link. The tool doesn't
need to assist everything that users would potentially do based on
assumption that may be right or wrong.
Also see http://lists.dragonflybsd.org/pipermail/users/2015-April/228012.html

-----
Actually I even suspect reports by users and 8b640662 were wrong
in the first place, because one would still get the same PFS id from
both "symlink" and "symlink/" when "symlink" is a symlink to PFS.
"symlink" can extract the PFS id directly from "@@.." format, but
"symlink/" eventually results the same via hammer_pfs_autodetect().
In fact I could pfs-upgrade/pfs-downgrade by reverting whole 8b640662.

Having said that, it still needs to strip trailing / on pfs-destroy
otherwise it won't be able to remove a symlink to PFS after it gets
destroyed.

7 years agosbin/hammer: Use dirname(3) instead of getdir() in scanpfsid()
Tomohiro Kusumi [Sat, 8 Oct 2016 07:31:53 +0000 (16:31 +0900)]
sbin/hammer: Use dirname(3) instead of getdir() in scanpfsid()

scanpfsid() can use dirname(3) for fd instead of getdir().
It's actually better to use dirname(3) which strips trailing /
first and then return a pointer to directory path, instead of
getdir() which only strips trailing / if any, because that's
what scanpfsid() is trying to do with fd.

If path is
    path/to/pfs -> @@...
scanpfsid() wants to open("path/to"), and if path is
    path/to/pfs/
which is @@.. itself if the PFS is not destroyed,
scanpfsid() still wants to open("path/to").

The second one doesn't occur since 8b640662 changed getpfs()
to strip trailing / before calling scanpfsid().
However the next commit is going to partly revert 8b640662,
and this change makes the next 2 commits easier to implement,
while being logically separated topic.

7 years agokernel - Refactor VMX code
Matthew Dillon [Sat, 8 Oct 2016 23:57:16 +0000 (16:57 -0700)]
kernel - Refactor VMX code

* Refactor the VMX code to use all three VMM states available to use
  instead of two.  The three states available are:

  active and current (VMPTRLD)
  active not current (replaced by some other context being VMPTRLD'd)
  inactive not current (VMCLEAR)

  In short, there is no need to VMCLEAR the current context when activating
  another via VMPTRLD, doing so greatly reduces performance.  VMCLEAR is
  only really needed when a context is being destroyed or being moved to
  another cpu.

* Also fixes a few bugs along the way.

* Live loop in vmx_vmrun() when necessary, otherwise we wind up with serious
  problems synchronizing IPIs.  The thread will still be subject to its
  process priority.

7 years agoif_iwm - Add iwm_nic_unlock() calls missing from previous commit.
Imre Vadász [Sat, 8 Oct 2016 21:56:42 +0000 (23:56 +0200)]
if_iwm - Add iwm_nic_unlock() calls missing from previous commit.

7 years agoif_iwm - iwm_{read,write}_prph() don't grab the nic lock in iwm themselves.
Imre Vadász [Sat, 8 Oct 2016 21:06:50 +0000 (23:06 +0200)]
if_iwm - iwm_{read,write}_prph() don't grab the nic lock in iwm themselves.

* Fix a couple of cases where the nic lock ended up not being grabbed
  during an iwm_read_prph() or iwm_write_prph().

7 years agokernel/iwm: Fix building into the kernel without IWM_DEBUG.
Sascha Wildner [Sat, 8 Oct 2016 06:06:42 +0000 (08:06 +0200)]
kernel/iwm: Fix building into the kernel without IWM_DEBUG.

7 years agokernel/iwm: Allow IWM_DEBUG to come in via the kernel config too.
Sascha Wildner [Sat, 8 Oct 2016 06:06:03 +0000 (08:06 +0200)]
kernel/iwm: Allow IWM_DEBUG to come in via the kernel config too.

Previously, it was only ever set for the module.

7 years agokernel/ecc: Add MODULE_VERSION()s.
Sascha Wildner [Fri, 7 Oct 2016 18:41:09 +0000 (20:41 +0200)]
kernel/ecc: Add MODULE_VERSION()s.

This prevents the loader from loading the module (and whining later about
it) if the driver is built into the kernel as is the case for ecc in our
default config.

7 years agokernel - Fix low memory process kill bug
Matthew Dillon [Sat, 8 Oct 2016 02:13:41 +0000 (19:13 -0700)]
kernel - Fix low memory process kill bug

* If a process is being killed, don't let it stay put in a low-memory
  vm_wait loop in kernel mode, it will never exit.

* Try to improve the chances that we can dump by adjusting an assertion in
  the user thread scheduler.

7 years agokernel - Fix a system lockup with vmm
Matthew Dillon [Sat, 8 Oct 2016 02:10:06 +0000 (19:10 -0700)]
kernel - Fix a system lockup with vmm

* Fix an issue where vkernel_lwp_exit() was improperly trying to kfree()
  the vklp->ve pointer for the guest-thread case.  This field holds a
  user-supplied address in that case, not a kernel structure.

* Yield the cpu more aggressively in the VMM_GUEST_RUN loop.  We were
  testing for pending interrupts but we were not calling lwkt_switch()

* Do not exit the vkernel on a call or jump to address 0.  This debugging
  code should have been removed and wasn't.  A user process running under
  the vkernel could cause the vkernel itself to exit.

* Numerous syntactical cleanups.

Reported-by: tuxillo
7 years agosbin/hammer: Change "PFS #" to "PFS#"
Tomohiro Kusumi [Sat, 8 Oct 2016 00:13:36 +0000 (09:13 +0900)]
sbin/hammer: Change "PFS #" to "PFS#"

It's mostly "PFS#", so remove extra space between "PFS" and "#".

7 years agosbin/hammer: Don't wait 5 secs on pfs-destroy if -d (for devs)
Tomohiro Kusumi [Fri, 7 Oct 2016 22:46:42 +0000 (07:46 +0900)]
sbin/hammer: Don't wait 5 secs on pfs-destroy if -d (for devs)

PFS commands still have bugs and weird behaviors, so don't force
devs to wait 5 secs everytime doing hammer pfs-destroy.

But don't mention this in manpage, because this should be forced
against regular users no matter what.

Also remove extra space between "PFS" and "#" to sync the format
with other printfs.

7 years agoif_iwm - Add the BSS's basic rates to iwm's LQ command, not all the rates.
Imre Vadász [Fri, 7 Oct 2016 18:32:52 +0000 (20:32 +0200)]
if_iwm - Add the BSS's basic rates to iwm's LQ command, not all the rates.

Makes the firmware use appropriate Tx rates for ACKs.

Taken-From: OpenBSD

7 years agosbin/hammer: Make getdir() support more than 1 trailing /
Tomohiro Kusumi [Wed, 5 Oct 2016 20:10:37 +0000 (05:10 +0900)]
sbin/hammer: Make getdir() support more than 1 trailing /

Also add a comment that tells difference from dirname(3) with
trailing /, which was true prior to this commit.

Nothing changes from the way commands use this function.

7 years agosbin/hammer: Remove meaningless sscanf for "@@PFS%d" format
Tomohiro Kusumi [Wed, 21 Sep 2016 01:48:39 +0000 (10:48 +0900)]
sbin/hammer: Remove meaningless sscanf for "@@PFS%d" format

This isn't necessary as userspace never reads "@@PFS%d" via readlink(2).
"@@%jx:%d" covers all the necessary patterns.

It also shouldn't be here because the first stat(2) call in this
function ignores the result due to possible slave PFS (before once
synced with a master PFS), so an arbitrary string that matches this
"@@PFS%d" pattern for path argument (whether it really exists or not)
makes this function return non negative fd while it should return -1.

If "@@PFS%d" is the name of an existing file or a directory, then
that's also not what this function is looking for, so it can still
be ignored.

7 years agosbin/hammer: Remove redundant ioctl(GET_PSEUDOFS) call in getpfs()
Tomohiro Kusumi [Wed, 21 Sep 2016 00:18:55 +0000 (09:18 +0900)]
sbin/hammer: Remove redundant ioctl(GET_PSEUDOFS) call in getpfs()

If scanpfsid() failed, it needs to try to open(2) the path whether
it's a symlink or a file or a directory, but it needs not to call
ioctl(GET_PSEUDOFS) which gets called right after this anyway.

The error message "Cannot access PFS" is misleading too, because
once scanpfsid() fails, the path isn't necessarily a PFS or a symlink
to a PFS.

Also note that calling this ioctl with -1 set to pfs.pfs_id is okay.
In that case, the ioctl will try to detect the PFS id based on fd.

7 years agosbin/hammer: Remove XXX in a comment
Tomohiro Kusumi [Thu, 29 Sep 2016 01:56:35 +0000 (10:56 +0900)]
sbin/hammer: Remove XXX in a comment

There isn't anything wrong with or special about this part, so remove XXX.
The code that originally came with this comment is gone.
See c3be93f2 in 2008 for details.

7 years agosbin/newfs_hammer: Check/initialize uuid after getopt
Tomohiro Kusumi [Mon, 26 Sep 2016 23:54:11 +0000 (08:54 +0900)]
sbin/newfs_hammer: Check/initialize uuid after getopt

Allow the program to go through options even with invalid uuid,
so it at least allows some basic options like -h.
This is same as what sbin/hammer does.

7 years agosbin/hammer: Partly revert 2c1d3cef in 2010
Tomohiro Kusumi [Mon, 26 Sep 2016 20:42:29 +0000 (05:42 +0900)]
sbin/hammer: Partly revert 2c1d3cef in 2010

This is the same as d6c59c72, so read d6c59c72 for details.

The code in 2c1d3cef in 2010 was later replaced by libhammer, so what
this commit actually does is revert a part of those libhammer commits,
but whatever it is, a certain directory being null mounted on somewhere
else is beyond the scope of hammer or any other filesystems.
This command originally had no such extra info, and that was better.

It's also confusing in the sense that it silently changes the output
depending on whether it's mounted or not.

7 years agosbin/hammer: Remove alloc_data_element()
Tomohiro Kusumi [Mon, 26 Sep 2016 19:53:56 +0000 (04:53 +0900)]
sbin/hammer: Remove alloc_data_element()

This function is not used by anyone, and it's normal that way.
The userspace command can't just allocate a user data alone without
other metadata getting involved.

Also note this function isn't fully functional as hammer userspace
only supports upto 16KB buffer. While this function seems to care
about large data zone, it can't handle >16KB by design (at least for now).

7 years agosys/vfs/hammer: Add HAMMER_FSTYPE_STRING
Tomohiro Kusumi [Mon, 26 Sep 2016 16:51:43 +0000 (01:51 +0900)]
sys/vfs/hammer: Add HAMMER_FSTYPE_STRING

It's better to define this in hammer's core ondisk header than
only having it as a string literal in some userspace tools.

7 years agosbin/hammer: Sync return value of test_btree_search() with hammer_btree_cmp()
Tomohiro Kusumi [Mon, 26 Sep 2016 16:26:55 +0000 (01:26 +0900)]
sbin/hammer: Sync return value of test_btree_search() with hammer_btree_cmp()

Sync with the previous commit.
Doesn't change anything as all it matters is whether it's + or - or 0.

7 years agosbin/hammer: Move hammer_btree_cmp() to cmd_show.c
Tomohiro Kusumi [Mon, 26 Sep 2016 01:39:57 +0000 (10:39 +0900)]
sbin/hammer: Move hammer_btree_cmp() to cmd_show.c

This function isn't necessary in userspace unless a command wants
to walk through the B-Tree. The only hammer command that needs to
do this is hammer show, so make it a static function of hammer show
just like other node/elm related functions are static.

This is a copy-pasted function from sys/vfs/hammer/hammer_btree.c,
but keep it copy-pasted code without having it as an static inline
function in hammer_btree.h, as it has bunch of conditionals that
make asm of a caller unreadable.

7 years agosbin/hammer: Rename alloc_btree_element() to alloc_btree_node()
Tomohiro Kusumi [Mon, 26 Sep 2016 01:22:50 +0000 (10:22 +0900)]
sbin/hammer: Rename alloc_btree_element() to alloc_btree_node()

Make it clear that it's allocating a 4KB node, but not elm part.
Also change return type to hammer_node_ondisk_t.
Don't need to cast to void* on returning.

7 years agosbin/hammer: Remove get_ondisk() after previous commits
Tomohiro Kusumi [Mon, 26 Sep 2016 00:52:20 +0000 (09:52 +0900)]
sbin/hammer: Remove get_ondisk() after previous commits

After the previous commits, a static function get_ondisk() is only
used by get_buffer_data() which is a function for arbitrary ondisk
data, so it can simply be a part of get_buffer_data().

7 years agosbin/hammer: Remove get_node()
Tomohiro Kusumi [Mon, 26 Sep 2016 00:51:45 +0000 (09:51 +0900)]
sbin/hammer: Remove get_node()

Just call get_data_buffer(offset, &buffer, 0) like other data do.

7 years agosbin/hammer: Make get_node() a wrapper over get_buffer_data()
Tomohiro Kusumi [Sun, 25 Sep 2016 22:20:44 +0000 (07:20 +0900)]
sbin/hammer: Make get_node() a wrapper over get_buffer_data()

get_node() which is only used by hammer show/blockmap commands should
be a wrapper over the existing get_buffer_data().

It needs to do rel_buffer() if the given offset is out of range when
*bufferp is non NULL. Adding this check makes this function equivalent
of get_buffer_data() with 0 for isnew. isnew must be 0 because this
function assumes and only works when the B-Tree node already exists.

This doesn't change anything because hammer show/blockmap always give
NULL for *bufferp, but it should still be changed.

7 years agolocaledef: Improve cc_list parsing
John Marino [Thu, 6 Oct 2016 15:46:50 +0000 (10:46 -0500)]
localedef: Improve cc_list parsing

I had originally suspected the parsing of ctype definition files as being
the source of the ctype flag mis-definitions, but it wasn't.  In the
process, I simplified the cc_list parsing so I'm committing the no-impact
improvement separately.  It removes some parsing redundancies and
won't parse partial range definitions anymore.

7 years agolocaledef: Fix ctype dump (fixed wide spread errors)
John Marino [Thu, 6 Oct 2016 15:37:06 +0000 (10:37 -0500)]
localedef: Fix ctype dump (fixed wide spread errors)

This was a CTYPE encoding error involving consecutive points of the same
ctype.  It was reported by myself to Illumos over a year ago but I was
unsure if it was only happening on BSD.  Given the cause, the bug is also
present on Illumos.

Basically, if consecutive points were of the exact same ctype, they would
be defined as a range regardless.  For example, all of these would be
considered equivalent:

  <A> ... <C>, <H>  (converts to <A> .. <H>)
  <A>, <B>, <H>     (converts to <A> .. <H>)
  <A>, <J> ... <H>  (converts to <A> .. <H>)

So all the points that shouldn't have been defined got "bridged" by the
extreme points.

The effects were recently reported to FreeBSD on PR 213013.  There are
countless places were the ctype flags are misdefined, so this is a major
fix that has to be MFC'd.

7 years agoif_iwm - Enable Energy Based Scan (EBS).
Imre Vadász [Wed, 5 Oct 2016 20:31:35 +0000 (22:31 +0200)]
if_iwm - Enable Energy Based Scan (EBS).

* This can significantly reduce scan duration thus saving time and power.
  EBS failure reported by FW disables EBS for current connection. It is
  re-enabled upon new connection attempt on any WLAN interface.

Taken-From: Linux iwlwifi

7 years agoif_iwm - GC unused code from if_iwm_scan.c, copyied from iwn or iwlwifi/dvm.
Imre Vadász [Wed, 5 Oct 2016 18:40:23 +0000 (20:40 +0200)]
if_iwm - GC unused code from if_iwm_scan.c, copyied from iwn or iwlwifi/dvm.

7 years agoif_iwm - Tiny cleanup in iwm_rx_addbuf().
Imre Vadász [Wed, 5 Oct 2016 11:29:12 +0000 (13:29 +0200)]
if_iwm - Tiny cleanup in iwm_rx_addbuf().

7 years agoif_iwm - Make ucode capabilities and api flags handling more like iwlwifi.
Imre Vadász [Tue, 4 Oct 2016 22:41:41 +0000 (00:41 +0200)]
if_iwm - Make ucode capabilities and api flags handling more like iwlwifi.

Taken-From: Linux iwlwifi

7 years agoif_iwm - Remove a couple of unneeded IWM_UCODE_TLV_FLAGS_* flags.
Imre Vadász [Tue, 4 Oct 2016 21:05:19 +0000 (23:05 +0200)]
if_iwm - Remove a couple of unneeded IWM_UCODE_TLV_FLAGS_* flags.

* All the supported firmwares have these flags set.

* This removes the following flags:
    IWM_UCODE_TLV_FLAGS_PM_CMD_SUPPORT,
    IWM_UCODE_TLV_FLAGS_NEWBT_COEX,
    IWM_UCODE_TLV_FLAGS_BF_UPDATED,
    IWM_UCODE_TLV_FLAGS_D3_CONTINUITY_API,
    IWM_UCODE_TLV_FLAGS_STA_KEY_CMD,
    IWM_UCODE_TLV_FLAGS_DEVICE_PS_CMD,
    IWM_UCODE_TLV_FLAGS_SCHED_SCAN,
    IWM_UCODE_TLV_FLAGS_RX_ENERGY_API,
    IWM_UCODE_TLV_FLAGS_TIME_EVENT_API_V2

* Also remove definitions and code for dealing with the v1 time-event api.

* Remove unneeded calc_rssi() function.

Taken-From: Linux iwlwifi

7 years agoSync ACPICA with Intel's version 20160930.
Sascha Wildner [Tue, 4 Oct 2016 19:25:31 +0000 (21:25 +0200)]
Sync ACPICA with Intel's version 20160930.

* Increase maximum loop count before AE_AML_INFINITE_LOOP exception to
  1048575.

* iasl: Correctly handle unresolved symbols in the hardware map file.

* iasl: Support for control method invocation as an operand of DeRefOf().

* Various improvements and some issues fixed.

For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.

7 years agoLibreSSL: complete update v2.4.2 => v2.4.3
John Marino [Mon, 3 Oct 2016 19:31:45 +0000 (14:31 -0500)]
LibreSSL: complete update v2.4.2 => v2.4.3

7 years agoMerge branch 'vendor/LIBRESSL'
John Marino [Mon, 3 Oct 2016 19:58:14 +0000 (14:58 -0500)]
Merge branch 'vendor/LIBRESSL'

7 years agoUpdate LibreSSL from version 2.4.2 => 2.4.3
John Marino [Mon, 3 Oct 2016 19:23:51 +0000 (14:23 -0500)]
Update LibreSSL from version 2.4.2 => 2.4.3