dragonfly.git
4 years agodrm/i915: Fix Baytrail hangs with deeper C-states
François Tigeot [Wed, 6 Apr 2016 06:40:48 +0000 (08:40 +0200)]
drm/i915: Fix Baytrail hangs with deeper C-states

Submitted-by: Daniel Bilik
4 years agolibc: mdoc cleanup in some system call manual pages.
Sascha Wildner [Tue, 5 Apr 2016 17:41:41 +0000 (19:41 +0200)]
libc: mdoc cleanup in some system call manual pages.

4 years agokqueue: Use lwkt_{get,rel}pooltoken
Sepherosa Ziehau [Tue, 5 Apr 2016 13:04:23 +0000 (21:04 +0800)]
kqueue: Use lwkt_{get,rel}pooltoken

4 years agoem.4: Mention i219 support.
Sascha Wildner [Tue, 5 Apr 2016 12:34:34 +0000 (14:34 +0200)]
em.4: Mention i219 support.

4 years agogethostbyname.3: mdoc improvements.
Sascha Wildner [Tue, 5 Apr 2016 09:24:23 +0000 (11:24 +0200)]
gethostbyname.3: mdoc improvements.

4 years agobsd-family-tree: Sync with FreeBSD (OpenBSD 5.9, FreeBSD 10.3).
Sascha Wildner [Tue, 5 Apr 2016 09:23:40 +0000 (11:23 +0200)]
bsd-family-tree: Sync with FreeBSD (OpenBSD 5.9, FreeBSD 10.3).

4 years agosbin/hammer: Print volume list after volume-add|del
Tomohiro Kusumi [Mon, 4 Apr 2016 01:33:28 +0000 (10:33 +0900)]
sbin/hammer: Print volume list after volume-add|del

Print volume info equivalent of hammer volume-list.
Using -v on hammer volume-add|del will do the same as
using -v on hammer volume-list.

 # newfs_hammer -L TEST /dev/da1 /dev/da2 /dev/da3 /dev/da4 > /dev/null
 # mount_hammer /dev/da1:/dev/da2:/dev/da3:/dev/da4 /HAMMER
 # hammer volume-list /HAMMER
 /dev/da1
 /dev/da2
 /dev/da3
 /dev/da4
 # hammer volume-del /dev/da2 /HAMMER
 /dev/da1
 /dev/da3
 /dev/da4
 # hammer volume-del /dev/da3 /HAMMER
 /dev/da1
 /dev/da4
 # hammer volume-del /dev/da4 /HAMMER
 /dev/da1
 # hammer volume-add /dev/da4 /HAMMER
 /dev/da1
 /dev/da4
 # hammer volume-add /dev/da3 /HAMMER
 /dev/da1
 /dev/da4
 /dev/da3
 # hammer volume-add /dev/da2 /HAMMER
 /dev/da1
 /dev/da4
 /dev/da3
 /dev/da2

4 years agosys/vfs/hammer: Ask before reblocking on volume-del
Tomohiro Kusumi [Sun, 3 Apr 2016 20:48:44 +0000 (05:48 +0900)]
sys/vfs/hammer: Ask before reblocking on volume-del

hammer volume-del finishes instantly if the volume doesn't need
reblocking, but it could take long depending on how much of the
big-blocks within the volume is used.

This commit makes hammer volume-del ask y/n whether to start
reblocking or not if the volume wasn't empty. Using force option
(-F) makes it reblock without asking.

Also note that reblocking doesn't guarantee anything on removing
a volume from filesystem. It just tries to move data to other
volume(s) so the volume may become empty. Thus users should have
choice.

 # hammer volume-del /dev/da2 /HAMMER
 /dev/da2 is not empty, do you want to reblock /dev/da2? [y/n]
 n
 hammer volume-del ioctl: Directory not empty

4 years agosbin/hammer: Make getyn() non static
Tomohiro Kusumi [Sun, 3 Apr 2016 20:45:46 +0000 (05:45 +0900)]
sbin/hammer: Make getyn() non static

This can be used by other commands (needed in the next commit).

Also rename static function getyn() in sbin/hammer/cmd_mirror.c
to getyntty() to avoid symbol name conflict.

4 years agosys/vfs/hammer: Remove extra filesystem syncing on volume-del
Tomohiro Kusumi [Sun, 3 Apr 2016 20:06:43 +0000 (05:06 +0900)]
sys/vfs/hammer: Remove extra filesystem syncing on volume-del

This isn't necessary after 2f1df9ce.
Having this before hammer_free_freemap() doesn't guarantee anything anyway.

4 years agogpio_intel: Allow switching edge-trigger mode between falling/rising/both.
Imre Vadász [Fri, 1 Apr 2016 08:27:52 +0000 (10:27 +0200)]
gpio_intel: Allow switching edge-trigger mode between falling/rising/both.

* At least this case is definitely harmless, and easy to implement.

4 years agogpio_intel: Move Cherryview SoC specific code into gpio_cherryview.c
Imre Vadász [Tue, 29 Mar 2016 19:13:18 +0000 (21:13 +0200)]
gpio_intel: Move Cherryview SoC specific code into gpio_cherryview.c

* This should allow easily adding GPIO support for other Intel SoC
  versions (like Baytrail).

4 years agolibc: Cleanup some manual pages (mainly .Dv usage).
Sascha Wildner [Sun, 3 Apr 2016 09:22:54 +0000 (11:22 +0200)]
libc: Cleanup some manual pages (mainly .Dv usage).

4 years agosbin/hammer: Make hammer commands print root volume path
Tomohiro Kusumi [Sat, 2 Apr 2016 23:34:44 +0000 (08:34 +0900)]
sbin/hammer: Make hammer commands print root volume path

