MFC r261535:
Add support for MegaRAID Fury cards. The main change needed to boot from a
9341-4i controller was to ensure that scatter/gather lists are ended with
an end-of-list marker. Both the mrsas and Linux megaraid_sas drivers use
this marker with Invader cards as well, so we do the same thing, though
it is apparently not strictly necessary.
MFC:	r262746, r262748, r262750, r262752

Move fpusave() wrapper for suspend hander to sys/amd64/amd64/fpu.c.
MFC TTM, a memory manager used by video drivers

This is the last step before the merge of the Radeon KMS driver. Other
changes to TTM will be merged with radeonkms.

The following revisions were merged in this single commit:

r247835:
  Import the preliminary port of the TTM.

  The early commit is done to facilitate the off-tree work on the
  porting of the Radeon driver.

  Sponsored by:	The FreeBSD Foundation
  Debugged and tested by:	    dumbbell
  MFC after:	1 month

r247848:
  Fix build with gcc, remove redundand declarations.

  Reported and tested by:	gjb
  MFC after:	1 month

r247849:
  Fix build with gcc, do not use unnamed union.

  Reported and tested by:	gjb
  MFC after:	1 month

r248060:
  drm: Fix a call to free(9) with an incorrect malloc type

  While here, the call to free(9) is moved to drm_global.c, near the
  initial malloc(9).

  Reviewed by:	Konstantin Belousov (kib@)

r248657:
  drm/ttm: Fix TTM buffer object refcount

  This fixes memory leaks in the radeonkms driver.

  Reviewed by:	Konstantin Belousov (kib@)
  Tested by:	J.R. Oldroyd <jr@opal.com>

r248661:
  drm/ttm: Explain why we don't need to acquire a ref in ttm_bo_vm_ctor()

r248663:
  drm/ttm: Fix a typo: s/pTTM]/[TTM]/

r248666:
  Do not call malloc(M_WAITOK) while bodev->fence_lock mutex is
  held. The ttm_buffer_object_transfer() does not need the mutex locked
  at all, except for the call to the driver sync_obj_ref() method.

  Reported and tested by:	dumbbell
  MFC after:   2 weeks

r252864:
  Remove unneeded page lock around vm_page_insert().

  Submitted by:	alc

r253710:
  MFgem r251960: re-check the mgt device object for the requested page
  after the object was relocked.

  Tested by:	dumbbell
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

r254822:
  drm: In drm_mmap_single, try ttm_bo_mmap_single() before drm_gem_mmap_single()

  In drivers such as the Radeon driver, the DRIVER_GEM features flag is
  set but TTM is used to mmap buffer object.

r254858:
  drm: Add missing bits to drmP.h, required by the Radeon driver

  Some of the FreeBSD-specific definitions are moved to drm_os_freebsd.h.
  But there's still work to do to clean it up and reduce the diff with
  Linux' drmP.h.

r254860:
  drm: Update drm_atomic.h, now that projects/atomic64 is in HEAD

  Submitted by:	jkim@

r254861:
  drm/ttm: Import Linux commit 63d0a4195560362e2e00a3ad38fc331d34e1da9b

  Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
  Date:   Tue Jan 15 14:56:37 2013 +0100

      drm/ttm: remove lru_lock around ttm_bo_reserve

      There should no longer be assumptions that reserve will always succeed
      with the lru lock held, so we can safely break the whole atomic
      reserve/lru thing. As a bonus this fixes most lockdep annotations for
      reservations.

      Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Reviewed-by: Jerome Glisse <jglisse@redhat.com>

r254862:
  drm/ttm: Import Linux commit 7a1863084c9d90ce4b67d645bf9b0f1612e68f62

  Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
  Date:   Tue Jan 15 14:56:48 2013 +0100

      drm/ttm: cleanup ttm_eu_reserve_buffers handling

      With the lru lock no longer required for protecting reservations we
      can just do a ttm_bo_reserve_nolru on -EBUSY, and handle all errors
      in a single path.

      Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Reviewed-by: Jerome Glisse <jglisse@redhat.com>

r254863:
  drm/ttm: Import Linux commit 5e45d7dfd74100d622f9cdc70bfd1f9fae1671de

  Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
  Date:   Tue Jan 15 14:57:05 2013 +0100

      drm/ttm: add ttm_bo_reserve_slowpath

      Instead of dropping everything, waiting for the bo to be unreserved
      and trying over, a better strategy would be to do a blocking wait.

      This can be mapped a lot better to a mutex_lock-like call.

      Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Reviewed-by: Jerome Glisse <jglisse@redhat.com>

  Approved by:	kib@

