HardenedBSD/hardenedbsd 2061f8finclude/protocols talkd.h, sys/amd64/vmm x86.c

Merge remote-tracking branch 'origin/hardened/current/master' into 
hardened/current/unstable

* origin/hardened/current/master:
  vmm(4): Mask Spectre feature bits on AMD hosts
  Fix top(1) long options handling
  Clarify error messages a bit.
  psm(4): detect Lenovo top-button clickpads
  Make SIFTR work again after r342125 (D18443).
  Use a private definition of osockaddr rather then relying on type namespace polution in 
sys/socket.h.
  [usb] Add HID_IGNORE quirks for multiple UPS devices
  Remove leading slash from OLD_DIRS assignment in ObsoleteFiles.inc.  The "make 
delete-old" mechanism will already take care of such prefixes, and this prevents a double 
leading slash from being displayed.

HardenedBSD/hardenedbsd 3dc02d0include/protocols talkd.h, sys/amd64/vmm x86.c

Merge branch 'freebsd/current/master' into hardened/current/master

* freebsd/current/master:
  vmm(4): Mask Spectre feature bits on AMD hosts
  Fix top(1) long options handling
  Clarify error messages a bit.
  psm(4): detect Lenovo top-button clickpads
  Make SIFTR work again after r342125 (D18443).
  Use a private definition of osockaddr rather then relying on type namespace polution in 
sys/socket.h.
  [usb] Add HID_IGNORE quirks for multiple UPS devices
  Remove leading slash from OLD_DIRS assignment in ObsoleteFiles.inc.  The "make 
delete-old" mechanism will already take care of such prefixes, and this prevents a double 
leading slash from being displayed.

HardenedBSD/hardenedbsd e87da0fsys/amd64/vmm x86.c

vmm(4): Mask Spectre feature bits on AMD hosts

For parity with Intel hosts, which already mask out the CPUID feature
bits that indicate the presence of the SPEC_CTRL MSR, do the same on
AMD.

Eventually we may want to have a better support story for guests, but
for now, limit the damage of incorrectly indicating an MSR we do not yet
support.

Eventually, we may want a generic CPUID override system for
administrators, or for minimum supported feature set in heterogenous
environments with failover.  That is a much larger scope effort than
this bug fix.

PR:            235010
Reported by:    Rys Sommefeldt <rys AT sommefeldt.com>
Sponsored by:   Dell EMC Isilon

HardenedBSD/hardenedbsd 5232a04sys/dev/atkbdc psm.c atkbdc.c, sys/dev/evdev evdev_utils.c

Merge remote-tracking branch 'origin/hardened/11-stable/master' into 
hardened/11-stable/unstable

* origin/hardened/11-stable/master:
  MFC r340926:
  MFC r340912,r340913:

HardenedBSD/hardenedbsd e14ddbcsys/dev/atkbdc psm.c atkbdc.c, sys/dev/evdev evdev_utils.c

Merge branch 'freebsd/11-stable/master' into hardened/11-stable/master

* freebsd/11-stable/master:
  MFC r340926:
  MFC r340912,r340913:

HardenedBSD/hardenedbsd 2cb205dusr.bin/top top.c

Fix top(1) long options handling

getopt_long(3) requires the long options be terminated by a NULL block.
Without the terminator, an invalid long option results in a segmentation
fault.

Reported by:    Brandon Bergren
MFC after:      1 week
DeltaFile
+2-1usr.bin/top/top.c
+2-11 files

HardenedBSD/tools e481df7release/git update_meta.py

HBSD: feed new line between authors

Signed-off-by: Oliver Pinter <oliver.pinter at hardenedbsd.org>

HardenedBSD/tools 16674e6release/git release_new_stable_repo.csh

HBSD: unconditionally generate release notes input files

Signed-off-by: Oliver Pinter <oliver.pinter at hardenedbsd.org>

HardenedBSD/tools 15ec043release/git update_meta.py release_new_stable_repo.csh

HBSD: implement drupal formatter

Signed-off-by: Oliver Pinter <oliver.pinter at hardenedbsd.org>

HardenedBSD/hardenedbsd f0c36dcusr.sbin/jail command.c

Clarify error messages a bit.

X-Found-With:   r343112
MFC after:      1 month