Base on the change made by the previous commit, this commit adds
the root volume path information (not root volume#) to hammer info
and hammer volume-list commands. hammer volume-list shows the path
only on -v. This enables users to explicitly know the root volume.

 [A] The existing /sbin/hammer
 # hammer -v volume-list /HAMMER
 /dev/da1
 /dev/da2
 /dev/da3
 # hammer info /HAMMER | grep Root
         Root Volume         0

 [B] With this commit
 # ./hammer -v volume-list /HAMMER
 0       /dev/da1 (Root Volume)
 1       /dev/da2
 2       /dev/da3
 # hammer info /HAMMER | grep Root
         Root Volume         /dev/da1

4 years agosys/vfs/hammer: Add vol_no field to struct hammer_ioc_volume
Tomohiro Kusumi [Sat, 2 Apr 2016 19:05:44 +0000 (04:05 +0900)]
sys/vfs/hammer: Add vol_no field to struct hammer_ioc_volume

The problem with interface/commands HAMMER provides is that there
is no way to know what the volume# is for each block device once
newfs_hammer is done, while error messages and manpages, etc talk
about the root volume without explaining what that really is.
In order to clearly show what the root volume is, userspace hammer
commands need to be able to retrieve relation between HAMMER
volume# and block device path, and then print the block device
with volume# 0.

e914c91d which added hammer volume-list command should have added
volume# field to the ioctl structure or at least assign reserved
space for future extension. This is basically the only ioctl that
can retrieve block device paths, but all it does is get the paths
without any other related information. This commit adds volume#
field to struct hammer_ioc_volume.

This commit affects HAMMERIOC_ADD_VOLUME, HAMMERIOC_DEL_VOLUME,
and HAMMERIOC_LIST_VOLUMES ioctls. These are only used by hammer
volume-add, volume-del, volume-list and volume-blkdevs commands.
This commit requires both /sbin/hammer and kernel rebuild.

Also see 7aee7a8b and dae8f186.

4 years agoSync zoneinfo database with tzdata2016c from ftp://ftp.iana.org/tz/releases
Sascha Wildner [Sat, 2 Apr 2016 18:03:30 +0000 (20:03 +0200)]
Sync zoneinfo database with tzdata2016c from ftp://ftp.iana.org/tz/releases

* Azerbaijan no longer observes DST.  (Thanks to Steffen Thorsen.)

* Chile reverts from permanent to seasonal DST.  (Thanks to Juan
    Correa for the heads-up, and to Tim Parenti for corrections.)

* Europe/Kaliningrad and Europe/Vilnius changed from +03/+04 to
    +02/+03 on 1989-03-26, not 1991-03-31.  Europe/Volgograd changed
    from +04/+05 to +03/+04 on 1988-03-27, not 1989-03-26.
    (Thanks to Stepan Golosunov.)

* Several updates and URLs for historical and proposed Russian changes.
    (Thanks to Stepan Golosunov, Matt Johnson, and
    Alexander Krivenyshev.)

4 years agokernel/acpi: Add acpi_MatchUid function for matching against _UID.
Imre Vadász [Sat, 2 Apr 2016 10:33:30 +0000 (12:33 +0200)]
kernel/acpi: Add acpi_MatchUid function for matching against _UID.

* Remove private declaration of acpi_MatchUid from bus/gpio/gpio_intel.

4 years agodrm: Improve drm_cache.c
François Tigeot [Fri, 1 Apr 2016 05:40:53 +0000 (07:40 +0200)]
drm: Improve drm_cache.c

4 years agosbin/hammer: Make hammer info print \n between filesystems
Tomohiro Kusumi [Thu, 31 Mar 2016 17:12:54 +0000 (02:12 +0900)]
sbin/hammer: Make hammer info print \n between filesystems

(not PFSs, but different HAMMER mounts)

4 years agosbin/hammer: Make hammer info print rootvol
Tomohiro Kusumi [Thu, 31 Mar 2016 16:10:23 +0000 (01:10 +0900)]
sbin/hammer: Make hammer info print rootvol

The existence of "root volume" in HAMMER is mentioned in
error messages and dmesg as well as hammer(8) manpage,
but the problem is that no command really tells you which
one is the root volume. This is too obvious if you have
looked at the source, but no idea if otherwise.

Currently the only one explicitly tells you seems to be
a printf in newfs_hammer added by dae8f186 in 2015.

This commit adds hammer info a printf for root volume #,
which is still not clear enough since it's just a number,
but not a block device path.

4 years agodrm/i915: Simplify __i915_wait_request()
François Tigeot [Thu, 31 Mar 2016 17:34:47 +0000 (19:34 +0200)]
drm/i915: Simplify __i915_wait_request()

Making it more similar to the Linux 4.2 code

4 years agodrm: Improve linux/scatterlist.h
François Tigeot [Thu, 31 Mar 2016 11:22:13 +0000 (13:22 +0200)]
drm: Improve linux/scatterlist.h

4 years agodrm/linux: Add nth_page()
François Tigeot [Thu, 31 Mar 2016 07:53:57 +0000 (09:53 +0200)]
drm/linux: Add nth_page()

4 years agosys/vfs/hammer: Fix/add comments on volume header
Tomohiro Kusumi [Wed, 30 Mar 2016 12:07:46 +0000 (21:07 +0900)]
sys/vfs/hammer: Fix/add comments on volume header

4 years agosys/vfs/hammer: Change ondisk vol0_stat_bytes to reserved
Tomohiro Kusumi [Wed, 30 Mar 2016 11:47:27 +0000 (20:47 +0900)]
sys/vfs/hammer: Change ondisk vol0_stat_bytes to reserved

This was added in fbc6e32a in 2007, but never used.
The filesystem design today doesn't need this.

4 years agosys/vfs/hammer: Change ondisk vol_locked to reserved
Tomohiro Kusumi [Wed, 30 Mar 2016 11:41:03 +0000 (20:41 +0900)]
sys/vfs/hammer: Change ondisk vol_locked to reserved

This was added in the first commit of HAMMER 8750964d in 2007,
but was never used.
The filesystem design today doesn't need this.

4 years agotools/kq_sendrecv: Implement kqueue(2) based TCP traffic generator
Sepherosa Ziehau [Wed, 30 Mar 2016 13:58:17 +0000 (21:58 +0800)]
tools/kq_sendrecv: Implement kqueue(2) based TCP traffic generator

It is mainly used to genetate TCP traffic w/ large amount of TCP
connections, e.g. > 10K connections.  netperf is no longer suitable
to generate this kind of TCP traffic, since 10K+ processes is not
desirable.  iperf3 is also not suitable, since it is implemented
using select(2).

4 years agoRemove loader.sym (internal program) via 'make upgrade'.
Sascha Wildner [Wed, 30 Mar 2016 08:56:22 +0000 (10:56 +0200)]
Remove loader.sym (internal program) via 'make upgrade'.

It was accidentally installed for a while.

4 years agocrypto.4: Fix .Dv name.
Sascha Wildner [Sun, 27 Mar 2016 21:45:30 +0000 (23:45 +0200)]
crypto.4: Fix .Dv name.

4 years agogpio_intel: Support integrated GPIO controllers of the Cherry Trail SoC.
Imre Vadász [Sun, 27 Mar 2016 14:09:35 +0000 (16:09 +0200)]
gpio_intel: Support integrated GPIO controllers of the Cherry Trail SoC.

* The gpio_acpi module takes care of probing and setting up the ACPI
  GPIO-signaled events and the ACPI address space handler, utilizing the
  gpio interface provided by gpio_intel for the actual GPIO accesses.

* So far gpio_intel can only be used for the ACPI-5.0 GPIO features.

* This makes ACPI gpio events (which replace GPE interrupts on many
  current x86 SoC devices) work, and provides a handler for the
  GeneralPurposeIo Opregions of each GPIO controller.

* With this the HP x2 210 detachable correctly recognizes unplugging
  of the power supply, and opening/closing of the lid.

* Further work is still needed to refactor gpio_intel to make adding
  support for other SoC/CPU versions easier.

* The gpio_if.m interface is still a prototype that only provides a
  minimum of functionality that is needed to get  gpio_acpi working.

4 years agobsd.prog.mk: Add INTERNALPROG, for programs which are not installed.
Imre Vadász [Sat, 26 Mar 2016 15:45:15 +0000 (16:45 +0100)]
bsd.prog.mk: Add INTERNALPROG, for programs which are not installed.

* This avoids loader.sym being installed by sys/boot/efi/loader.

Taken-From: FreeBSD

4 years agodrm: Allow early kms with monitor EDID override.
zrj [Tue, 29 Mar 2016 16:09:01 +0000 (19:09 +0300)]
drm: Allow early kms with monitor EDID override.

While firmware_put(fw, FIRMWARE_UNLOAD) works great when
fw can be loaded multiple times through kernel fw module,
this functionality breaks when loading i915 and radeonkms
together with EDID override module from /boot/loader.conf

Since DRM reads EDID firmware multiple times, it is best
to delay FW_UNLOAD to at least when / is accessable.
Doing that allows to have an early kms with a monitor
reporting bad EDID information at a native resolution.

EDID fw is usually just 128 bytes and still can be unloaded
if it was autoloaded by loader.

Tested-on: early i915 with eDP and broken external LCD panels.

4 years agosbin/hammer: Don't always print BC error on nodes with 0 count
Tomohiro Kusumi [Mon, 28 Mar 2016 18:43:29 +0000 (03:43 +0900)]
sbin/hammer: Don't always print BC error on nodes with 0 count

B-Tree nodes having 0 count ("BC") isn't necessarily an error.
This is rare case, but hammer prune (or other operations that
delete nodes) could happen to leave B-Tree nodes with 0 count.

In the following hammer show result, there is repetition of
L14298648..14298661 pattern (which includes "BC") for another
25 times after below three. This structure tells nodes with
"BC" aren't generated by node split, because node split always
results in having at least two nodes (original and new node)
at the same level under the parent node of the original node.
It was probably generated by something happened after split.

The following path [B] seems to be the case that could genearate
this structure. As shown in [A] it usually recursively calls
node remove path against its parent node until it first hits
a parent with >1 count. However, as shown in [B] if it fails
to get a lock while in the recursive path, the path ends there
before it hits >1 count node. This results in losing a chance
to erase a node element within the first >1 count node that
has a pointer to all the children so far including the 0 count
node prune ioctl was originally trying to delete, and leaves
the 0 count node along with (1 or more) parent 1 count node(s).

hammer show should recognize this and not mark it as an error
since this is intended behavior.

[A]
hammer_ioc_prune()
-> hammer_delete_at_cursor(HAMMER_DELETE_DESTROY)
   -> hammer_btree_delete()  /* --ondisk->count == 0 */
      -> btree_remove()  /* parent->ondisk->count == 1 */
         -> hammer_cursor_up_locked() /* success */
            -> btree_remove() /* parent->ondisk->count == 1 */
               -> hammer_cursor_up_locked() /* success */
                  -> btree_remove()  /* parent->ondisk->count == 1 */
                     -> hammer_cursor_up_locked() /* success */
                        -> btree_remove() /* parent->ondisk->count > 1 */
                           -> bcopy(&elm[1], &elm[0], newsize);
                              ondisk->count--;
                           ...
                        ...
                     ...
                  ...
[B]
hammer_ioc_prune()
-> hammer_delete_at_cursor(HAMMER_DELETE_DESTROY)
   -> hammer_btree_delete()  /* --ondisk->count == 0 */
      -> btree_remove()  /* parent->ondisk->count == 1 */
         -> hammer_cursor_up_locked() /* failed */
            /* recursive call ends here without erasing elm in parent */

---
  ...
  14298558              NODE 8000003e99042000 cnt=43 p=8000003e8d7f7000 type=I depth=1 mirror=00000005127ef970 fill=z8:v0:0:32050:270336=70% {
  14298559         G------ ELM  0 I lo=00040002 obj=0000000460f4fda4 rt=10 key=000000000000a000 tid=0000000460f8f990
  14298560                          del=0000000000000000 ot=00 suboff=8000003e99041000 mirror=0000000466e4b890
  14298561         G------ ELM  1 I lo=00040002 obj=00000004627d568b rt=10 key=00000000000005d0 tid=00000004627f52d0
  14298562                          del=0000000000000000 ot=00 suboff=8000003e99044000 mirror=000000046b5c6600
  14298563         G------ ELM  2 I lo=00040002 obj=0000000463ed92b1 rt=10 key=00000000000b2000 tid=0000000463f691c0
  14298564                          del=0000000000000000 ot=00 suboff=8000003e99046000 mirror=000000046b5ce630
  <snip>
  ...
  14298639         G------ ELM 40 I lo=00040002 obj=000000050c1bac40 rt=10 key=0000000000056000 tid=000000050d52dad0
  14298640                          del=0000000000000000 ot=00 suboff=8000003e997f5000 mirror=00000005127ef970
  14298641         G------ ELM 41 I lo=00040002 obj=00000005107f5a71 rt=10 key=0000000000004000 tid=000000051083d600
  14298642                          del=0000000000000000 ot=00 suboff=8000003e99b0e000 mirror=00000005127ef910
  14298643         G------ ELM 42 I lo=00040002 obj=000000051158802f rt=10 key=000000000000e000 tid=00000005115c01a0
  14298644                          del=0000000000000000 ot=00 suboff=8000003e9ac72000 mirror=00000005127ef970
  14298645         G------ RBN 43 * lo=ffffffff obj=7fffffffffffffff rt=ffff key=7fffffffffffffff tid=ffffffffffffffff
  14298646                        < del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000000000000
  14298647              }
  14298648                      NODE 8000003e99041000 cnt=01 p=8000003e99042000 type=I depth=2 mirror=0000000466e4b890 fill=z8:v0:0:32050:266240=70% {
  14298649                 G------ ELM  0 I lo=00040002 obj=00000004623f3e4f rt=10 key=0000000000006000 tid=00000004627cd020
  14298650                                  del=0000000000000000 ot=00 suboff=8000003e99040000 mirror=0000000466e4b890
  14298651                 G------ RBN  1 * lo=00040002 obj=00000004627d568b rt=10 key=00000000000005d0 tid=00000004627f52d0
  14298652                                  del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000463507320
  14298653                      }
  14298654                              NODE 8000003e99040000 cnt=01 p=8000003e99041000 type=I depth=3 mirror=000000046347eff0 fill=z8:v0:0:32050:262144=70% {
  14298655                         G------ ELM  0 L lo=00040002 obj=00000004626043ca rt=10 key=0000000000006000 tid=00000004627d5070
  14298656                                          del=0000000000000000 ot=00 suboff=800000395b96a000 mirror=000000046347eff0
  14298657                         G------ RBN  1 * lo=00040002 obj=00000004627d568b rt=10 key=00000000000005d0 tid=00000004627f52d0
  14298658                                          del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000000000000
  14298659                              }
14298660                                 BC   NODE 800000395b96a000 cnt=00 p=8000003e99040000 type=L depth=4 mirror=000000046347eff0 fill=z8:v0:0:29367:1482752=1% {
  14298661                                      }
  14298662                      NODE 8000003e99044000 cnt=01 p=8000003e99042000 type=I depth=2 mirror=000000046b5c6600 fill=z8:v0:0:32050:278528=70% {
  14298663                 G------ ELM  0 I lo=00040002 obj=0000000463b8866f rt=10 key=000000000000e000 tid=0000000463bc0550
  14298664                                  del=0000000000000000 ot=00 suboff=8000003e99043000 mirror=000000046b5c65e0
  14298665                 G------ RBN  1 * lo=00040002 obj=0000000463ed92b1 rt=10 key=00000000000b2000 tid=0000000463f691c0
  14298666                                  del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000464009780
  14298667                      }
  14298668                              NODE 8000003e99043000 cnt=01 p=8000003e99044000 type=I depth=3 mirror=000000046b5b6540 fill=z8:v0:0:32050:274432=70% {
  14298669                         G------ ELM  0 L lo=00040002 obj=0000000463ba883a rt=10 key=0000000000052000 tid=0000000463bc0570
  14298670                                          del=0000000000000000 ot=00 suboff=800000395c948000 mirror=0000000467587c20
  14298671                         G------ RBN  1 * lo=00040002 obj=0000000463ed92b1 rt=10 key=00000000000b2000 tid=0000000463f691c0
  14298672                                          del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000000000000
  14298673                              }
14298674                                 BC   NODE 800000395c948000 cnt=00 p=8000003e99043000 type=L depth=4 mirror=0000000467587c20 fill=z8:v0:0:29369:1343488=1% {
  14298675                                      }
  14298676                      NODE 8000003e99046000 cnt=01 p=8000003e99042000 type=I depth=2 mirror=000000046b5ce630 fill=z8:v0:0:32050:286720=70% {
  14298677                 G------ ELM  0 I lo=00040002 obj=0000000463f5167f rt=10 key=0000000000d28000 tid=0000000463f69160
  14298678                                  del=0000000000000000 ot=00 suboff=8000003e99045000 mirror=000000046b5c6600
  14298679                 G------ RBN  1 * lo=00040002 obj=0000000464a2c0bb rt=10 key=0000000000000f60 tid=0000000464a9c460
  14298680                                  del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000466a39890
  14298681                      }
  14298682                              NODE 8000003e99045000 cnt=01 p=8000003e99046000 type=I depth=3 mirror=0000000467587fc0 fill=z8:v0:0:32050:282624=70% {
  14298683                         G------ ELM  0 L lo=00040002 obj=0000000463f5944f rt=10 key=0000000000b18000 tid=0000000463f691c0
  14298684                                          del=0000000000000000 ot=00 suboff=800000395cb74000 mirror=0000000467587dc0
  14298685                         G------ RBN  1 * lo=00040002 obj=0000000464a2c0bb rt=10 key=0000000000000f60 tid=0000000464a9c460
  14298686                                          del=0000000000000000 ot=00 suboff=0000000000000000 mirror=0000000000000000
  14298687                              }
14298688                                 BC   NODE 800000395cb74000 cnt=00 p=8000003e99045000 type=L depth=4 mirror=0000000467587dc0 fill=z8:v0:0:29369:3620864=1% {
  14298689                                      }
  ...

4 years agosocket/kqueue: Fix space calculation for PREALLOC sending buffer
Sepherosa Ziehau [Tue, 29 Mar 2016 08:19:02 +0000 (16:19 +0800)]
socket/kqueue: Fix space calculation for PREALLOC sending buffer

4 years agotcp: We never use preallocation on receiving buffer
Sepherosa Ziehau [Tue, 29 Mar 2016 08:17:55 +0000 (16:17 +0800)]
tcp: We never use preallocation on receiving buffer

4 years agodrm/linux: Add asm/memory_model.h
François Tigeot [Tue, 29 Mar 2016 06:56:11 +0000 (08:56 +0200)]
drm/linux: Add asm/memory_model.h

4 years agokernel/acpi: Work around a "shift count exceeding the type width" issue.
Sascha Wildner [Tue, 29 Mar 2016 06:41:25 +0000 (08:41 +0200)]
kernel/acpi: Work around a "shift count exceeding the type width" issue.

Triggered when AccessWidth is 32, like when called from AcpiGetTimer()
via acpi_timer.

More information: https://bugs.acpica.org/show_bug.cgi?id=1270

Reported-by: arcade, mneumann
Dragonfly-bug: <https://bugs.dragonflybsd.org/issues/2896>

4 years agoSync ACPICA with Intel's version 20160318.
Sascha Wildner [Tue, 29 Mar 2016 06:41:07 +0000 (08:41 +0200)]
Sync ACPICA with Intel's version 20160318.

* Arbitrary bit length and offset support for registers defined by the
  Generic Address Structure.

* ASL's Concatenate operator now allows any ACPI object to be passed
  as an operand.

* Added "const" across the source.

* Various fixes and additions.

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

Tested-by: ivadasz, tkusumi
4 years agosbin/newfs_hammer: Add missing buffer refcount--
Tomohiro Kusumi [Mon, 28 Mar 2016 16:01:28 +0000 (01:01 +0900)]
sbin/newfs_hammer: Add missing buffer refcount--

All remaining buffers (buffers didn't get kicked out by cache
mechanism) when the program exits should have 0 for refs.
These were remaining ones with refs 1(btree) and 2(inode/pfsd).

4 years agosbin/hammer: Remove unused buffer flag
Tomohiro Kusumi [Mon, 28 Mar 2016 14:52:43 +0000 (23:52 +0900)]
sbin/hammer: Remove unused buffer flag

Add assertion isnew!=-1 since the flag was originally used
to indicate the buffer was allocated by readahead.

4 years agosbin/hammer: Fix/refactor check_data_crc()
Tomohiro Kusumi [Sun, 27 Mar 2016 11:56:14 +0000 (20:56 +0900)]
sbin/hammer: Fix/refactor check_data_crc()

Separate inode CRC from other CRC checks.
The only reason this function goes into while(data_len) loop is
because HAMMER userspace can only support upto 16KB buffer data
whereas inode is always 128 byte.

CRC check should look something similar to the kernel function
hammer_crc_test_leaf() in order to keep maintainability.

Also blockmap_lookup() doesn't need to be inside the while loop.
It only needs to verify zone offset once for each record data.

Also use return value of blockmap_lookup() which is zone2 offset
instead of using non-zone2 offset for get_buffer_data().
get_buffer() does extra blockmap lookup if offset is not zone-2.

4 years agosys/vfs/hammer: Change ondisk vol_nblocks/blocksize to reserved
Tomohiro Kusumi [Sat, 26 Mar 2016 05:03:55 +0000 (14:03 +0900)]
sys/vfs/hammer: Change ondisk vol_nblocks/blocksize to reserved

These were added in fbc6e32a in 2007 in the early stage of HAMMER,
but vol_nblocks wasn't used after 9480ff55 in 2008. vol_blocksize
was never used.

HAMMER volumes have these set by newfs_hammer and hammer volume-add,
but today they are just there for nothing (with obvious values).

The existing HAMMER volumes will keep having vol_nblocks/blocksize
fields initially set by newfs_hammer or added by hammer volume-add,
but new volumes created or added from now on will have 0 for these.
It doesn't erase what's in the existing volume headers.

(There shouldn't be external userspace code that refers to these)

4 years agosys/vfs/hammer: Change ondisk vol0_stat_records to reserved
Tomohiro Kusumi [Sat, 26 Mar 2016 04:28:49 +0000 (13:28 +0900)]
sys/vfs/hammer: Change ondisk vol0_stat_records to reserved

This was used only in the early stage of HAMMER in 2008.
This is no longer used since 11ad5ade and a few others prior to that.

(There shouldn't be external userspace code that refers to this)

4 years agosbin/hammer: Add depth indentation option to hammer show
Tomohiro Kusumi [Sat, 26 Mar 2016 03:19:11 +0000 (12:19 +0900)]
sbin/hammer: Add depth indentation option to hammer show

Print tab(s) based on the current depth in B-Tree. This makes
hammer show output look like below instead of having everything
without indentation. Depth indentation uses tabs instead of
whitespaces because using 0x20s greatly increases the size of
hammer show output.

This option can be specifed by (-vvv are optional)
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show none indent

With obfuscate option, it would be like
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show none indent,obfuscate

With B-Tree search directive, it would be like
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show 1:00000001020bc6f7:... indent
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show 1:00000001020bc6f7:... obfuscate,indent

With filter/nofilter option, it would be like
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show 1:00000001020bc6f7:... indent,filter
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show 1:00000001020bc6f7:... nofilter,indent
 # hammer -vvvf /dev/da1:/dev/da2:/dev/da3 show 1:00000001020bc6f7:... indent,filter,obfuscate

Note that this commit also changes hammer show's suboption format
mentioned above. Above examples are examples of the new format.
The format used to be as follows,
 hammer [getopt options] show [search directives] ["filter"/"nofilter"] ["obfuscate"]
but now it's
 hammer [getopt options] show [search directives] [comma separated suboptions]
The format mentioned in 337ec5f is obsolete. This was necessary
to keep simplicity of suboption format after search directives.

The comma separated suboptions (filter,nofilter,obfuscate,indent)
are not mentioned in hammer(8) manpage which means this change
doesn't impact anyone (aside from real users almost never use
this command in the first place). Having these suboptions just
makes easier to debug or examine the structure in certain cases.

--
NODE aaa parent=0 depth=0
 ELM 0
 ELM 1
 ...
 ELM N
    NODE bbb parent=aaa depth=1
     ELM 0
     ELM 1
     ...
     ELM N
    NODE ccc parent=aaa depth=1
     ELM 0
     ELM 1
     ...
     ELM N
        NODE ddd parent=ccc depth=2
         ELM 0
         ELM 1
         ...
         ELM N
    ...
...

4 years agosbin/hammer: Remove tabs in B-Tree indentation
Tomohiro Kusumi [Sat, 26 Mar 2016 02:23:59 +0000 (11:23 +0900)]
sbin/hammer: Remove tabs in B-Tree indentation

hammer show prints indentations in B-Tree contents using space (0x20).
Remove existing tab indentations.

4 years agosbin/hammer: Refactor hammer show [4/4]
Tomohiro Kusumi [Sat, 26 Mar 2016 02:00:02 +0000 (11:00 +0900)]
sbin/hammer: Refactor hammer show [4/4]

This is for the next few commits.

4 years agosbin/hammer: Refactor hammer show [3/4]
Tomohiro Kusumi [Sat, 26 Mar 2016 01:42:35 +0000 (10:42 +0900)]
sbin/hammer: Refactor hammer show [3/4]

This is for the next few commits.

4 years agosbin/hammer: Refactor hammer show [2/4]
Tomohiro Kusumi [Sat, 26 Mar 2016 01:21:27 +0000 (10:21 +0900)]
sbin/hammer: Refactor hammer show [2/4]

This is for the next few commits.

4 years agosbin/hammer: Refactor hammer show [1/4]
Tomohiro Kusumi [Fri, 25 Mar 2016 14:57:29 +0000 (23:57 +0900)]
sbin/hammer: Refactor hammer show [1/4]

Remove node_offset, depth, left/right bound from hammer_cmd_show()
arguments. hammer show can only start B-Tree walk from the root of
B-Tree, so these arguments are always -1, 0, NULLs.

4 years agosbin/hammer: Add readhammervol()/writehammervol()
Tomohiro Kusumi [Thu, 24 Mar 2016 17:21:31 +0000 (02:21 +0900)]
sbin/hammer: Add readhammervol()/writehammervol()

4 years agosbin/hammer: Refactor get_buffer()
Tomohiro Kusumi [Thu, 24 Mar 2016 16:48:30 +0000 (01:48 +0900)]
sbin/hammer: Refactor get_buffer()

buf and buf->ondisk are allocated and freed at the same time.
buf->ondisk is always NULL if buf hasn't existed, but
buf->ondisk is never NULL if buf already exists.

There isn't a situation where buf exists but buf->ondisk is
not malloced or thrown away.

4 years agosbin/hammer: Add assertion to ensure not to clear modified buffer
Tomohiro Kusumi [Thu, 24 Mar 2016 10:20:29 +0000 (19:20 +0900)]
sbin/hammer: Add assertion to ensure not to clear modified buffer

get_buffer(isnew=1) should have an assertion here before it
zero clears ondisk buffer. If the buffer is modified but not
written back, get_buffer(isnew=1) will screw up the volume.

4 years agosbin/hammer: Remove unused buffer use_count
Tomohiro Kusumi [Thu, 24 Mar 2016 09:58:02 +0000 (18:58 +0900)]
sbin/hammer: Remove unused buffer use_count

4 years agosbin/hammer: Remove cache from volume_info
Tomohiro Kusumi [Wed, 23 Mar 2016 08:38:52 +0000 (17:38 +0900)]
sbin/hammer: Remove cache from volume_info

Remove unused cache structure from volume_info.
volume_info doesn't use cache.

modified flag and ref count for volume_info aren't necessary
since it does nothing, other than making the code look more
complex than it actually is.

Also see the previous commit.

4 years agosbin/hammer: Remove unused buffer 'type' in cache
Tomohiro Kusumi [Tue, 22 Mar 2016 19:33:32 +0000 (04:33 +0900)]
sbin/hammer: Remove unused buffer 'type' in cache

HAMMER userspace cache is only used by general ondisk buffer.
Ondisk volume header doesn't use the cache structure.
Each program always has to explicitly flush ondisk volume header.

This commit removes buffer 'type' from cache structure since
'type' is always general ondisk buffer (non-volume buffer).

4 years agosbin/hammer: Minor cleanups
Tomohiro Kusumi [Wed, 23 Mar 2016 07:49:31 +0000 (16:49 +0900)]
sbin/hammer: Minor cleanups

4 years agosbin/hammer: Use correct type
Tomohiro Kusumi [Tue, 22 Mar 2016 15:06:09 +0000 (00:06 +0900)]
sbin/hammer: Use correct type

4 years agosys/vfs/hammer: Use "%016jx",intmax_t
Tomohiro Kusumi [Tue, 22 Mar 2016 16:22:34 +0000 (01:22 +0900)]
sys/vfs/hammer: Use "%016jx",intmax_t

Some kprintf use long long, others use intmax_t
for HAMMER offsets and B-Tree keys in hexadecimal.
Make them all use intmax_t.

4 years agomsync.2: Use .Dv
Sascha Wildner [Sun, 27 Mar 2016 14:05:45 +0000 (16:05 +0200)]
msync.2: Use .Dv

4 years agogettimeofday.2: Clarify better what we mean.
Sascha Wildner [Sat, 26 Mar 2016 12:24:09 +0000 (13:24 +0100)]
gettimeofday.2: Clarify better what we mean.

4 years agosetuid.2: Use .Dv
Sascha Wildner [Sat, 26 Mar 2016 12:23:28 +0000 (13:23 +0100)]
setuid.2: Use .Dv

4 years agokvm_getprocs.3: Use .Dv and start sentences on new lines.
Sascha Wildner [Fri, 25 Mar 2016 22:09:42 +0000 (23:09 +0100)]
kvm_getprocs.3: Use .Dv and start sentences on new lines.

4 years agosysctl.3: Remove KERN_QUANTUM info. We don't have it.
Sascha Wildner [Fri, 25 Mar 2016 21:56:35 +0000 (22:56 +0100)]
sysctl.3: Remove KERN_QUANTUM info. We don't have it.

4 years agoInclude alias "args" in /bin/ps.
Peeter Must [Sun, 13 Mar 2016 15:04:40 +0000 (17:04 +0200)]
Include alias "args" in /bin/ps.

* Include alias "args" required by SUSv3.

* Improve argument handling of aliases: allows specification
  of different heading as in "ps -o args=MOM".
  This will make some ports happier.

Changes obtained from OpenBSD.

4 years agocrypto.9: Fix .Dv typo.
Sascha Wildner [Fri, 25 Mar 2016 20:22:58 +0000 (21:22 +0100)]
crypto.9: Fix .Dv typo.

4 years agobus_generic_print_child.9: Remove wrong whitespace.
Sascha Wildner [Fri, 25 Mar 2016 20:22:45 +0000 (21:22 +0100)]
bus_generic_print_child.9: Remove wrong whitespace.

4 years agoVFS_SET.9: Adjust list width (we don't have VFCF_DELEGADMIN).
Sascha Wildner [Fri, 25 Mar 2016 19:43:57 +0000 (20:43 +0100)]
VFS_SET.9: Adjust list width (we don't have VFCF_DELEGADMIN).

4 years agoBUS_SETUP_INTR.9: Adjust for the removal of INTR_FAST (f8a09be1e61a).
Sascha Wildner [Fri, 25 Mar 2016 19:40:37 +0000 (20:40 +0100)]
BUS_SETUP_INTR.9: Adjust for the removal of INTR_FAST (f8a09be1e61a).

4 years agoatrun(8): Fix fscanf() format to read uid and gid from the job file.
Peeter Must [Thu, 17 Mar 2016 09:30:09 +0000 (11:30 +0200)]
atrun(8): Fix fscanf() format to read uid and gid from the job file.

4 years agoRevert "Sync ACPICA with Intel's version 20160318."
Sascha Wildner [Fri, 25 Mar 2016 10:24:20 +0000 (11:24 +0100)]
Revert "Sync ACPICA with Intel's version 20160318."

This reverts commit 9cefb7c89c63c495157c0c77d761030bf2bea9b0.

It is causing issues with acpi_timer which I need to investigate.
Revert it until then so that people don't run into subtle issues.

4 years agokernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.
Sascha Wildner [Thu, 24 Mar 2016 20:13:37 +0000 (21:13 +0100)]
kernel/acpi_timer: Add a missing cpu_enable_intr() after the timer test.

It's not related to the acpi_timer issue two people are seeing with
20160318 currently, but wrong in any case.

4 years agogetrlimit.2: Fix typos in .Dv's
Sascha Wildner [Thu, 24 Mar 2016 10:12:35 +0000 (11:12 +0100)]
getrlimit.2: Fix typos in .Dv's

4 years agofcntl.2: Fix typo in a .Dv
Sascha Wildner [Thu, 24 Mar 2016 09:57:38 +0000 (10:57 +0100)]
fcntl.2: Fix typo in a .Dv

4 years agodrm/radeon: Partial sync with Linux 3.18
François Tigeot [Tue, 22 Mar 2016 16:34:23 +0000 (17:34 +0100)]
drm/radeon: Partial sync with Linux 3.18

4 years agokernel/802_11: Add 'static' to some function definitions.
Sascha Wildner [Tue, 22 Mar 2016 21:37:40 +0000 (22:37 +0100)]
kernel/802_11: Add 'static' to some function definitions.

The declarations already have it, so just a cosmetic change.

4 years agokernel/powermng: Add 'static' to some function definitions.
Sascha Wildner [Tue, 22 Mar 2016 20:39:33 +0000 (21:39 +0100)]
kernel/powermng: Add 'static' to some function definitions.

The declarations already have it, so just a cosmetic change.

4 years agokernel: Remove an unused variable in acpi.ko's Makefile.
Sascha Wildner [Tue, 22 Mar 2016 20:13:05 +0000 (21:13 +0100)]
kernel: Remove an unused variable in acpi.ko's Makefile.

Spotted-by: ivadasz
4 years agozic(8): Remove a 'register' that crept in in the last commit.
Sascha Wildner [Tue, 22 Mar 2016 19:04:36 +0000 (20:04 +0100)]
zic(8): Remove a 'register' that crept in in the last commit.

4 years agozic(8)/zdump(8): Don't warn about abbreviations like '-05'.
Sascha Wildner [Tue, 22 Mar 2016 18:55:49 +0000 (19:55 +0100)]
zic(8)/zdump(8): Don't warn about abbreviations like '-05'.

These seem to conform (when quoted) to POSIX.1-2001.

The most recent zoneinfo data upgrade experimentally uses such
abbreviations for the new zones it introduces.

Reported-by: zrj
4 years agoAdd unzip(1). If you can't beat 'em, join 'em
John Marino [Tue, 22 Mar 2016 15:57:15 +0000 (16:57 +0100)]
Add unzip(1). If you can't beat 'em, join 'em

The unzip utility isn't particularly necessary (the version of unzip in
ports is better), but the ports tree does leverage it extensively.  I've
been patching around all the resulting failures, but it's easier just to
import unzip(1) from FreeBSD and remove the ports tree modifications.

This tool has also been available in NetBSD since version 6.0, so maybe
bringing it into DragonFly will establish it as a standard BSD utility.

4 years agodrm/linux: Implement flush_work()
François Tigeot [Tue, 22 Mar 2016 12:35:16 +0000 (13:35 +0100)]
drm/linux: Implement flush_work()

4 years agoSync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases
Sascha Wildner [Tue, 22 Mar 2016 11:08:00 +0000 (12:08 +0100)]
Sync zoneinfo database with tzdata2016b from ftp://ftp.iana.org/tz/releases

* New zones Europe/Astrakhan, Europe/Ulyanovsk for the Russian Oblasts
    (their post-1970 histories differ), and Asia/Barnaul for Altai Krai
    and Altai Republic, Russia. Also, Asia/Sakhalin moves from +10 to
    +11 on March 27, 2016. (Thanks to Alexander Krivenyshev for the
    heads-up, and to Matt Johnson and Stepan Golosunov for followup.)

* Haiti will not observe DST in 2016. (Thanks to Jean Antoine via
    Steffen Thorsen.)

* Palestine's spring-forward transition on March 26, 2016 is at 01:00,
    not 00:00. (Thanks to Hannah Kreitem.)

* Europe/Chisinau observed DST during 1990, and switched from +04 to
    +03 at 1990-05-06 02:00, instead of switching from +03 to +02.
    (Thanks to Stepan Golosunov.)

* 1991 abbreviations in Europe/Samara should be SAMT/SAMST, not
    KUYT/KUYST. (Thanks to Stepan Golosunov.)

* Comments in zone tables have been improved.
    (Thanks to J William Piggott.)

* In the Theory file, the description of possible time zone
    abbreviations in tzdata has been cleaned up, as the old
    description was unclear and inconsistent.  (Thanks to Alain Mouette
    for reporting the problem.)

4 years agomtree: Use spaces to indent.
Sascha Wildner [Tue, 22 Mar 2016 10:50:36 +0000 (11:50 +0100)]
mtree: Use spaces to indent.

4 years agofix typo in llvm generator tool README
John Marino [Tue, 22 Mar 2016 10:38:42 +0000 (11:38 +0100)]
fix typo in llvm generator tool README

4 years agoInstall bsd.cpu.clang.mk
John Marino [Tue, 22 Mar 2016 10:37:36 +0000 (11:37 +0100)]
Install bsd.cpu.clang.mk

4 years agosys/boot/Makefile: Build the UEFI bootloader.
Imre Vadász [Tue, 15 Mar 2016 22:08:58 +0000 (23:08 +0100)]
sys/boot/Makefile: Build the UEFI bootloader.

4 years agosys/boot/efi: RB_MULTIPLE doesn't exist in DragonFly.
Imre Vadász [Sat, 19 Mar 2016 12:21:40 +0000 (13:21 +0100)]
sys/boot/efi: RB_MULTIPLE doesn't exist in DragonFly.

4 years agosys/boot/efi: Define SPECNAMELEN in loader/devicename.c.
Imre Vadász [Sat, 19 Mar 2016 12:20:52 +0000 (13:20 +0100)]
sys/boot/efi: Define SPECNAMELEN in loader/devicename.c.

* SPECNAMELEN is currently defined in sys/conf.h, which contains too much
  other stuff.

4 years agosys/boot/efi: No strtoul in DragonFly's libstand, just use strtol.
Imre Vadász [Thu, 17 Mar 2016 11:46:36 +0000 (12:46 +0100)]
sys/boot/efi: No strtoul in DragonFly's libstand, just use strtol.

4 years agosys/boot/efi: dloader's interact() doesn't take an argument.
Imre Vadász [Thu, 17 Mar 2016 11:53:54 +0000 (12:53 +0100)]
sys/boot/efi: dloader's interact() doesn't take an argument.

4 years agosys/boot/efi: Remove __arm__ and __i386__, s/amd64/x86_64/.
Imre Vadász [Thu, 17 Mar 2016 11:52:35 +0000 (12:52 +0100)]
sys/boot/efi: Remove __arm__ and __i386__, s/amd64/x86_64/.

* Keep the __aarch64__ code.

4 years agosys/boot/efi: Remove ZFS and FDT support code.
Imre Vadász [Thu, 17 Mar 2016 11:50:24 +0000 (12:50 +0100)]
sys/boot/efi: Remove ZFS and FDT support code.

4 years agosys/boot/efi: Fix EFI_RESERVED_SERVICE declaration in efiapi.h
Imre Vadász [Thu, 17 Mar 2016 11:42:39 +0000 (12:42 +0100)]
sys/boot/efi: Fix EFI_RESERVED_SERVICE declaration in efiapi.h

4 years agosys/boot/efi: Include <stdarg.h> in efinet.c, to fix a build error.
Imre Vadász [Tue, 15 Mar 2016 22:38:14 +0000 (23:38 +0100)]
sys/boot/efi: Include <stdarg.h> in efinet.c, to fix a build error.

4 years agosys/boot/efi: Use a struct efi_devdesc instead of devdesc for now.
Imre Vadász [Tue, 15 Mar 2016 22:36:06 +0000 (23:36 +0100)]
sys/boot/efi: Use a struct efi_devdesc instead of devdesc for now.

* Using the struct devdesc as in FreeBSD's code would require some
  additional updates in the generic bootloader code from FreeBSD.

4 years agosys/boot/efi: Adapt Makefiles for DragonFly.
Imre Vadász [Tue, 15 Mar 2016 22:19:11 +0000 (23:19 +0100)]
sys/boot/efi: Adapt Makefiles for DragonFly.

* MACHINE_CPUARCH -> MACHINE_ARCH
  amd64 -> x86_64
  libi386 on DragonFly is in pc32/libi386, instead of i386/libi386

4 years agosys/boot/efi: Adapt x86_64/efibind.h header for DragonFly.
Imre Vadász [Tue, 15 Mar 2016 22:26:04 +0000 (23:26 +0100)]
sys/boot/efi: Adapt x86_64/efibind.h header for DragonFly.

* Just replacing #ifdef __FreeBSD__ by #ifdef __DragonFly__.

4 years agosys/boot/efi: Import self_reloc.c from FreeBSD's sys/boot/common.
Imre Vadász [Thu, 17 Mar 2016 10:52:11 +0000 (11:52 +0100)]
sys/boot/efi: Import self_reloc.c from FreeBSD's sys/boot/common.

4 years agosys/boot/efi: Import subset of FreeBSD's sys/boot/efi needed for x86_64.
Imre Vadász [Tue, 15 Mar 2016 21:59:33 +0000 (22:59 +0100)]
sys/boot/efi: Import subset of FreeBSD's sys/boot/efi needed for x86_64.

* Renamed directories sys/boot/efi/include/amd64, and
  sys/boot/efi/loader/arch/amd64 to x86_64.

* Renamed sys/boot/efi/loader/arch/amd64/ldscript.amd64 to
  ldscript.x86_64.

4 years agosys/boot/common: Don't include libi386.h in module.c for the UEFI loader.
Imre Vadász [Sat, 12 Mar 2016 15:44:17 +0000 (16:44 +0100)]
sys/boot/common: Don't include libi386.h in module.c for the UEFI loader.