r254864:
  drm/ttm: Import Linux commit f2d476a110bc24fde008698ae9018c99e803e25c

  Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
  Date:   Tue Jan 15 14:57:10 2013 +0100

      drm/ttm: use ttm_bo_reserve_slowpath_nolru in ttm_eu_reserve_buffers, v2

      This requires re-use of the seqno, which increases fairness slightly.
      Instead of spinning with a new seqno every time we keep the current one,
      but still drop all other reservations we hold. Only when we succeed,
      we try to get back our other reservations again.

      This should increase fairness slightly as well.

      Changes since v1:
       - Increase val_seq before calling ttm_bo_reserve_slowpath_nolru and
	 retrying to take all entries to prevent a race.

      Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Reviewed-by: Jerome Glisse <jglisse@redhat.com>

  Approved by:	kib@

r254865:
  drm/ttm: Import Linux commit cc4c0c4de3c775be22072ec3251f2e581b63d9a0

  Author: Maarten Lankhorst <maarten.lankhorst@canonical.com>
  Date:   Tue Jan 15 14:57:28 2013 +0100

      drm/ttm: unexport ttm_bo_wait_unreserved

      All legitimate users of this function outside ttm_bo.c are gone, now
      it's only an implementation detail.

      Signed-off-by: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Reviewed-by: Jerome Glisse <jglisse@redhat.com>

  Approved by:	kib@

r254866:
  drm/ttm: Import Linux commit 630541863b29f88c7ab34e647758344e4cd1eafd

  Author: Dave Airlie <airlied@gmail.com>
  Date:   Wed Jan 16 14:25:44 2013 +1000

      ttm: don't destroy old mm_node on memcpy failure

      When we are using memcpy to move objects around, and we fail to memcpy
      due to lack of memory to populate or failure to finish the copy, we don't
      want to destroy the mm_node that has been copied into old_copy.

      While working on a new kms driver that uses memcpy, if I overallocated bo's
      up to the memory limits, and eviction failed, then machine would oops soon
      after due to having an active bo with an already freed drm_mm embedded in it,
      freeing it a second time didn't end well.

      Reviewed-by: Jerome Glisse <jglisse@redhat.com>
      Signed-off-by: Dave Airlie <airlied@redhat.com>

  Approved by:	kib@

r254867:
  drm/ttm: Import Linux commit 014b34409fb2015f63663b6cafdf557fdf289628

  Author: Dave Airlie <airlied@gmail.com>
  Date:   Wed Jan 16 15:58:34 2013 +1000

      ttm: on move memory failure don't leave a node dangling

      if we have a move notify callback, when moving fails, we call move notify
      the opposite way around, however this ends up with *mem containing the mm_node
      from the bo, which means we double free it. This is a follow on to the previous
      fix.

      Reviewed-by: Jerome Glisse <jglisse@redhat.com>
      Signed-off-by: Dave Airlie <airlied@redhat.com>

  Approved by:	kib@

r254868:
  drm/ttm: Import Linux commit ff7c60c580d9722f820d85c9c58ca55ecc1ee7c4

  Author: Daniel Vetter <daniel.vetter@ffwll.ch>
  Date:   Mon Jan 14 15:08:14 2013 +0100

      drm/ttm: fix fence locking in ttm_buffer_object_transfer, 2nd try

      This fixes up

      commit e8e89622ed361c46bf90ba4828e685a8b603f7e5
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Tue Dec 18 22:25:11 2012 +0100

	  drm/ttm: fix fence locking in ttm_buffer_object_transfer

      which leaves behind a might_sleep in atomic context, since the
      fence_lock spinlock is held over a kmalloc(GFP_KERNEL) call. The fix
      is to revert the above commit and only take the lock where we need it,
      around the call to ->sync_obj_ref.

      v2: Fixup things noticed by Maarten Lankhorst:
      - Brown paper bag locking bug.
      - No need for kzalloc if we clear the entire thing on the next line.
      - check for bo->sync_obj (totally unlikely race, but still someone
	else could have snuck in) and clear fbo->sync_obj if it's cleared
	already.

      Reported-by: Dave Airlie <airlied@gmail.com>
      Cc: Jerome Glisse <jglisse@redhat.com>
      Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com>
      Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: Dave Airlie <airlied@redhat.com>

  Approved by:	kib@

r254870:
  drm/ttm: Make ttm_bo_wait() call uninterruptible in page fault handler

  This fixes a crash where a SIGLALRM, heavily used by X.Org, would
  interrupt the wait, causing the page fault to fail and the "Xorg"
  process to receive a SIGSEGV.

  Approved by:	kib@

r254871:
  drm/ttm: Fix style errors

r254873:
  drm/ttm: When removing a range of pages from a pool, remove all of them

  Submitted by:	Mark Kettenis and Jonathan Gray from OpenBSD
  Approved by:	kib@

r254874:
  drm/ttm: Improve comment in ttm_bo_vm_ctor() about lack of ref acquisition

  Approved by:	kib@

r254875:
  ttm: "to_page->valid = VM_PAGE_BITS_ALL" before vm_page_dirty(to_page)

  Approved by;	kib@