HardenedBSD/hardenedbsd 30e8bccsys/dev/atkbdc psm.c atkbdc.c, sys/dev/evdev evdev_utils.c

Merge branch 'freebsd/12-stable/master' into hardened/12-stable/master

* freebsd/12-stable/master:
  MFC r340926:
  MFC r340912,r340913:
  MFC r340338: wmt(4): Add PNP record so it could be picked by devd/devmatch. Fix uhid(4) 
conflict with blacklisting of multitouch HID-usages in uhid(4) probe handler.

HardenedBSD/hardenedbsd 0a62e62sys/dev/atkbdc psm.c, sys/sys mouse.h

psm(4): detect Lenovo top-button clickpads

libinput has special handling for Lenovo ThinkPad *40 series, where it
treats clicks on the top button area as if they came from the TrackPoint:
https://wayland.freedesktop.org/libinput/doc/latest/t440-support.html

Detect these devices and set the corresponding evdev property.

Submitted by:          Greg V <greg at unrelenting.technology>
MFC after:             2 weeks
Differential Revision:  https://reviews.freebsd.org/D18676

HardenedBSD/tools 3ec5116release/git update_meta.py release_new_stable_repo.csh

HBSD: partially move shortlog generation to update_meta.py

TODO: move the drupal related stuffs too

Signed-off-by: Oliver Pinter <oliver.pinter at hardenedbsd.org>

HardenedBSD/tools b09406erelease/git update_meta.py

HBSD: add basic error handling

Signed-off-by: Oliver Pinter <oliver.pinter at hardenedbsd.org>

HardenedBSD/hardenedbsd 8ba0807sys/netinet siftr.c

Make SIFTR work again after r342125 (D18443).

Correct a logic error.

Only disable when already enabled or enable when disabled.

Submitted by:   Richard Scheffenegger
Reviewed by:    Cheng Cui
Obtained from:  Cheng Cui
MFC after:      3 days
Differential Revision:  https://reviews.freebsd.org/D18885
DeltaFile
+11-6sys/netinet/siftr.c
+11-61 files

HardenedBSD/hardenedbsd 3d6c5e1include/protocols talkd.h, libexec/talkd talkd.c

Use a private definition of osockaddr rather then relying on type
namespace polution in sys/socket.h.

Also remove support for operation on 4.3BSD.

PR:            224529
Differential Revision:  https://reviews.freebsd.org/D14505

HardenedBSD/hardenedbsd 5113b22sys/dev/evdev evdev_utils.c

MFC r340926:

evdev: Fix pause key release event in AT keyboard set 1 to evdev xlat-or.

HardenedBSD/hardenedbsd 1fcde9fsys/dev/evdev evdev_utils.c

MFC r340926:

evdev: Fix pause key release event in AT keyboard set 1 to evdev xlat-or.

HardenedBSD/hardenedbsd d3b1987sys/dev/atkbdc psm.c atkbdc.c

MFC r340912,r340913:

psm(4): Revert r328640 and add minimal support for active AUX port
        multiplexers

Active PS/2 multiplexing is a method for attaching up to four PS/2
pointing devices to a computer. Enabling of multiplexed mode allows
commands to be directed to individual devices using routing prefixes.
Multiplexed mode reports input with each byte tagged to identify
its source. This method differs from one currently supported by psm(4)
where so called guest device (trackpoint) is attached to special
interface located on the host device (touchpad) and latter performs
guest protocol conversion to special encapsulation packet format.

At present time active PS/2 multiplexing is used in some models of
HP laptops e.g. EliteBook 8560w, 9470m. Enabling of absolute operation
mode on such touchpads is connected with following problems:
1. Touchpad's port priority is lower than trackpoint's. That blocks
   information queries thus prevents touchpad detection and configuration.
2. Touchpad and trackpoint have different protocol packet sizes and
   sync bytes.

As PS/2 usage is on decline only minimal possible set of changes to
support Synaptics touchpad and generic mouses is implemented.
Active multiplexing mode is enabled only at probe stage to scan through

    [21 lines not shown]

HardenedBSD/hardenedbsd 4d24b9asys/dev/atkbdc psm.c atkbdc.c

MFC r340912,r340913:

psm(4): Revert r328640 and add minimal support for active AUX port
        multiplexers

Active PS/2 multiplexing is a method for attaching up to four PS/2
pointing devices to a computer. Enabling of multiplexed mode allows
commands to be directed to individual devices using routing prefixes.
Multiplexed mode reports input with each byte tagged to identify
its source. This method differs from one currently supported by psm(4)
where so called guest device (trackpoint) is attached to special
interface located on the host device (touchpad) and latter performs
guest protocol conversion to special encapsulation packet format.

At present time active PS/2 multiplexing is used in some models of
HP laptops e.g. EliteBook 8560w, 9470m. Enabling of absolute operation
mode on such touchpads is connected with following problems:
1. Touchpad's port priority is lower than trackpoint's. That blocks
   information queries thus prevents touchpad detection and configuration.
2. Touchpad and trackpoint have different protocol packet sizes and
   sync bytes.

As PS/2 usage is on decline only minimal possible set of changes to
support Synaptics touchpad and generic mouses is implemented.
Active multiplexing mode is enabled only at probe stage to scan through

    [21 lines not shown]

HardenedBSD/hardenedbsd d06a697sys/dev/usb usbdevs, sys/dev/usb/quirk usb_quirk.c

[usb] Add HID_IGNORE quirks for multiple UPS devices

Without HID_IGNORE quirk enabled these models appear in the system as a uhid
devices while NUT (Network UPS Tool) expects them to be ugen.

PR:            131521
Submitted by:   Naoyuki Tai <ntai at smartfruit.com>, John Bayly <john.bayly at tipstrade.net>
MFC after:      1 week

HardenedBSD/hardenedbsd 45d19d4sys/dev/usb/input uhid.c wmt.c

MFC r340338:
wmt(4): Add PNP record so it could be picked by devd/devmatch.
Fix uhid(4) conflict with blacklisting of multitouch HID-usages
in uhid(4) probe handler.

Reviewed by:    imp
Differential Revision:  https://reviews.freebsd.org/D17689

HardenedBSD/hardenedbsd 54461c1. ObsoleteFiles.inc

Remove leading slash from OLD_DIRS assignment in ObsoleteFiles.inc.  The
"make delete-old" mechanism will already take care of such prefixes, and
this prevents a double leading slash from being displayed.
DeltaFile
+1-1ObsoleteFiles.inc
+1-11 files

HardenedBSD/hardenedbsd cf47970sys/vm vm_reserv.c vm_phys.h, sys/x86/x86 busdma_bounce.c busdma_machdep.c

Merge remote-tracking branch 'origin/hardened/current/master' into 
hardened/current/unstable

* origin/hardened/current/master:
  freebsd-update.8: mandoc -Tlint fixes
  freebsd-update: Use BASEDIR when checking for src component
  i386/PAE busdma: allow more bounce pages.
  x86 busdma: fix mis-use of bus_addr_t where vm_paddr_t is assumed.
  MI VM: Make it possible to set size of superpage at boot instead of compile time.

HardenedBSD/hardenedbsd 101529esys/vm vm_reserv.c vm_phys.h, sys/x86/x86 busdma_bounce.c busdma_machdep.c

Merge branch 'freebsd/current/master' into hardened/current/master

* freebsd/current/master:
  freebsd-update.8: mandoc -Tlint fixes
  freebsd-update: Use BASEDIR when checking for src component
  i386/PAE busdma: allow more bounce pages.
  x86 busdma: fix mis-use of bus_addr_t where vm_paddr_t is assumed.
  MI VM: Make it possible to set size of superpage at boot instead of compile time.

HardenedBSD/hardenedbsd 7eea9e2usr.sbin/freebsd-update freebsd-update.8

freebsd-update.8: mandoc -Tlint fixes

PR:            185389
Reported by:    bcr
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation

HardenedBSD/hardenedbsd ba040f8usr.sbin/freebsd-update freebsd-update.sh

freebsd-update: Use BASEDIR when checking for src component

src could potentially be installed under the based dir
and not under the root or vice versa.

PR:            224048
Submitted by:   Gerald Aryeetey <aryeeteygerald_rogers.com>
Reviewed by:    delphij
MFC after:      1 month
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D18849

HardenedBSD/hardenedbsd 3e765dcsys/dev/asmc asmcvar.h asmc.c