r254876:
  drm/ttm: Fix unmap of buffer object

  Add a new ttm_bo_release_mmap() function to unmap pages in a
  vm_object_t. Pages are freed when the buffer object is later released.

  This function is called in ttm_bo_unmap_virtual_locked(), replacing
  Linux' unmap_mapping_range(). In particular this is called when a buffer
  object is about to be moved, so that its mapping is invalidated.

  However, we don't use this function in ttm_bo_vm_dtor(), because the
  vm_object_t is already marked as OBJ_DEAD and the pages will be
  unmapped.

  Approved by:	kib@

r254877:
  drm/ttm: Fix style in ttm_bo_release_mmap()

r254878:
  drm/ttm: Fix a reversed condition and add missing locks

  This allows to run OpenGL applications on at least two test machines
  with the Radeon driver.

  Approved by:	kib@

r254879:
  drm/ttm: Remove unused VM_ALLOC_DMA32 define

r254880:
  drm: Use the new drm_atomic.h, following the merge of projects/atomic64

  Submitted by:	jkim@

r259612:
  ttm_bo_vm_lookup_rb: actually make use of the red-black tree

  Previously the code would just iterate over the whole tree as if it were
  just a list.

  Without this change I would observe X server becoming more and more
  jerky over time.

  MFC after:	5 days
MFC r262036:

etcupdate should use the src tree from where the release is built, not
the default (/usr/src) tree.
MFC r262020:

Make it possible to use the env kernel config file option for AVILA
and CAMBRIA boards that does not use loader to load the kernel. This
is basically how it was done for i386. This way tunables can also be
set. For example in config file:

env "/conf/AVILA.env"

And in AVILA.env:

vfs.unmapped_buf_allowed=0
MFC 261243:
Some BIOSes incorrectly use standard memory resource ranges to list
the memory ranges that they decode for downstream devices rather than
creating ResourceProducer range resource entries.  The result is that
we allocate the full range to the PCI root bridge device causing
allocations in child devices to all fail.

As a workaround, ignore any standard memory resources on a PCI root
bridge device.  It is normal for a PCI root bridge to allocate an I/O
resource for the I/O ports used for PCI config access, but I have not
seen any PCI root bridges that legitimately allocate a memory resource.
MFC: r257145,r257147,r257150,r257159,r257164,r257168,r257344,r257667,r257668,
     r258227,r260605

Add default configuration for FreeBSD official pkg(8) repositories
Add fingerprint for the trusted keys
MFC 261030:
Similar to cap_mkdb(1), add endianness support to services_mkdb(1)
to support cross-builds once this is invoked during releases.
MFH (r251810): fix installation from read-only .OBJDIR
MFH (r255384): add PRIVATELIB for internal-use shred libraries
MFH (r255385, r255413): add a stock libmap32.conf
MFH (r255765): always support directory mapping; rewrite libmap man page
MFC: r262398,r262399,r262410,r262975

Import libucl into head

UCL is heavily infused by nginx configuration as the example of a convenient
configuration system. However, UCL is fully compatible with JSON format and is
able to parse json files.

UCL is used by pkg(8) for its configuration file as well for the manifest format
in packages, it will be used in base for the pkg boostrap (signature checking
and configuration file parsing.)

libucl has been developped and is maintained by vsevolod@
MFC: r241737,r246790,r247060,r247841,r248033,r248133,r255468,r256450,r256770
     r256971,r256978,r257051,r257142,r257145,r257146,r257147,r257148,r257149
     r257158,r257193,r257377,r257378,r257400,r257505,r257668,r257701,r257945
     r258020,r258226,r258348,r258550,r259266,r259773,r259774,r259775,r262400
     r262401,r262419

Sync pkg(7) with head:
- signature checking
- respecting and reading repository configurations
- support pkg bootstrap -f

Direct modifications:
- Support old libarchive
- Support old openssl API
- Define non yet existing elf macros
MFC of 263041, tzdata2014a:

- Fix historical info about asia/Zion, Ukraine
- Fiji starts DST at 02:00 instead of 03:00
- Turkey will move to DST at 31 March this year.
Temporarily turn off MK_PKGBOOTSTRAP evaluation to fix build.

Discussed with:	bapt
Sponsored by:	The FreeBSD Foundation
MFC 238010:
  Add PKGBOOTSTRAP to __DEFAULT_YES_OPTIONS to fix build.

Sponsored by:	The FreeBSD Foundation
Revert r263047 now that the missing commit was merged for pkg(7)
updates.

Sponsored by:	The FreeBSD Foundation
MFC r237997, r238018, r238023, r257440, r258924:
  Add WITHOUT_PKGBOOTSTRAP options file.

Sponsored by:	The FreeBSD Foundation
MFC r253304, r255964:
r253304:
  Ensure the locale is LC_ALL=C when regenerating
  src.conf.5

r255964:
  Have makeman always use the mk files from the source
  tree it's operating on rather than those from the
  installed system.

Sponsored by:	The FreeBSD Foundation
Regen after r263053

Sponsored by:	The FreeBSD Foundation
MFC r262417, r262439, r262454, r262455 and r262478:
- Several updates and improvements to ATP driver.
- Start effort merging WSP and ATP driver.
MFC
Sync usbdevs file to head branch.