Merge remote-tracking branch 'origin/hardened/11-stable/master' into 
hardened/11-stable/unstable

* origin/hardened/11-stable/master:
  MFC r342822:
  MFC r342770:

HardenedBSD/hardenedbsd d0d83e6sys/dev/asmc asmcvar.h asmc.c

Merge branch 'freebsd/11-stable/master' into hardened/11-stable/master

* freebsd/11-stable/master:
  MFC r342822:
  MFC r342770:

HardenedBSD/hardenedbsd 999c74fsys/dev/asmc asmcvar.h asmc.c

Merge branch 'freebsd/12-stable/master' into hardened/12-stable/master

* freebsd/12-stable/master:
  MFC r342822:
  MFC r342770:

HardenedBSD/hardenedbsd b703a03sys/dev/asmc asmcvar.h asmc.c

MFC r342822:

asmc: Add support for Mac mini 4,1 (Mid-2010)

HardenedBSD/hardenedbsd 9d5388fsys/dev/asmc asmcvar.h asmc.c

MFC r342822:

asmc: Add support for Mac mini 4,1 (Mid-2010)

HardenedBSD/hardenedbsd dc3ff82sys/dev/asmc asmcvar.h asmc.c

MFC r342770:

asmc: Patch to add MacBook Pro 9,2 support

PR:            211513
Submitted by:  William Theesfeld Jr <wtheesfeld at mailbox.org>
Reported by:   William Theesfeld Jr <wtheesfeld at mailbox.org>

HardenedBSD/hardenedbsd 243c293sys/dev/asmc asmcvar.h asmc.c

MFC r342770:

asmc: Patch to add MacBook Pro 9,2 support

PR:            211513
Submitted by:   William Theesfeld Jr <wtheesfeld at mailbox.org>
Reported by:    William Theesfeld Jr <wtheesfeld at mailbox.org>

HardenedBSD/hardenedbsd 23a6183sys/x86/x86 busdma_bounce.c

i386/PAE busdma: allow more bounce pages.

If i386 has more than 4G of memory, allow the same number of busdma
bounce pages as for amd64.  In fact, in this case bouncing sometimes
is much heavier than on amd64.

Reviewed by:    markj
Tested by:      pho
Sponsored by:   The FreeBSD Foundation
MFC after:      2 weeks
Differential revision:  https://reviews.freebsd.org/D18854

HardenedBSD/hardenedbsd 687d725sys/x86/include busdma_impl.h, sys/x86/x86 busdma_bounce.c busdma_machdep.c

x86 busdma: fix mis-use of bus_addr_t where vm_paddr_t is assumed.

Right now bus_addr_t and vm_paddr_t are always aliased to the same
underlying integer type on x86, which makes the interchange hard to
detect.  Shortly, i386 kernel would use uint64_t for vm_paddr_t to
enable automatic use of PAE paging structures if hardware allows it,
while bus_addr_t would be extended to 64bit only when PAE option is
specified.

Fix all places that were identified as using bus_addr_t while page
address was assumed.  This was performed by testing the complete PAE
merging patch on machine with > 4G of RAM enabled.

Reviewed by:    markj
Tested by:      pho
Sponsored by:   The FreeBSD Foundation
MFC after:      2 weeks
Differential revision:  https://reviews.freebsd.org/D18854

HardenedBSD/hardenedbsd db50300sys/vm vm_reserv.c vm_phys.h

MI VM: Make it possible to set size of superpage at boot instead of compile time.

In order to allow single kernel to use PAE pagetables on i386 if
hardware supports it, and fall back to classic two-level paging
structures if not, superpage code should be able to adopt to either 2M
or 4M superpages size.  There I make MI VM structures large enough to
track the biggest possible superpage, by allowing architecture to
define VM_NFREEORDER_MAX and VM_LEVEL_0_ORDER_MAX constants.
Corresponding VM_NFREEORDER and VM_LEVEL_0_ORDER symbols can be
defined as runtime values and must be less than the _MAX constants.
If architecture does not define _MAXs, it is assumed that _MAX ==
normal constant.

Reviewed by:    markj
Tested by:      pho (as part of the larger patch)
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D18853

HardenedBSD/hardenedbsd 97d9af5sys/dev/nvdimm nvdimm.c nvdimm_spa.c, sys/netpfil/pf if_pfsync.c

Merge remote-tracking branch 'origin/hardened/current/master' into 
hardened/current/unstable

* origin/hardened/current/master:
  nvdimm: initialize SPA uuids statically.
  nvdimm: add a driver for the NVDIMM root device
  pf: fix pfsync breaking carp

HardenedBSD/hardenedbsd 65f0891sys/dev/nvdimm nvdimm.c nvdimm_spa.c, sys/netpfil/pf if_pfsync.c

Merge branch 'freebsd/current/master' into hardened/current/master

* freebsd/current/master:
  nvdimm: initialize SPA uuids statically.
  nvdimm: add a driver for the NVDIMM root device
  pf: fix pfsync breaking carp

HardenedBSD/hardenedbsd 02fb177sys/dev/usb usb_hub.c usb_generic.c, sys/netinet6 ip6_output.c

Merge branch 'freebsd/10-stable/master' into hardened/10-stable/master

* freebsd/10-stable/master:
  MFC r342884: Fix loopback traffic when using non-lo0 link local IPv6 addresses.
  MFC r342778: Reduce timeout for reading the USB HUB port status to 1000ms and try to 
filter out dead USB HUB devices by implementing an error counter, so that the USB 
enumeration thread does not spend all its time reading from non-responding devices, 
blocking user-space access in the end.
  MFC r342730: Improve USB generic debug messages. Print process ID and name when opening 
and closing usb/ugenX.Y character device nodes.

HardenedBSD/hardenedbsd d3d7db7sys/dev/usb usb_hub.c usb_generic.c, sys/netinet6 ip6_output.c

Merge remote-tracking branch 'origin/hardened/11-stable/master' into 
hardened/11-stable/unstable

* origin/hardened/11-stable/master:
  MFC 342925:   Relax requirement to packet size of CARP protocol and remove version 
check.
  MFC r342884: Fix loopback traffic when using non-lo0 link local IPv6 addresses.
  MFC r342778: Reduce timeout for reading the USB HUB port status to 1000ms and try to 
filter out dead USB HUB devices by implementing an error counter, so that the USB 
enumeration thread does not spend all its time reading from non-responding devices, 
blocking user-space access in the end.
  MFC r342730: Improve USB generic debug messages. Print process ID and name when opening 
and closing usb/ugenX.Y character device nodes.

HardenedBSD/hardenedbsd 163b33csys/dev/usb usb_hub.c usb_generic.c, sys/netinet6 ip6_output.c

Merge branch 'freebsd/11-stable/master' into hardened/11-stable/master

* freebsd/11-stable/master:
  MFC 342925:   Relax requirement to packet size of CARP protocol and remove version 
check.
  MFC r342884: Fix loopback traffic when using non-lo0 link local IPv6 addresses.
  MFC r342778: Reduce timeout for reading the USB HUB port status to 1000ms and try to 
filter out dead USB HUB devices by implementing an error counter, so that the USB 
enumeration thread does not spend all its time reading from non-responding devices, 
blocking user-space access in the end.
  MFC r342730: Improve USB generic debug messages. Print process ID and name when opening 
and closing usb/ugenX.Y character device nodes.

HardenedBSD/hardenedbsd ff054c8sys/netinet6 ip6_output.c, usr.sbin/cpucontrol cpucontrol.c intel.c

Merge branch 'freebsd/12-stable/master' into hardened/12-stable/master

* freebsd/12-stable/master:
  MFC r342925:   Relax requirement to packet size of CARP protocol and remove version 
check.
  MFC r340421 (by cem), r342934: cpucontrol(8): De-duplicate common update logic.
  MFC r342884: Fix loopback traffic when using non-lo0 link local IPv6 addresses.
  MFC r342778: Reduce timeout for reading the USB HUB port status to 1000ms and try to 
filter out dead USB HUB devices by implementing an error counter, so that the USB 
enumeration thread does not spend all its time reading from non-responding devices, 
blocking user-space access in the end.
  MFC r342730: Improve USB generic debug messages. Print process ID and name when opening 
and closing usb/ugenX.Y character device nodes.

HardenedBSD/hardenedbsd 9c01c68sys/dev/nvdimm nvdimm_spa.c nvdimm_var.h

nvdimm: initialize SPA uuids statically.

The SPA ids are published numbers, so it's safe (if not a bit
annoying) to copy them into a source file.

Submitted by:   D Scott Phillips <d.scott.phillips at intel.com>
Sponsored by:   Intel Corporation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D18733

HardenedBSD/hardenedbsd a2c54a9sys/dev/nvdimm nvdimm.c nvdimm_var.h

nvdimm: add a driver for the NVDIMM root device

The NVDIMM root device is parent to the individual ACPI NVDIMM
devices.  Add a driver for the NVDIMM root device that can own
enumeration of NVDIMM devices as well as NVDIMM SPA ranges that the
system has.

Submitted by:   D Scott Phillips <d.scott.phillips at intel.com>
Sponsored by:   Intel Corporation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D18346

HardenedBSD/hardenedbsd c5dfd88sys/netpfil/ipfw ip_fw2.c

MFC 342925:
  Relax requirement to packet size of CARP protocol and remove version check.

  CARP shares protocol number 112 with VRRP (RFC 5798). And the size of
  VRRP packet may be smaller than CARP. ipfw_chk() does m_pullup() to at
  least sizeof(struct carp_header) and can fail when packet is VRRP. This
  leads to packet drop and message about failed pullup attempt.
  Also, RFC 5798 defines version 3 of VRRP protocol, this version number
  also unsupported by CARP and such check leads to packet drop.

  carp_input() does its own checks for protocol version and packet size,
  so we can remove these checks to be able pass VRRP packets.

  PR:          234207

HardenedBSD/hardenedbsd 8f52cc3sys/netpfil/ipfw ip_fw2.c

MFC r342925:
  Relax requirement to packet size of CARP protocol and remove version check.

  CARP shares protocol number 112 with VRRP (RFC 5798). And the size of
  VRRP packet may be smaller than CARP. ipfw_chk() does m_pullup() to at
  least sizeof(struct carp_header) and can fail when packet is VRRP. This
  leads to packet drop and message about failed pullup attempt.
  Also, RFC 5798 defines version 3 of VRRP protocol, this version number
  also unsupported by CARP and such check leads to packet drop.

  carp_input() does its own checks for protocol version and packet size,
  so we can remove these checks to be able pass VRRP packets.

  PR:          234207

HardenedBSD/hardenedbsd d54deb3usr.sbin/cpucontrol cpucontrol.c intel.c

MFC r340421 (by cem), r342934:
cpucontrol(8): De-duplicate common update logic.

HardenedBSD/hardenedbsd 0962f56sys/netinet6 ip6_output.c

MFC r342884:
Fix loopback traffic when using non-lo0 link local IPv6 addresses.

The loopback interface can only receive packets with a single scope ID,
namely the scope ID of the loopback interface itself. To mitigate this
packets which use the scope ID are appearing as received by the real
network interface, see "origifp" in the patch. The current code would
drop packets which are designated for loopback which use a link-local
scope ID in the destination address or source address, because they
won't match the lo0's scope ID. To fix this restore the network
interface pointer from the scope ID in the destination address for
the problematic cases. See comments added in patch for a more detailed
description.

This issue was introduced with route caching by karels@ .

Reviewed by:           bz (network)
Differential Revision:  https://reviews.freebsd.org/D18769
Sponsored by:          Mellanox Technologies

HardenedBSD/hardenedbsd b9e76fbsys/netinet6 ip6_output.c

MFC r342884:
Fix loopback traffic when using non-lo0 link local IPv6 addresses.

The loopback interface can only receive packets with a single scope ID,
namely the scope ID of the loopback interface itself. To mitigate this
packets which use the scope ID are appearing as received by the real
network interface, see "origifp" in the patch. The current code would
drop packets which are designated for loopback which use a link-local
scope ID in the destination address or source address, because they
won't match the lo0's scope ID. To fix this restore the network
interface pointer from the scope ID in the destination address for
the problematic cases. See comments added in patch for a more detailed
description.

This issue was introduced with route caching by karels@ .

Reviewed by:           bz (network)
Differential Revision:  https://reviews.freebsd.org/D18769
Sponsored by:          Mellanox Technologies