Compare commits

...
Author SHA1 Message Date
Glen Barber 617bf97c01 - Switch releng/11.2 to -RELEASE.
- Add the anticipated 11.2-RELEASE date to UPDATING.
- Set a static __FreeBSD_version.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-21 22:59:49 +00:00
Glen Barber 071c535fa2 Final touches to 11.2-RELEASE release notes:
- Remove an empty section that was left over from a previous commit
  to prune empty sections.
- Add a note about a late discovered issue with zfsd(8) (Bugzilla
  228750).  Fix a sentence stop while here.
- Document SA-18:07, which had been included in RC3.
- Fix FreeBSD versions in the installation.html page.

Approved by:	re (implicit, relnotes)
Sponsored by:	The FreeBSD Foundation
2018-06-21 18:13:04 +00:00
Glen Barber 7a83cdcae3 Update releng/11.2 to RC3 as part of the 11.2-RELEASE cycle.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-15 13:49:11 +00:00
Konstantin Belousov 6295c65827 MFC rr335072, r335089:
Enable eager FPU context switch on i386 and amd64.
CVE:	CVE-2018-3665

MFC r335131
Remove printf() in #NM handler.

MFC r335132:
Reorganize code flow in fpudna()/npxdna().

Approved by:	re (gjb)
2018-06-15 13:21:37 +00:00
Glen Barber de070ce817 MFS11 r335088 (dim):
MFC rr334886:
  Add missed libc++ entries to (Optional)ObsoleteFiles.inc

  Some of these were removed during the libc++ 5.0.0 import, others
  were added in the libc++ 6.0.0 import.

Approved by:	re (marius)
Sponsored by:	The FreeBSD Foundation
2018-06-14 17:42:36 +00:00
Glen Barber c6445771df MFS11 r334872 (ram):
MFC r334657:
  Issue: Utility hangs when  OCS_IOCTL_CMD_MGMT_GET_ALL called in
  parallel on port 0 and port 1.

  Fix: Using static structure for results is corrupting the second
  ioctl request. Removed static for results structure.

Approved by:	re (marius)
Sponsored by:	The FreeBSD Foundation
2018-06-14 17:42:19 +00:00
Glen Barber 858fc6e71a Switch releng/11.2 to RC2 as part of the 11.2-RELEASE cycle, following
r334860.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-08 21:47:17 +00:00
Glen Barber 4bf4c60282 Fix the ordering of where '$bootable' is set in the second
variable setting, which was moved around as part of prior
commits that were subsequently reverted.

This is a direct commit to releng/11.2.

Approved by:	re (kib)
Sponsored by:	The FreeBSD Foundation
2018-06-08 21:46:11 +00:00
Glen Barber e6915a7bae Revert releng/11.2 back to RC1 temporarily, as an additional fix
for amd64 ISOs is required.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-08 21:44:15 +00:00
Glen Barber 38fd5f9ca0 Rename releng/11.2 to RC2 as part of the 11.2-RELEASE cycle, following
r334839.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-08 14:36:10 +00:00
Glen Barber 0704d8f30b Restore r332345 and r332346 from head, merged to stable/11 as
part of r333006, which was reverted in r334735.

r332345 fixes makefs(8) invocation after head revision r331843,
where makefs(8) was updated to be in sync with NetBSD.

r332346 fixes the $bootable variable position so the platformid
option is correctly applied.

This is a direct commit to releng/11.2, as these two revisions
were part of a total of four revisions merge to stable/11 (at
the time) in r333006.

Approved by:	re (bdrewery)
Sponsored by:	The FreeBSD Foundation
2018-06-08 14:35:27 +00:00
Glen Barber f973c27c38 Revert releng/11.2 back to RC1 due to an issue discovered with
amd64 ISOs, pending a fix to be committed shortly.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-08 14:00:12 +00:00
Glen Barber ae809ec577 Update releng/11.2 to RC2 as part of the 11.2-RELEASE cycle.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 23:59:19 +00:00
Michael Tuexen 5d24d071b4 MFstable/11 334801
Improve compliance with RFC 4895 and RFC 6458.

Silently dicard SCTP chunks which have been requested to be
authenticated but are received unauthenticated no matter if support
for SCTP authentication has been negotiated. This improves compliance
with RFC 4895.

When the application uses the SCTP_AUTH_CHUNK socket option to
request a chunk to be received in an authenticated way, enable
the SCTP authentication extension for the end-point. This improves
compliance with RFC 6458.

Discussed with:	Peter Lei
Approved by:	re (marius@)
2018-06-07 18:01:31 +00:00
Glen Barber 28a86bcb34 Fix a typo.
Spotted by:	adamw
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 17:08:36 +00:00
Glen Barber d336f39894 Add xml:id attributes for diff reduction.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:35:09 +00:00
Glen Barber 98f9be6299 Fix a grammatical error.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:31:05 +00:00
Glen Barber 127879c79e Connect the installation page to the build.
Update the release version in installation/article.xml.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:26:28 +00:00
Glen Barber b87af33c49 Document pkg(8) version.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:21:16 +00:00
Glen Barber 8ca1e5e8a9 relnotes/article.xml:
- Remove empty sections.
- Move the 'hardware support' section, containing only
  driver information, to the 'device drivers' section.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:21:15 +00:00
Glen Barber a2beabe890 Document r334789, dhclient(8) allow to superscede interface-mtu
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:21:14 +00:00
Glen Barber 86538b9112 errata/article.xml:
- Prune stale entries from 11.1-RELEASE.
- Add an xml:id for diff reduction.

hardware/article.xml:
- Add an xml:id for diff reduction.

installation/article.xml:
- Add an xml:id for diff reduction.

readme/article.xml:
- Fix a malformed URL and mailing list reference.

readme/article.xml:
- Update the xml:id to match that used by readme/article.xml
  for consistency.

release.ent:
- Update versions, and switch from 'snapshot' to 'release'.

security.xml:
- Remove reference to 10.x.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-07 16:21:12 +00:00
Marius Strobl 5de478ffc6 MFC: r334443 (by cem@) MF stable/11: r334787
dhclient(8): allow to supersede interface-mtu option

In some cases broken DHCP servers might send invalid MTU value, so allow to
use 'supersede' in dhclient.conf to override this. When superseded value is
0, MTU value is not updated at all.

PR:		206721
Submitted by:	novel@
Reported by:	<jimp AT pfsense.org>
Approved by:	re (gjb)
Relnotes:	yes (potentially surprising behavior change w/ broken dhcpd mtu)
Differential Revision:	https://reviews.freebsd.org/D15484
2018-06-07 15:51:23 +00:00
Michael Tuexen 7cf8e0dc83 MFstable/11 334732:
Don't overflow a buffer if we receive an INIT or INIT-ACK chunk
without a RANDOM parameter but with a CHUNKS or HMAC-ALGO parameter.
Please note that sending this combination violates the specification.

Thanks to Ronald E. Crane for reporting the issue for the userland
stack.

Approved by:	re (gjb@)
2018-06-06 22:34:20 +00:00
Michael Tuexen a3aad3b17d MFstable/11 334731
Limit the retransmission timer for SYN-ACKs by TCPTV_REXMTMAX.

Use the same logic to handle the SYN-ACK retransmission when sent from
the syn cache code as when sent from the main code.

Approved by:	re (gjb@)
Sponsored by:	Netflix, Inc.
2018-06-06 22:02:44 +00:00
Michael Tuexen a99194d3fa MFstable/11 r334730
Ensure net.inet.tcp.syncache.rexmtlimit is limited by TCP_MAXRXTSHIFT.

If the sysctl variable is set to a value larger than TCP_MAXRXTSHIFT+1,
the array tcp_syn_backoff[] is accessed out of bounds.

Discussed with:	jtl@
Approved by:	re (gjb)
Sponsored by:	Netflix, Inc.
2018-06-06 21:23:42 +00:00
Glen Barber 78c3d60fd2 Remove the r333006 entry following r334735.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-06 20:32:39 +00:00
Glen Barber 208776beed Revert r333006:
This revision implemented hybrid ISOs for the amd64
 architecture, however it was discovered to have caused
 a regression in booting legacy-mode (BIOS/CSM).

 This restores the way ISOs were previously created, as
 the cause (and differences between head and stable/11
 and releng/11.2) have not been entirely identified.

Approved by:	re (marius)
Sponsored by:	The FreeBSD Foundation
2018-06-06 20:31:15 +00:00
Michael Tuexen 27f444ce4d MFstable/11 r334728:
Ensure we are not dereferencing a NULL pointer.

CID:		1385266
Approved by: re (marius@)
2018-06-06 20:28:17 +00:00
Glen Barber 5d5eef26f5 Fix two grammatical errors.
Reported by:	adamw
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 22:27:36 +00:00
Glen Barber c35c601593 Add xml:id to the article tag for diff reduction when regenerating
the relnotes page.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:55:40 +00:00
Glen Barber 69308a073c Document r333343, ixl(4) version 1.9.9-k.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:26 +00:00
Glen Barber 0c9cec7846 Adjust wording for r334444 to be more consistent with the text
for i386 memstick images.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:25 +00:00
Glen Barber 11987c4c87 Document r333417, smartpqi(4) addition.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:24 +00:00
Glen Barber 49cc5e72fb Document r333166, Apollo Lake boot issue fix.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:23 +00:00
Glen Barber 00d8b1e3d8 Document r334444, amd64 memstick images now use MBR instead of GPT.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:22 +00:00
Glen Barber 57bff0b0fc Document r334458, libxo(3) version 0.9.0.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:21 +00:00
Glen Barber a19e82db21 Document r332040, ocs_fc(4) addition.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:20 +00:00
Glen Barber 9e125e1d12 Document r331058, ng_pppoe(4) user-supplied Host-Uniq tag support.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:19 +00:00
Glen Barber 65ee15f155 Document r329581, fix to ICMPv6 redirects.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:18 +00:00
Glen Barber d94c62263f Document r329010, loader(8) quote parsing improvements.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:17 +00:00
Glen Barber 5b73786f7d Document r327920, SW_WATCHDOG is now dynamic.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:16 +00:00
Glen Barber e6b9965e3f Document r325730, ipfw(4) Dummynet AQM packet marking L2/L3.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:15 +00:00
Glen Barber 9df472ca75 Document r324175, ng_iface(4) system crash fix.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:14 +00:00
Glen Barber f55756b7e4 Document r323447, support for multiple realtime clocks.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:13 +00:00
Glen Barber b89c884834 Document r322340, fdescfs(5) updates for Linux-specific /dev/fd
and /proc/self/fd behavior.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:12 +00:00
Glen Barber da0f09bb1f Document r321519, boot code and loader check for unsupported ZFS
feature flags.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:11 +00:00
Glen Barber 7c1f7e6d34 Document r321007, msul support in Linuxulator.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:10 +00:00
Glen Barber 299ba767db Document r330733, zfsd(8) updated to work with any GEOM provider.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:09 +00:00
Glen Barber 8da77379a5 Fix missing "_max" in the r326322 entry.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:08 +00:00
Glen Barber 8c9aa6c38c Document r326322, p1003_1b.aio_listio_max is now a tunable.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-05 21:41:06 +00:00
Navdeep Parhar d740e20d96 Merge r334562 from stable/11 to releng/11.2. r334562 MFC'd the
following revisions to stable/11: r333650, r333652, r333682, r334406,
r334409-r334410, and r334489.

r333650:
cxgbe(4): Claim some more T5 and T6 boards.

r333652:
cxgbe(4): Add support for two more flash parts.

r333682:
cxgbe(4): Fall back to a failsafe configuration built into the firmware
if an error is reported while pre-processing the configuration file that
the driver attempted to use.

Also, allow the user to explicitly use the built-in configuration with
hw.cxgbe.config_file="built-in"

r334406:
cxgbe(4): Consider all supported speeds when building the ifmedia list
for a port.  Fix other related issues while here:
- Require port lock for access to link_config.
- Allow 100Mbps operation by tracking the speed in Mbps.  Yes, really.
- New port flag to indicate that the media list is immutable.  It will
  be used in future refinements.

This also fixes a bug where the driver reports incorrect media with
recent firmwares.

r334409:
cxgbe(4): Implement ifm_change callback.

r334410:
cxgbe(4): Use ifm for ifmedia just like the rest of the kernel.

No functional change.

r334489:
cxgbe(4): Include full duplex mediaopt in media that can be reported as
active.  Always report full duplex in active media.

Approved by:	re@ (gjb@, kib@)
Sponsored by:	Chelsio Communications
2018-06-04 20:34:53 +00:00
Glen Barber 43f072d8f1 Switch releng/11.2 back to RC1 following r334469.
Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-01 01:35:54 +00:00
Glen Barber 83d2a5e85c Switch the dvd1 pkg(8) configuration to use the quarterly branch,
as part of the BETA->RC switch.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-01 01:34:37 +00:00
Glen Barber dcf3e88028 Rename releng/11.2 back to BETA3 temporarily, as I missed a file
that needs updating when branching, because I am an idiot.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-01 01:33:48 +00:00
Glen Barber f3563ad3d4 Copy stable/11@r334458 to releng/11.2 as part of the 11.2-RELEASE
cycle.

Approved by:	re (implicit)
Sponsored by:	The FreeBSD Foundation
2018-06-01 00:22:49 +00:00
33 changed files with 887 additions and 682 deletions

No files matched your search

+5
View File
@@ -38,6 +38,11 @@
# xargs -n1 | sort | uniq -d;
# done
# 20180613: obsolete libc++ files missed from the 5.0.0 import
OLD_FILES+=usr/include/c++/v1/__refstring
OLD_FILES+=usr/include/c++/v1/__undef_min_max
OLD_FILES+=usr/include/c++/v1/tr1/__refstring
OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max
# 20180513: remove DTrace scripts made obsolete by dwatch(1)
OLD_FILES+=usr/share/dtrace/watch_execve
OLD_FILES+=usr/share/dtrace/watch_kill
+3
View File
@@ -16,6 +16,9 @@ from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
the tip of head, and then rebuild without this option. The bootstrap process
from older version of current across the gcc/clang cutover is a bit fragile.
20180627:
11.2-RELEASE.
20180504:
The tz database (tzdb) has been updated to 2018e. This version more
correctly models time stamps in time zones with negative DST such as
+1 -1
View File
@@ -62,5 +62,5 @@ static const struct {
.descsz = sizeof(int32_t),
.type = ABI_NOTETYPE,
.name = NOTE_FREEBSD_VENDOR,
.desc = __FreeBSD_version
.desc = 1102000
};
+1 -39
View File
@@ -23,18 +23,6 @@
# extra-bits-dir, if provided, contains additional files to be merged
# into base-bits-dir as part of making the image.
if [ -z $ETDUMP ]; then
ETDUMP=etdump
fi
if [ -z $MAKEFS ]; then
MAKEFS=makefs
fi
if [ -z $MKIMG ]; then
MKIMG=mkimg
fi
if [ "x$1" = "x-b" ]; then
# This is highly x86-centric and will be used directly below.
bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot"
@@ -67,32 +55,6 @@ NAME="$1"; shift
publisher="The FreeBSD Project. http://www.FreeBSD.org/"
echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$1/etc/fstab"
$MAKEFS -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@"
makefs -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@"
rm -f "$1/etc/fstab"
rm -f efiboot.img
if [ "$bootable" != "" ]; then
# Look for the EFI System Partition image we dropped in the ISO image.
for entry in `$ETDUMP --format shell $NAME`; do
eval $entry
if [ "$et_platform" = "efi" ]; then
espstart=`expr $et_lba \* 2048`
espsize=`expr $et_sectors \* 512`
espparam="-p efi::$espsize:$espstart"
break
fi
done
# Create a GPT image containing the partitions we need for hybrid boot.
imgsize=`stat -f %z $NAME`
$MKIMG -s gpt \
--capacity $imgsize \
-b $4/boot/pmbr \
$espparam \
-p freebsd-boot:=$4/boot/isoboot \
-o hybrid.img
# Drop the PMBR, GPT, and boot code into the System Area of the ISO.
dd if=hybrid.img of=$NAME bs=32k count=1 conv=notrunc
rm -f hybrid.img
fi
+1
View File
@@ -3,6 +3,7 @@
RELN_ROOT?= ${.CURDIR}/..
SUBDIR = relnotes
SUBDIR+= installation
SUBDIR+= hardware
SUBDIR+= readme
SUBDIR+= errata
+19 -59
View File
@@ -14,6 +14,7 @@
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="top"
version="5.0">
<info>
<title>&os; &release; Errata</title>
@@ -56,7 +57,7 @@
<title>Introduction</title>
<para>This errata document contains <quote>late-breaking
news</quote> about &os; &release; Before installing this
news</quote> about &os; &release;. Before installing this
version, it is important to consult this document to learn about
any post-release discoveries or problems that may already have
been found and fixed.</para>
@@ -119,19 +120,6 @@ boot</screen>
<programlisting>kern.kstack_pages=4</programlisting>
</listitem>
<listitem>
<para>[2017-07-21] Due to a bug in earlier versions of
&man.clang.1; that is difficult to work around in the
upgrade process, to upgrade the system from sources via
buildworld to -CURRENT or &release;, it is necessary to
upgrade machines running 9.x to at least revision r286035,
or machines running 10.x to revision r286033. Source-based
upgrades from 10.3-RELEASE are not affected. This differs
from the historical situation where one could generally
upgrade from anywhere on earlier stable branches, so caution
should be exercised.</para>
</listitem>
<listitem>
<para>[2017-07-25] &os;/&arch.arm64; currently lacks
<acronym>EFI</acronym> real-time clock
@@ -152,51 +140,6 @@ boot</screen>
<para>There currently is no workaround.</para>
</listitem>
<listitem>
<para>[2017-07-26] Note for those upgrading from 11.1-RC2 in
<application>VirtualBox</application>:</para>
<para>If system panics were experienced when upgrading from
11.1-RC1 to 11.1-RC2, and the <filename
role="package">emulators/virtualbox-ose-additions{,-nox11}</filename>
port was built locally as a resolution, the port will either
need to be rebuilt when upgrading from 11.1-RC2 to
11.1-RELEASE, or reinstall the package from the pkg(8)
mirrors using either:</para>
<screen> &prompt.root; <userinput>pkg install -f virtualbox-ose-additions</userinput></screen>
<para>or</para>
<screen> &prompt.root; <userinput>pkg install -f virtualbox-ose-additions-nox11</userinput></screen>
<para>To ensure the system does not panic after rebooting into
the updated kernel, it is recommended to disable the
<literal>vboxguest</literal> service in &man.rc.conf.5;
prior to rebooting the system if possible, or use
&man.pkg.8; to forcefully reinstall the package.</para>
<para>Systems being upgraded from 11.1-RC1 and earlier and
11.1-RC3 to 11.1-RELEASE should be unaffected.</para>
</listitem>
<listitem>
<para>[2017-07-27] The release notes erroneously state
revision <literal>r315330</literal> was sponsored by Rubicon
Communications, LLC (Netgate), when in fact this work was
done by Hiroki Mori independently.</para>
</listitem>
<listitem>
<para>[2017-08-09] The release notes stated the
&man.ruptime.1;, &man.rwho.1;, and &man.rwhod.8; utilities
have been marked &quot;deprecated&quot;, however this change
was reversed in 12.0-CURRENT.</para>
<para>The other utilities mentioned in the entry in the
release notes, however, are unchanged.</para>
</listitem>
<listitem>
<para>[2017-11-06] An issue with &os; virtual machines with
<application>vagrant</application> was discovered that
@@ -213,6 +156,23 @@ boot</screen>
virtual machine to successfully boot, allowing access via
<literal>vagrant ssh</literal>.</para>
</listitem>
<listitem>
<para>[2018-06-21] An issue had been discovered late in the
release cycle where removing <acronym>ZFS</acronym> vdevs
from a pool under certain conditions would cause a system
crash when &man.zfsd.8; is enabled in
&man.rc.conf.5;.</para>
<para>At present, it is believed to be limited to removal of
a <literal>mirror</literal> vdev from a pool consisting of
multiple <literal>mirror</literal> vdevs.</para>
<para>See <acronym>PR</acronym> <link
xlink:href="https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=228750">228750</link>
for more information and updates as the issue is
investigated.</para>
</listitem>
</itemizedlist>
</sect1>
@@ -7,7 +7,9 @@
%devauto;
]>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="top"
version="5.0">
<info>
<title>&os; &release.current; Hardware Notes</title>
@@ -4,7 +4,7 @@
<!ENTITY % release PUBLIC "-//FreeBSD//ENTITIES Release Specification//EN"
"http://www.FreeBSD.org/release/XML/share/xml/release.ent">
%release;
<!ENTITY local.rel "11.1">
<!ENTITY local.rel "11.2">
]>
<article xmlns="http://docbook.org/ns/docbook"
@@ -82,8 +82,8 @@
<para>The &man.freebsd-update.8; utility supports binary
upgrades of &arch.i386; and &arch.amd64; systems running
earlier FreeBSD releases. Systems running
<literal>10.3-RELEASE</literal>,
<literal>11.0-RELEASE</literal> can upgrade as follows:</para>
<literal>10.4-RELEASE</literal> or
<literal>11.1-RELEASE</literal> can upgrade as follows:</para>
<screen>&prompt.root; freebsd-update fetch
&prompt.root; freebsd-update install</screen>
+16 -14
View File
@@ -13,7 +13,9 @@
End:
-->
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="top"
version="5.0">
<info>
<title>&os; &release.current; README</title>
@@ -70,7 +72,7 @@
&release.current;, the latest point along the &release.branch;
branch.</para>
<sect2>
<sect2 xml:id="intro-about">
<title>About &os;</title>
<para>&os; is an operating system based on 4.4 BSD Lite for
@@ -107,7 +109,7 @@
be quickly installed from the installation program.</para>
</sect2>
<sect2>
<sect2 xml:id="intro-audience">
<title>Target Audience</title>
<para releasetype="current">This &release.type; is aimed
@@ -163,7 +165,7 @@
complete &os; distribution, rather than updating an existing
installation.</para>
<sect2>
<sect2 xml:id="obtain-cd-dvd">
<title>CDROM and DVD</title>
<para>&os; -RELEASE distributions may be ordered on CDROM or DVD
@@ -180,7 +182,7 @@
&os;</quote></link> appendix to the Handbook.</para>
</sect2>
<sect2>
<sect2 xml:id="obtain-https">
<title>HTTPS</title>
<para>&os; releases may be downloaded via
@@ -189,7 +191,7 @@
which is the official &os; release site.</para>
</sect2>
<sect2>
<sect2 xml:id="obtain-ftp">
<title>FTP</title>
<para>You can use FTP to retrieve &os; and any or all of its
@@ -222,14 +224,14 @@
<sect1 xml:id="contacting">
<title>Contacting the &os; Project</title>
<sect2>
<sect2 xml:id="contacting-email">
<title>Email and Mailing Lists</title>
<para>For any questions or general technical support issues,
please send mail to the &a.questions;.</para>
<para>If you are tracking the &release.branch; development
efforts, you <emphasis>must</emphasis> join the &a.current;,
efforts, you <emphasis>must</emphasis> join the &a.stable;,
in order to keep abreast of recent developments and changes
that may affect the way you use and maintain the
system.</para>
@@ -265,7 +267,7 @@
</important>
</sect2>
<sect2>
<sect2 xml:id="contacting-problem-reports">
<title>Submitting Problem Reports</title>
<para>Suggestions, bug reports and contributions of code are
@@ -363,13 +365,13 @@
consulted as the <quote>current errata</quote> for this
release. These other copies of the errata are located at
<uri
xlink:href="&url.base;/releases/">&url.base;/releases/</uri>
(as well as any sites which keep up-to-date mirrors of this
location).</para>
xlink:href="&url.base;/releases/">&os;&nbsp;&release.current;
page</uri> (as well as any sites which keep up-to-date
mirrors of this location).</para>
</note>
</sect2>
<sect2>
<sect2 xml:id="manual-pages">
<title>Manual Pages</title>
<para>As with almost all &unix; like operating systems, &os;
@@ -387,7 +389,7 @@
and &man.style.9; (a style guide to kernel coding).</para>
</sect2>
<sect2>
<sect2 xml:id="books-articles">
<title>Books and Articles</title>
<para>Two highly-useful collections of &os;-related information,
+108 -161
View File
@@ -11,7 +11,9 @@
<!ENTITY errata SYSTEM "../../share/xml/errata.xml">
]>
<article xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="top"
version="5.0">
<info>
<title>&os; &release.current; Release Notes</title>
@@ -156,12 +158,6 @@
<para>This section covers changes and additions to userland
applications, contributed software, and system utilities.</para>
<sect2 xml:id="userland-config">
<title>Userland Configuration Changes</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="userland-programs">
<title>Userland Application Changes</title>
@@ -337,6 +333,12 @@
allow the <literal>@</literal> and <literal>!</literal>
characters in the <acronym>GECOS</acronym> field.</para>
<para revision="330733" contrib="sponsor"
sponsor="&spectralogic;">The &man.zfsd.8; utility has been
updated to work with any type of <acronym>GEOM</acronym>
provider, including &man.md.4;, &man.geli.8;, &man.glabel.8;,
and &man.gstripe.8;.</para>
<para revision="331471">The &man.ps.1; utility has been updated
to include a <literal>jail</literal> keyword, which when used
will list the name of a &man.jail.8; instead of the numeric
@@ -384,6 +386,11 @@
that legacy database support will be removed effective
&os;&nbsp;12 when the <literal>-l</literal> flag is
used.</para>
<para revision="334789">The &man.dhclient.8; utility has been
updated to allow the <literal>interface-mtu</literal> option
to be overridden with a <literal>supersede</literal> entry in
&man.dhclient.conf.5;.</para>
</sect2>
<sect2 xml:id="userland-contrib">
@@ -392,9 +399,6 @@
<para revision="321303">The &man.libarchive.3; library has been
updated to version 3.3.2.</para>
<para revision="322172">The &man.libxo.3; library has been
updated to version 0.8.4.</para>
<para revision="322442"><application>Subversion</application>
has been updated to version 1.9.7.</para>
@@ -441,6 +445,9 @@
<para revision="333312">Timezone data files have been updated to
version 2018e.</para>
<para revision="334458">The &man.libxo.3; library has been
updated to version 0.9.0.</para>
</sect2>
<sect2 xml:id="userland-installer">
@@ -451,38 +458,6 @@
updated to default to <acronym>UEFI</acronym>-only
boot.</para>
</sect2>
<sect2 xml:id="userland-rc">
<title><filename class="directory">/etc/rc.d</filename>
Scripts</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="userland-periodic">
<title><filename class="directory">/etc/periodic</filename>
Scripts</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="userland-libraries">
<title>Runtime Libraries and API</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="userland-abi">
<title>ABI Compatibility</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="userland-debug">
<title>Userland Debugging</title>
<para>&nbsp;</para>
</sect2>
</sect1>
<sect1 xml:id="kernel">
@@ -495,31 +470,50 @@
<sect2 xml:id="kernel-general">
<title>General Kernel Changes</title>
<para>&nbsp;</para>
<para revision="321007">The &man.linux.4; <acronym>ABI</acronym>
compaibility layer has been updated to include support for
<literal>musl</literal> consumers.</para>
<para revision="322340">The &man.fdescfs.5; filesystem has been
updated to support &linux;-specific &man.fd.4;
<filename>/dev/fd</filename> and
<filename>/proc/self/fd</filename> behavior.</para>
<para revision="323447">Support for multiple realtime clocks has
been added.</para>
</sect2>
<sect2 xml:id="kernel-bugfix">
<title>Kernel Bug Fixes</title>
<para>&nbsp;</para>
<para revision="324175">The &man.ng.iface.4; driver has been
updated to prevent a possible system crash.</para>
<para revision="325730">The &man.ipfw.4; packet filter has been
updated to identify layer-2 and layer-3 packets, fixing
&man.dummynet.4; <acronym>AQM</acronym> packet marking.</para>
<para revision="333166">An issue causing boot issues with
&intel; Apollo Lake&trade; <acronym>CPU</acronym>s has been
fixed.</para>
</sect2>
<sect2 xml:id="kernel-config">
<title>Kernel Configuration</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="kernel-modules">
<title>Kernel Modules</title>
<para>&nbsp;</para>
<para revision="327920">The &man.watchdog.4; facility has been
updated to make <literal>SW_WATCHDOG</literal> dynamic,
enabling the software &man.watchdogd.8; option whenever
a hardware watchdog is not present.</para>
</sect2>
<sect2 xml:id="kernel-sysctl">
<title>System Tuning and Controls</title>
<para>&nbsp;</para>
<para revision="326322" contrib="sponsor"
sponsor="&spectralogic;">The
<literal>p1003_1b.aio_listio_max</literal> &man.sysctl.8; has
been changed to a runtime-configurable tunable.</para>
</sect2>
</sect1>
@@ -532,27 +526,56 @@
<sect2 xml:id="drivers-device">
<title>Device Drivers</title>
<para revision="330307" contrib="sponsor"
sponsor="&chelsio;">The &man.cxgbe.4; driver has been updated
to firmware version 1.16.63.0 for T4, T5, and T6 network
adapters.</para>
<para revision="331058">The &man.ng.pppoe.4; driver has been
updated to add support for user-supplied
<literal>Host-Uniq</literal> tags.</para>
<para revision="331500">Support for the TAIO
<acronym>USB</acronym> multi-protocol adapter
(<acronym>TUMPA</acronym>) has been added.</para>
<para revision="331586" contrib="sponsor"
sponsor="&mellanox;">The &man.mlx5io.4; driver has been added,
providing an interface to manage supported Connect-X&nbsp;4
and Connect-X&nbsp;5 network adapters.</para>
<para revision="330307" contrib="sponsor"
sponsor="&chelsio;">The &man.cxgbe.4; driver has been updated
to firmware version 1.16.63.0 for T4, T5, and T6 network
adapters.</para>
</sect2>
<para revision="331882" contrib="sponsor"
sponsor="&darpa_afrl;">The &man.cm.4; and &man.fpa.4; drivers
have been marked as deprecated, and will be removed in
&os;&nbsp;12.</para>
<sect2 xml:id="drivers-storage">
<title>Storage Drivers</title>
<para revision="332040" contrib="sponsor"
sponsor="&broadcom;">The &man.ocs.fc.4; driver has been added,
supporting Emulex&nbsp;16/8G&nbsp;FC&nbsp;GEN&nbsp;5
<acronym>HBA</acronym>s LPe15004 and LPe160XX, and
Emulex&nbsp;32/16G&nbsp;FC&nbsp;GEN&nbsp;6
<acronym>HBA</acronym>s LPe3100X and LPe3200X.</para>
<para>&nbsp;</para>
</sect2>
<para revision="333171">The &man.ixgb.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
<sect2 xml:id="drivers-network">
<title>Network Drivers</title>
<para revision="333343" contrib="sponsor"
sponsor="&intelcorp;">The &man.ixl.4; driver has been updated
to version 1.9.9-k.</para>
<para>&nbsp;</para>
<para revision="333367">The &man.nxge.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
<para revision="333412" contrib="sponsor" sponsor="&ff;">The
&man.lmc.4; driver has been marked as deprecated, and will be
removed in &os;&nbsp;12.</para>
<para revision="333417">The &man.smartpqi.4; driver has been
added, providing support for Microsemi&reg;
<acronym>SCSI</acronym> controllers.</para>
<para revision="333738">The &man.vxge.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
</sect2>
</sect1>
@@ -564,44 +587,12 @@
as hardware changes and updates that do not otherwise fit in
other sections of this document.</para>
<sect2 xml:id="hardware-support">
<title>Hardware Support</title>
<para revision="331500">Support for the TAIO
<acronym>USB</acronym> multi-protocol adapter
(<acronym>TUMPA</acronym>) has been added.</para>
<para revision="331882" contrib="sponsor"
sponsor="&darpa_afrl;">The &man.cm.4; and &man.fpa.4; drivers
have been marked as deprecated, and will be removed in
&os;&nbsp;12.</para>
<para revision="333171">The &man.ixgb.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
<para revision="333367">The &man.nxge.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
<para revision="333412" contrib="sponsor" sponsor="&ff;">The
&man.lmc.4; driver has been marked as deprecated, and will be
removed in &os;&nbsp;12.</para>
<para revision="333738">The &man.vxge.4; driver has been marked
as deprecated, and will be removed in &os;&nbsp;12.</para>
</sect2>
<sect2 xml:id="hardware-virtualization">
<title>Virtualization Support</title>
<para revision="321413">Support for &man.virtio.console.4; has
been added to &man.bhyve.4;.</para>
</sect2>
<sect2 xml:id="hardware-arm">
<title>ARM Support</title>
<para>&nbsp;</para>
</sect2>
</sect1>
<sect1 xml:id="storage">
@@ -610,24 +601,6 @@
<para>This section covers changes and additions to file systems
and other storage subsystems, both local and networked.</para>
<sect2 xml:id="storage-general">
<title>General Storage</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="storage-net">
<title>Networked Storage</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="storage-zfs">
<title>ZFS</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="storage-geom">
<title><literal>geom(4)</literal></title>
@@ -650,17 +623,21 @@
<sect2 xml:id="boot-loader">
<title>Boot Loader Changes</title>
<para revision="321519">The boot code and &man.loader.8; have
been updated to check for unsupported <acronym>ZFS</acronym>
feature flags. If unsupported features are active, the pool
is not considered as a bootable pool, and a diagnostic message
is printed to the console.</para>
<para revision="329010">The &man.loader.8; has been updated to
improve quotation parsing, distinguishing between single- and
double-quotes, and check for terminating quotes.</para>
<para revision="329114">The length of <acronym>GELI</acronym>
passphrases entered when booting a system with encrypted disks
is now hidden by default. See the configuration options in
&man.geli.8; to restore the previous behavior.</para>
</sect2>
<sect2 xml:id="boot-menu">
<title>Boot Menu Changes</title>
<para>&nbsp;</para>
</sect2>
</sect1>
<sect1 xml:id="network">
@@ -672,13 +649,9 @@
<sect2 xml:id="network-general">
<title>General Network Changes</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="network-protocols">
<title>Network Protocols</title>
<para>&nbsp;</para>
<para revision="329581" contrib="sponsor"
sponsor="&dellemc;">The &man.icmp6.4; protocol has been
updated to fix <acronym>ICMPv6</acronym> redirects.</para>
</sect2>
</sect1>
@@ -689,35 +662,11 @@
Collection, package infrastructure, and package maintenance and
installation tools.</para>
<sect2 xml:id="ports-infrastructure">
<title>Infrastructure Changes</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="ports-packages ">
<title>Packaging Changes</title>
<para>&nbsp;</para>
</sect2>
</sect1>
<sect1 xml:id="doc">
<title>Documentation</title>
<para>This section covers changes to the &os;&nbsp;Documentation
Project sources and toolchain.</para>
<sect2 xml:id="doc-sources">
<title>Documentation Source Changes</title>
<para>&nbsp;</para>
</sect2>
<sect2 xml:id="doc-toolchain">
<title>Documentation Toolchain Changes</title>
<para>&nbsp;</para>
<para>The &man.pkg.8; utility has been updated to version
1.10.5.</para>
</sect2>
</sect1>
@@ -736,18 +685,16 @@
EC2&trade; infrastructure.</para>
<para revision="333410" contrib="sponsor" sponsor="&ff;">The
&arch.i386; memory stick image installer have been changed
&arch.i386; memory stick image installers have been changed
to use the <acronym>MBR</acronym> partitioning scheme, which
addresses a boot issue from a <acronym>GPT</acronym> partition
scheme in non-<acronym>UEFI</acronym> mode.</para>
<para revision="333006" contrib="sponsor" sponsor="&ix;">The
&os; installation <acronym>ISO</acronym> medium creation tools
have been updated to generate hybrid images for &arch.amd64;,
supporting both <acronym>BIOS</acronym> and
<acronym>EFI</acronym>. The <acronym>ISO</acronym> image can
now be written to a memory stick as well as being used as
a <acronym>CD</acronym> image.</para>
<para revision="334444" contrib="sponsor" sponsor="&ff;">The
&arch.amd64; memory stick image installers have been changed
to use the <acronym>MBR</acronym> partitioning scheme, which
addresses a boot issue from a <acronym>GPT</acronym> partition
scheme in non-<acronym>UEFI</acronym> mode.</para>
</sect2>
</sect1>
</article>
+10 -10
View File
@@ -6,7 +6,7 @@
<!-- Version of the OS we're describing. This needs to be updated
with each new release. -->
<!ENTITY release.current "11.1-STABLE">
<!ENTITY release.current "11.2-RELEASE">
<!-- The previous version used for comparison in the "What's New"
section. For -CURRENT, we might point back to the last
@@ -16,16 +16,16 @@
<!-- The previous stable release, useful for pointing user's at the
release they SHOULD be running if they don't want the bleeding
edge. -->
<!ENTITY release.prev.stable "10.3-RELEASE">
<!ENTITY release.prev.stable "10.4-RELEASE">
<!-- The next version to be released, usually used for snapshots. -->
<!ENTITY release.next "11.2-RELEASE">
<!ENTITY release.next "11.3-RELEASE">
<!-- The name of this branch. -->
<!ENTITY release.branch "11.1-STABLE">
<!ENTITY release.branch "11.2-STABLE">
<!-- The URL for obtaining this version of FreeBSD. -->
<!ENTITY release.url "https://www.FreeBSD.org/snapshots/">
<!ENTITY release.url "https://www.FreeBSD.org/releases/">
<!-- The URL for Security Advisories and Errata Notices. -->
<!ENTITY security.url "https://www.FreeBSD.org/security/advisories">
@@ -37,10 +37,10 @@
or "release" -->
<!-- WARNING: Do not forget to also change the release type in
doc.relnotes.mk when updating this -->
<!ENTITY release.type "snapshot">
<!ENTITY release.type "release">
<!ENTITY % release.type.current "IGNORE">
<!ENTITY % release.type.snapshot "INCLUDE">
<!ENTITY % release.type.release "IGNORE">
<!ENTITY % release.type.snapshot "IGNORE">
<!ENTITY % release.type.release "INCLUDE">
<![%release.type.current;[
<!ENTITY release '&release.current;'>
@@ -55,10 +55,10 @@
<!-- The manpaths for man page references -->
<!ENTITY release.man.url "https://www.FreeBSD.org/cgi/man.cgi">
<!ENTITY release.manpath.xorg "7.5.1">
<!ENTITY release.manpath.xorg "7.7">
<!ENTITY release.manpath.netbsd "5.1">
<!ENTITY release.manpath.freebsd-ports "Ports">
<!ENTITY release.manpath.freebsd "11-current">
<!ENTITY release.manpath.freebsd "11.2-RELEASE">
<!-- Text constants which probably don't need to be changed.-->
+11 -4
View File
@@ -84,10 +84,9 @@
<para>Speculative Execution Vulnerabilities</para>
<note>
<para>This advisory addresses the most significant issues
for &os;&nbsp;11.1 on &arch.amd64; CPUs. We expect to
update this advisory to include 10.x for &arch.amd64;
CPUs. Future &os; releases will address this issue on
&arch.i386; and other CPUs.</para>
for &os;&nbsp;11.x on &arch.amd64; CPUs. We expect to
update this advisory to include &arch.i386; and other
CPUs.</para>
</note>
</entry>
</row>
@@ -114,6 +113,14 @@
<entry><para>Mishandling of x86 debug
exceptions</para></entry>
</row>
<row>
<entry><link
xlink:href="&security.url;/FreeBSD-SA-18:07.lazyfpu.asc">FreeBSD-SA-18:07.lazyfpu</link></entry>
<entry>21&nbsp;June&nbsp;2018</entry>
<entry><para>Fix Lazy <acronym>FPU</acronym> information
disclosure</para></entry>
</row>
</tbody>
</tgroup>
</informaltable>
+1 -1
View File
@@ -1,6 +1,6 @@
# $FreeBSD$
release: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
+15 -3
View File
@@ -828,11 +828,23 @@ bind_lease(struct interface_info *ip)
opt = &ip->client->new->options[DHO_INTERFACE_MTU];
if (opt->len == sizeof(u_int16_t)) {
u_int16_t mtu = be16dec(opt->data);
if (mtu < MIN_MTU)
warning("mtu size %u < %d: ignored", (unsigned)mtu, MIN_MTU);
u_int16_t mtu = 0;
bool supersede = (ip->client->config->default_actions[DHO_INTERFACE_MTU] ==
ACTION_SUPERSEDE);
if (supersede)
mtu = getUShort(ip->client->config->defaults[DHO_INTERFACE_MTU].data);
else
mtu = be16dec(opt->data);
if (mtu < MIN_MTU) {
/* Treat 0 like a user intentionally doesn't want to change MTU and,
* therefore, warning is not needed */
if (!supersede || mtu != 0)
warning("mtu size %u < %d: ignored", (unsigned)mtu, MIN_MTU);
} else {
interface_set_mtu_unpriv(privfd, mtu);
}
}
/* Write out the new lease. */
+9 -1
View File
@@ -38,7 +38,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd January 1, 1997
.Dd May 31, 2018
.Dt DHCLIENT.CONF 5
.Os
.Sh NAME
@@ -227,6 +227,14 @@ rather than any value supplied by the server, these values can be defined
in the
.Ic supersede
statement.
.Pp
Some options values have special meaning:
.Bl -tag -width indent
.It Ar interface-mtu
Any server-supplied interface MTU is ignored by the client if a
.Ic supersede
zero value is configured.
.El
.It Xo
.Ic prepend No { Op Ar option declaration
.Oo , Ar ... option declaration Oc }
+5 -8
View File
@@ -128,10 +128,10 @@ done_store_dr:
/* have we used fp, and need a save? */
cmpq %rdi,PCPU(FPCURTHREAD)
jne 3f
jne 2f
movq PCB_SAVEFPU(%r8),%r8
clts
cmpl $0,use_xsave
cmpl $0,use_xsave(%rip)
jne 1f
fxsave (%r8)
jmp 2f
@@ -143,12 +143,7 @@ ctx_switch_xsave:
/* This is patched to xsaveopt if supported, see fpuinit_bsp1() */
xsave (%r8)
movq %rcx,%rdx
2: smsw %ax
orb $CR0_TS,%al
lmsw %ax
xorl %eax,%eax
movq %rax,PCPU(FPCURTHREAD)
3:
2:
/* Save is done. Now fire up new thread. Leave old vmspace. */
movq %rsi,%r12
movq %rdi,%r13
@@ -235,6 +230,8 @@ done_load_dr:
movq PCB_RBX(%r8),%rbx
movq PCB_RIP(%r8),%rax
movq %rax,(%rsp)
movq PCPU(CURTHREAD),%rdi
call fpu_activate_sw
ret
/*
+76 -40
View File
@@ -139,6 +139,11 @@ static void fpu_clean_state(void);
SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD,
SYSCTL_NULL_INT_PTR, 1, "Floating point instructions executed in hardware");
int lazy_fpu_switch = 0;
SYSCTL_INT(_hw, OID_AUTO, lazy_fpu_switch, CTLFLAG_RWTUN | CTLFLAG_NOFETCH,
&lazy_fpu_switch, 0,
"Lazily load FPU context after context switch");
int use_xsave; /* non-static for cpu_switch.S */
uint64_t xsave_mask; /* the same */
static uma_zone_t fpu_save_area_zone;
@@ -204,6 +209,7 @@ fpuinit_bsp1(void)
u_int cp[4];
uint64_t xsave_mask_user;
TUNABLE_INT_FETCH("hw.lazy_fpu_switch", &lazy_fpu_switch);
if ((cpu_feature2 & CPUID2_XSAVE) != 0) {
use_xsave = 1;
TUNABLE_INT_FETCH("hw.use_xsave", &use_xsave);
@@ -612,6 +618,45 @@ fputrap_sse(void)
return (fpetable[(mxcsr & (~mxcsr >> 7)) & 0x3f]);
}
static void
restore_fpu_curthread(struct thread *td)
{
struct pcb *pcb;
/*
* Record new context early in case frstor causes a trap.
*/
PCPU_SET(fpcurthread, td);
stop_emulating();
fpu_clean_state();
pcb = td->td_pcb;
if ((pcb->pcb_flags & PCB_FPUINITDONE) == 0) {
/*
* This is the first time this thread has used the FPU or
* the PCB doesn't contain a clean FPU state. Explicitly
* load an initial state.
*
* We prefer to restore the state from the actual save
* area in PCB instead of directly loading from
* fpu_initialstate, to ignite the XSAVEOPT
* tracking engine.
*/
bcopy(fpu_initialstate, pcb->pcb_save,
cpu_max_ext_state_size);
fpurestore(pcb->pcb_save);
if (pcb->pcb_initial_fpucw != __INITIAL_FPUCW__)
fldcw(pcb->pcb_initial_fpucw);
if (PCB_USER_FPU(pcb))
set_pcb_flags(pcb, PCB_FPUINITDONE |
PCB_USERFPUINITDONE);
else
set_pcb_flags(pcb, PCB_FPUINITDONE);
} else
fpurestore(pcb->pcb_save);
}
/*
* Device Not Available (DNA, #NM) exception handler.
*
@@ -622,7 +667,9 @@ fputrap_sse(void)
void
fpudna(void)
{
struct thread *td;
td = curthread;
/*
* This handler is entered with interrupts enabled, so context
* switches may occur before critical_enter() is executed. If
@@ -636,51 +683,40 @@ fpudna(void)
KASSERT((curpcb->pcb_flags & PCB_FPUNOSAVE) == 0,
("fpudna while in fpu_kern_enter(FPU_KERN_NOCTX)"));
if (PCPU_GET(fpcurthread) == curthread) {
printf("fpudna: fpcurthread == curthread\n");
stop_emulating();
critical_exit();
return;
}
if (PCPU_GET(fpcurthread) != NULL) {
panic("fpudna: fpcurthread = %p (%d), curthread = %p (%d)\n",
PCPU_GET(fpcurthread), PCPU_GET(fpcurthread)->td_tid,
curthread, curthread->td_tid);
}
stop_emulating();
/*
* Record new context early in case frstor causes a trap.
*/
PCPU_SET(fpcurthread, curthread);
fpu_clean_state();
if ((curpcb->pcb_flags & PCB_FPUINITDONE) == 0) {
if (__predict_false(PCPU_GET(fpcurthread) == td)) {
/*
* This is the first time this thread has used the FPU or
* the PCB doesn't contain a clean FPU state. Explicitly
* load an initial state.
*
* We prefer to restore the state from the actual save
* area in PCB instead of directly loading from
* fpu_initialstate, to ignite the XSAVEOPT
* tracking engine.
* Some virtual machines seems to set %cr0.TS at
* arbitrary moments. Silently clear the TS bit
* regardless of the eager/lazy FPU context switch
* mode.
*/
bcopy(fpu_initialstate, curpcb->pcb_save,
cpu_max_ext_state_size);
fpurestore(curpcb->pcb_save);
if (curpcb->pcb_initial_fpucw != __INITIAL_FPUCW__)
fldcw(curpcb->pcb_initial_fpucw);
if (PCB_USER_FPU(curpcb))
set_pcb_flags(curpcb,
PCB_FPUINITDONE | PCB_USERFPUINITDONE);
else
set_pcb_flags(curpcb, PCB_FPUINITDONE);
} else
fpurestore(curpcb->pcb_save);
stop_emulating();
} else {
if (__predict_false(PCPU_GET(fpcurthread) != NULL)) {
panic(
"fpudna: fpcurthread = %p (%d), curthread = %p (%d)\n",
PCPU_GET(fpcurthread),
PCPU_GET(fpcurthread)->td_tid, td, td->td_tid);
}
restore_fpu_curthread(td);
}
critical_exit();
}
void fpu_activate_sw(struct thread *td); /* Called from the context switch */
void
fpu_activate_sw(struct thread *td)
{
if (lazy_fpu_switch || (td->td_pflags & TDP_KTHREAD) != 0 ||
!PCB_USER_FPU(td->td_pcb)) {
PCPU_SET(fpcurthread, NULL);
start_emulating();
} else if (PCPU_GET(fpcurthread) != td) {
restore_fpu_curthread(td);
}
}
void
fpudrop(void)
{
+1 -1
View File
@@ -44,7 +44,7 @@
TYPE="FreeBSD"
REVISION="11.2"
BRANCH="BETA3"
BRANCH="RELEASE"
if [ -n "${BRANCH_OVERRIDE}" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
+1
View File
@@ -162,6 +162,7 @@ enum {
/* port flags */
HAS_TRACEQ = (1 << 3),
FIXED_IFMEDIA = (1 << 4), /* ifmedia list doesn't change. */
/* VI flags */
DOOMED = (1 << 0),
+2 -2
View File
@@ -413,12 +413,12 @@ struct link_config {
unsigned char requested_aneg; /* link aneg user has requested */
unsigned char requested_fc; /* flow control user has requested */
unsigned char requested_fec; /* FEC user has requested */
unsigned int requested_speed; /* speed user has requested */
unsigned int requested_speed; /* speed user has requested (Mbps) */
unsigned short supported; /* link capabilities */
unsigned short advertising; /* advertised capabilities */
unsigned short lp_advertising; /* peer advertised capabilities */
unsigned int speed; /* actual link speed */
unsigned int speed; /* actual link speed (Mbps) */
unsigned char fc; /* actual link flow control */
unsigned char fec; /* actual FEC */
unsigned char link_ok; /* link up? */
+53 -9
View File
@@ -3725,21 +3725,24 @@ int t4_link_l1cfg(struct adapter *adap, unsigned int mbox, unsigned int port,
lc->requested_aneg == AUTONEG_DISABLE) {
aneg = 0;
switch (lc->requested_speed) {
case 100:
case 100000:
speed = FW_PORT_CAP_SPEED_100G;
break;
case 40:
case 40000:
speed = FW_PORT_CAP_SPEED_40G;
break;
case 25:
case 25000:
speed = FW_PORT_CAP_SPEED_25G;
break;
case 10:
case 10000:
speed = FW_PORT_CAP_SPEED_10G;
break;
case 1:
case 1000:
speed = FW_PORT_CAP_SPEED_1G;
break;
case 100:
speed = FW_PORT_CAP_SPEED_100M;
break;
default:
return -EINVAL;
break;
@@ -7713,9 +7716,9 @@ static void handle_port_info(struct port_info *pi, const struct fw_port_info *p)
fec = 0;
if (lc->advertising & FW_PORT_CAP_FEC_RS)
fec |= FEC_RS;
if (lc->advertising & FW_PORT_CAP_FEC_BASER_RS)
fec |= FEC_BASER_RS;
fec = FEC_RS;
else if (lc->advertising & FW_PORT_CAP_FEC_BASER_RS)
fec = FEC_BASER_RS;
lc->fec = fec;
}
@@ -7776,14 +7779,16 @@ int t4_handle_fw_rpl(struct adapter *adap, const __be64 *rpl)
}
lc = &pi->link_cfg;
PORT_LOCK(pi);
old_lc = &pi->old_link_cfg;
old_ptype = pi->port_type;
old_mtype = pi->mod_type;
handle_port_info(pi, &p->u.info);
PORT_UNLOCK(pi);
if (old_ptype != pi->port_type || old_mtype != pi->mod_type) {
t4_os_portmod_changed(pi);
}
PORT_LOCK(pi);
if (old_lc->link_ok != lc->link_ok ||
old_lc->speed != lc->speed ||
old_lc->fec != lc->fec ||
@@ -7791,6 +7796,7 @@ int t4_handle_fw_rpl(struct adapter *adap, const __be64 *rpl)
t4_os_link_changed(pi);
*old_lc = *lc;
}
PORT_UNLOCK(pi);
} else {
CH_WARN_RATELIMIT(adap, "Unknown firmware reply %d\n", opcode);
return -EINVAL;
@@ -7903,6 +7909,44 @@ int t4_get_flash_params(struct adapter *adapter)
break;
}
case 0x9d: { /* ISSI -- Integrated Silicon Solution, Inc. */
/*
* This Density -> Size decoding table is taken from ISSI
* Data Sheets.
*/
density = (flashid >> 16) & 0xff;
switch (density) {
case 0x16: size = 1 << 25; break; /* 32MB */
case 0x17: size = 1 << 26; break; /* 64MB */
default:
CH_ERR(adapter, "ISSI Flash Part has bad size, "
"ID = %#x, Density code = %#x\n",
flashid, density);
return -EINVAL;
}
break;
}
case 0xc2: { /* Macronix */
/*
* This Density -> Size decoding table is taken from Macronix
* Data Sheets.
*/
density = (flashid >> 16) & 0xff;
switch (density) {
case 0x17: size = 1 << 23; break; /* 8MB */
case 0x18: size = 1 << 24; break; /* 16MB */
default:
CH_ERR(adapter, "Macronix Flash Part has bad size, "
"ID = %#x, Density code = %#x\n",
flashid, density);
return -EINVAL;
}
break;
}
case 0xef: { /* Winbond */
/*
* This Density -> Size decoding table is taken from Winbond
+424 -269
View File
@@ -376,9 +376,10 @@ int t4_intr_types = INTR_MSIX | INTR_MSI | INTR_INTX;
TUNABLE_INT("hw.cxgbe.interrupt_types", &t4_intr_types);
/*
* Configuration file.
* Configuration file. All the _CF names here are special.
*/
#define DEFAULT_CF "default"
#define BUILTIN_CF "built-in"
#define FLASH_CF "flash"
#define UWIRE_CF "uwire"
#define FPGA_CF "fpga"
@@ -528,6 +529,7 @@ static int set_params__post_init(struct adapter *);
static void t4_set_desc(struct adapter *);
static void build_medialist(struct port_info *, struct ifmedia *);
static void init_l1cfg(struct port_info *);
static int apply_l1cfg(struct port_info *);
static int cxgbe_init_synchronized(struct vi_info *);
static int cxgbe_uninit_synchronized(struct vi_info *);
static void quiesce_txq(struct adapter *, struct sge_txq *);
@@ -659,16 +661,10 @@ struct {
{0x5412, "Chelsio T560-CR"}, /* 1 x 40G, 2 x 10G */
{0x5414, "Chelsio T580-LP-SO-CR"}, /* 2 x 40G, nomem */
{0x5415, "Chelsio T502-BT"}, /* 2 x 1G */
#ifdef notyet
{0x5404, "Chelsio T520-BCH"},
{0x5405, "Chelsio T540-BCH"},
{0x5406, "Chelsio T540-CH"},
{0x5408, "Chelsio T520-CX"},
{0x540b, "Chelsio B520-SR"},
{0x540c, "Chelsio B504-BT"},
{0x540f, "Chelsio Amsterdam"},
{0x5413, "Chelsio T580-CHR"},
#endif
{0x5418, "Chelsio T540-BT"}, /* 4 x 10GBaseT */
{0x5419, "Chelsio T540-LP-BT"}, /* 4 x 10GBaseT */
{0x541a, "Chelsio T540-SO-BT"}, /* 4 x 10GBaseT, nomem */
{0x541b, "Chelsio T540-SO-CR"}, /* 4 x 10G, nomem */
}, t6_pciids[] = {
{0xc006, "Chelsio Terminator 6 FPGA"}, /* T6 PE10K6 FPGA (PF0) */
{0x6400, "Chelsio T6-DBG-25"}, /* 2 x 10/25G, debug */
@@ -688,9 +684,14 @@ struct {
{0x6415, "Chelsio T6201-BT"}, /* 2 x 1000BASE-T */
/* Custom */
{0x6480, "Chelsio T6225 80"},
{0x6481, "Chelsio T62100 81"},
{0x6484, "Chelsio T62100 84"},
{0x6480, "Custom T6225-CR"},
{0x6481, "Custom T62100-CR"},
{0x6482, "Custom T6225-CR"},
{0x6483, "Custom T62100-CR"},
{0x6484, "Custom T64100-CR"},
{0x6485, "Custom T6240-SO"},
{0x6486, "Custom T6225-SO-CR"},
{0x6487, "Custom T6225-CR"},
};
#ifdef TCP_OFFLOAD
@@ -2008,14 +2009,205 @@ cxgbe_get_counter(struct ifnet *ifp, ift_counter c)
}
}
/*
* The kernel picks a media from the list we had provided so we do not have to
* validate the request.
*/
static int
cxgbe_media_change(struct ifnet *ifp)
{
struct vi_info *vi = ifp->if_softc;
struct port_info *pi = vi->pi;
struct ifmedia *ifm = &pi->media;
struct link_config *lc = &pi->link_cfg;
struct adapter *sc = pi->adapter;
int rc;
device_printf(vi->dev, "%s unimplemented.\n", __func__);
rc = begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4mec");
if (rc != 0)
return (rc);
PORT_LOCK(pi);
if (IFM_SUBTYPE(ifm->ifm_media) == IFM_AUTO) {
MPASS(lc->supported & FW_PORT_CAP_ANEG);
lc->requested_aneg = AUTONEG_ENABLE;
} else {
lc->requested_aneg = AUTONEG_DISABLE;
lc->requested_speed =
ifmedia_baudrate(ifm->ifm_media) / 1000000;
lc->requested_fc = 0;
if (IFM_OPTIONS(ifm->ifm_media) & IFM_ETH_RXPAUSE)
lc->requested_fc |= PAUSE_RX;
if (IFM_OPTIONS(ifm->ifm_media) & IFM_ETH_TXPAUSE)
lc->requested_fc |= PAUSE_TX;
}
if (pi->up_vis > 0)
rc = apply_l1cfg(pi);
PORT_UNLOCK(pi);
end_synchronized_op(sc, 0);
return (rc);
}
return (EOPNOTSUPP);
/*
* Mbps to FW_PORT_CAP_SPEED_* bit.
*/
static uint16_t
speed_to_fwspeed(int speed)
{
switch (speed) {
case 100000:
return (FW_PORT_CAP_SPEED_100G);
case 40000:
return (FW_PORT_CAP_SPEED_40G);
case 25000:
return (FW_PORT_CAP_SPEED_25G);
case 10000:
return (FW_PORT_CAP_SPEED_10G);
case 1000:
return (FW_PORT_CAP_SPEED_1G);
case 100:
return (FW_PORT_CAP_SPEED_100M);
}
return (0);
}
/*
* Base media word (without ETHER, pause, link active, etc.) for the port at the
* given speed.
*/
static int
port_mword(struct port_info *pi, uint16_t speed)
{
MPASS(speed & M_FW_PORT_CAP_SPEED);
MPASS(powerof2(speed));
switch(pi->port_type) {
case FW_PORT_TYPE_BT_SGMII:
case FW_PORT_TYPE_BT_XFI:
case FW_PORT_TYPE_BT_XAUI:
/* BaseT */
switch (speed) {
case FW_PORT_CAP_SPEED_100M:
return (IFM_100_T);
case FW_PORT_CAP_SPEED_1G:
return (IFM_1000_T);
case FW_PORT_CAP_SPEED_10G:
return (IFM_10G_T);
}
break;
case FW_PORT_TYPE_KX4:
if (speed == FW_PORT_CAP_SPEED_10G)
return (IFM_10G_KX4);
break;
case FW_PORT_TYPE_CX4:
if (speed == FW_PORT_CAP_SPEED_10G)
return (IFM_10G_CX4);
break;
case FW_PORT_TYPE_KX:
if (speed == FW_PORT_CAP_SPEED_1G)
return (IFM_1000_KX);
break;
case FW_PORT_TYPE_KR:
case FW_PORT_TYPE_BP_AP:
case FW_PORT_TYPE_BP4_AP:
case FW_PORT_TYPE_BP40_BA:
case FW_PORT_TYPE_KR4_100G:
case FW_PORT_TYPE_KR_SFP28:
case FW_PORT_TYPE_KR_XLAUI:
switch (speed) {
case FW_PORT_CAP_SPEED_1G:
return (IFM_1000_KX);
case FW_PORT_CAP_SPEED_10G:
return (IFM_10G_KR);
case FW_PORT_CAP_SPEED_25G:
return (IFM_25G_KR);
case FW_PORT_CAP_SPEED_40G:
return (IFM_40G_KR4);
case FW_PORT_CAP_SPEED_100G:
return (IFM_100G_KR4);
}
break;
case FW_PORT_TYPE_FIBER_XFI:
case FW_PORT_TYPE_FIBER_XAUI:
case FW_PORT_TYPE_SFP:
case FW_PORT_TYPE_QSFP_10G:
case FW_PORT_TYPE_QSA:
case FW_PORT_TYPE_QSFP:
case FW_PORT_TYPE_CR4_QSFP:
case FW_PORT_TYPE_CR_QSFP:
case FW_PORT_TYPE_CR2_QSFP:
case FW_PORT_TYPE_SFP28:
/* Pluggable transceiver */
switch (pi->mod_type) {
case FW_PORT_MOD_TYPE_LR:
switch (speed) {
case FW_PORT_CAP_SPEED_1G:
return (IFM_1000_LX);
case FW_PORT_CAP_SPEED_10G:
return (IFM_10G_LR);
case FW_PORT_CAP_SPEED_25G:
return (IFM_25G_LR);
case FW_PORT_CAP_SPEED_40G:
return (IFM_40G_LR4);
case FW_PORT_CAP_SPEED_100G:
return (IFM_100G_LR4);
}
break;
case FW_PORT_MOD_TYPE_SR:
switch (speed) {
case FW_PORT_CAP_SPEED_1G:
return (IFM_1000_SX);
case FW_PORT_CAP_SPEED_10G:
return (IFM_10G_SR);
case FW_PORT_CAP_SPEED_25G:
return (IFM_25G_SR);
case FW_PORT_CAP_SPEED_40G:
return (IFM_40G_SR4);
case FW_PORT_CAP_SPEED_100G:
return (IFM_100G_SR4);
}
break;
case FW_PORT_MOD_TYPE_ER:
if (speed == FW_PORT_CAP_SPEED_10G)
return (IFM_10G_ER);
break;
case FW_PORT_MOD_TYPE_TWINAX_PASSIVE:
case FW_PORT_MOD_TYPE_TWINAX_ACTIVE:
switch (speed) {
case FW_PORT_CAP_SPEED_1G:
return (IFM_1000_CX);
case FW_PORT_CAP_SPEED_10G:
return (IFM_10G_TWINAX);
case FW_PORT_CAP_SPEED_25G:
return (IFM_25G_CR);
case FW_PORT_CAP_SPEED_40G:
return (IFM_40G_CR4);
case FW_PORT_CAP_SPEED_100G:
return (IFM_100G_CR4);
}
break;
case FW_PORT_MOD_TYPE_LRM:
if (speed == FW_PORT_CAP_SPEED_10G)
return (IFM_10G_LRM);
break;
case FW_PORT_MOD_TYPE_NA:
MPASS(0); /* Not pluggable? */
/* fall throough */
case FW_PORT_MOD_TYPE_ERROR:
case FW_PORT_MOD_TYPE_UNKNOWN:
case FW_PORT_MOD_TYPE_NOTSUPPORTED:
break;
case FW_PORT_MOD_TYPE_NONE:
return (IFM_NONE);
}
break;
case FW_PORT_TYPE_NONE:
return (IFM_NONE);
}
return (IFM_UNKNOWN);
}
static void
@@ -2023,63 +2215,42 @@ cxgbe_media_status(struct ifnet *ifp, struct ifmediareq *ifmr)
{
struct vi_info *vi = ifp->if_softc;
struct port_info *pi = vi->pi;
struct ifmedia_entry *cur;
struct adapter *sc = pi->adapter;
struct link_config *lc = &pi->link_cfg;
/*
* If all the interfaces are administratively down the firmware does not
* report transceiver changes. Refresh port info here so that ifconfig
* displays accurate information at all times.
*/
if (begin_synchronized_op(pi->adapter, NULL, SLEEP_OK | INTR_OK,
"t4med") == 0) {
PORT_LOCK(pi);
if (pi->up_vis == 0) {
t4_update_port_info(pi);
build_medialist(pi, &pi->media);
}
PORT_UNLOCK(pi);
end_synchronized_op(pi->adapter, 0);
if (begin_synchronized_op(sc, NULL, SLEEP_OK | INTR_OK, "t4med") != 0)
return;
PORT_LOCK(pi);
if (pi->up_vis == 0) {
/*
* If all the interfaces are administratively down the firmware
* does not report transceiver changes. Refresh port info here
* so that ifconfig displays accurate ifmedia at all times.
* This is the only reason we have a synchronized op in this
* function. Just PORT_LOCK would have been enough otherwise.
*/
t4_update_port_info(pi);
build_medialist(pi, &pi->media);
}
/* ifm_status */
ifmr->ifm_status = IFM_AVALID;
if (lc->link_ok == 0)
return;
goto done;
ifmr->ifm_status |= IFM_ACTIVE;
/* ifm_active */
ifmr->ifm_active = IFM_ETHER | IFM_FDX;
ifmr->ifm_active &= ~(IFM_ETH_TXPAUSE | IFM_ETH_RXPAUSE);
if (lc->fc & PAUSE_RX)
ifmr->ifm_active |= IFM_ETH_RXPAUSE;
if (lc->fc & PAUSE_TX)
ifmr->ifm_active |= IFM_ETH_TXPAUSE;
/* active and current will differ iff current media is autoselect. */
cur = pi->media.ifm_cur;
if (cur != NULL && IFM_SUBTYPE(cur->ifm_media) != IFM_AUTO)
return;
ifmr->ifm_active = IFM_ETHER | IFM_FDX;
if (lc->fc & PAUSE_RX)
ifmr->ifm_active |= IFM_ETH_RXPAUSE;
if (lc->fc & PAUSE_TX)
ifmr->ifm_active |= IFM_ETH_TXPAUSE;
switch (lc->speed) {
case 10000:
ifmr->ifm_active |= IFM_10G_T;
break;
case 1000:
ifmr->ifm_active |= IFM_1000_T;
break;
case 100:
ifmr->ifm_active |= IFM_100_TX;
break;
case 10:
ifmr->ifm_active |= IFM_10_T;
break;
default:
device_printf(vi->dev, "link up but speed unknown (%u)\n",
lc->speed);
}
ifmr->ifm_active |= port_mword(pi, speed_to_fwspeed(lc->speed));
done:
PORT_UNLOCK(pi);
end_synchronized_op(sc, 0);
}
static int
@@ -3247,7 +3418,8 @@ partition_resources(struct adapter *sc, const struct firmware *default_cfg,
snprintf(sc->cfg_file, sizeof(sc->cfg_file), UWIRE_CF);
if (is_fpga(sc))
snprintf(sc->cfg_file, sizeof(sc->cfg_file), FPGA_CF);
}
} else if (strncmp(t4_cfg_file, BUILTIN_CF, sizeof(t4_cfg_file)) == 0)
goto use_built_in_config; /* go straight to config. */
/*
* We need to load another module if the profile is anything except
@@ -3358,8 +3530,31 @@ use_config_on_flash:
if (rc != 0) {
device_printf(sc->dev,
"failed to pre-process config file: %d "
"(mtype %d, moff 0x%x).\n", rc, mtype, moff);
goto done;
"(mtype %d, moff 0x%x). Will reset the firmware and retry "
"with the built-in configuration.\n", rc, mtype, moff);
rc = -t4_fw_reset(sc, sc->mbox, F_PIORSTMODE | F_PIORST);
if (rc != 0) {
device_printf(sc->dev,
"firmware reset failed: %d.\n", rc);
if (rc != ETIMEDOUT && rc != EIO) {
t4_fw_bye(sc, sc->mbox);
sc->flags &= ~FW_OK;
}
goto done;
}
snprintf(sc->cfg_file, sizeof(sc->cfg_file), "%s", "built-in");
use_built_in_config:
bzero(&caps, sizeof(caps));
caps.op_to_write = htobe32(V_FW_CMD_OP(FW_CAPS_CONFIG_CMD) |
F_FW_CMD_REQUEST | F_FW_CMD_READ);
caps.cfvalid_to_len16 = htobe32(FW_LEN16(caps));
rc = t4_wr_mbox(sc, sc->mbox, &caps, sizeof(caps), &caps);
if (rc != 0) {
device_printf(sc->dev,
"built-in configuration failed: %d.\n", rc);
goto done;
}
}
finicsum = be32toh(caps.finicsum);
@@ -3759,214 +3954,114 @@ t4_set_desc(struct adapter *sc)
device_set_desc_copy(sc->dev, buf);
}
static void
build_medialist(struct port_info *pi, struct ifmedia *media)
static inline void
ifmedia_add4(struct ifmedia *ifm, int m)
{
int m;
ifmedia_add(ifm, m, 0, NULL);
ifmedia_add(ifm, m | IFM_ETH_TXPAUSE, 0, NULL);
ifmedia_add(ifm, m | IFM_ETH_RXPAUSE, 0, NULL);
ifmedia_add(ifm, m | IFM_ETH_TXPAUSE | IFM_ETH_RXPAUSE, 0, NULL);
}
static void
set_current_media(struct port_info *pi, struct ifmedia *ifm)
{
struct link_config *lc;
int mword;
PORT_LOCK_ASSERT_OWNED(pi);
ifmedia_removeall(media);
/* Leave current media alone if it's already set to IFM_NONE. */
if (ifm->ifm_cur != NULL &&
IFM_SUBTYPE(ifm->ifm_cur->ifm_media) == IFM_NONE)
return;
lc = &pi->link_cfg;
if (lc->requested_aneg == AUTONEG_ENABLE &&
lc->supported & FW_PORT_CAP_ANEG) {
ifmedia_set(ifm, IFM_ETHER | IFM_AUTO);
return;
}
mword = IFM_ETHER | IFM_FDX;
if (lc->requested_fc & PAUSE_TX)
mword |= IFM_ETH_TXPAUSE;
if (lc->requested_fc & PAUSE_RX)
mword |= IFM_ETH_RXPAUSE;
mword |= port_mword(pi, speed_to_fwspeed(lc->requested_speed));
ifmedia_set(ifm, mword);
}
static void
build_medialist(struct port_info *pi, struct ifmedia *ifm)
{
uint16_t ss, speed;
int unknown, mword, bit;
struct link_config *lc;
PORT_LOCK_ASSERT_OWNED(pi);
if (pi->flags & FIXED_IFMEDIA)
return;
/*
* XXX: Would it be better to ifmedia_add all 4 combinations of pause
* settings for every speed instead of just txpause|rxpause? ifconfig
* media display looks much better if autoselect is the only case where
* ifm_current is different from ifm_active. If the user picks anything
* except txpause|rxpause the display is ugly.
* First setup all the requested_ fields so that they comply with what's
* supported by the port + transceiver. Note that this clobbers any
* user preferences set via sysctl_pause_settings or sysctl_autoneg.
*/
m = IFM_ETHER | IFM_FDX | IFM_ETH_TXPAUSE | IFM_ETH_RXPAUSE;
init_l1cfg(pi);
switch(pi->port_type) {
case FW_PORT_TYPE_BT_XFI:
case FW_PORT_TYPE_BT_XAUI:
ifmedia_add(media, m | IFM_10G_T, 0, NULL);
/* fall through */
case FW_PORT_TYPE_BT_SGMII:
ifmedia_add(media, m | IFM_1000_T, 0, NULL);
ifmedia_add(media, m | IFM_100_TX, 0, NULL);
ifmedia_add(media, IFM_ETHER | IFM_AUTO, 0, NULL);
ifmedia_set(media, IFM_ETHER | IFM_AUTO);
break;
case FW_PORT_TYPE_CX4:
ifmedia_add(media, m | IFM_10G_CX4, 0, NULL);
ifmedia_set(media, m | IFM_10G_CX4);
break;
case FW_PORT_TYPE_QSFP_10G:
case FW_PORT_TYPE_SFP:
case FW_PORT_TYPE_FIBER_XFI:
case FW_PORT_TYPE_FIBER_XAUI:
switch (pi->mod_type) {
case FW_PORT_MOD_TYPE_LR:
ifmedia_add(media, m | IFM_10G_LR, 0, NULL);
ifmedia_set(media, m | IFM_10G_LR);
break;
case FW_PORT_MOD_TYPE_SR:
ifmedia_add(media, m | IFM_10G_SR, 0, NULL);
ifmedia_set(media, m | IFM_10G_SR);
break;
case FW_PORT_MOD_TYPE_LRM:
ifmedia_add(media, m | IFM_10G_LRM, 0, NULL);
ifmedia_set(media, m | IFM_10G_LRM);
break;
case FW_PORT_MOD_TYPE_TWINAX_PASSIVE:
case FW_PORT_MOD_TYPE_TWINAX_ACTIVE:
ifmedia_add(media, m | IFM_10G_TWINAX, 0, NULL);
ifmedia_set(media, m | IFM_10G_TWINAX);
break;
case FW_PORT_MOD_TYPE_NONE:
m &= ~IFM_FDX;
ifmedia_add(media, m | IFM_NONE, 0, NULL);
ifmedia_set(media, m | IFM_NONE);
break;
case FW_PORT_MOD_TYPE_NA:
case FW_PORT_MOD_TYPE_ER:
default:
device_printf(pi->dev,
"unknown port_type (%d), mod_type (%d)\n",
pi->port_type, pi->mod_type);
ifmedia_add(media, m | IFM_UNKNOWN, 0, NULL);
ifmedia_set(media, m | IFM_UNKNOWN);
break;
}
break;
case FW_PORT_TYPE_CR_QSFP:
case FW_PORT_TYPE_SFP28:
case FW_PORT_TYPE_KR_SFP28:
switch (pi->mod_type) {
case FW_PORT_MOD_TYPE_SR:
ifmedia_add(media, m | IFM_25G_SR, 0, NULL);
ifmedia_set(media, m | IFM_25G_SR);
break;
case FW_PORT_MOD_TYPE_TWINAX_PASSIVE:
case FW_PORT_MOD_TYPE_TWINAX_ACTIVE:
ifmedia_add(media, m | IFM_25G_CR, 0, NULL);
ifmedia_set(media, m | IFM_25G_CR);
break;
case FW_PORT_MOD_TYPE_NONE:
m &= ~IFM_FDX;
ifmedia_add(media, m | IFM_NONE, 0, NULL);
ifmedia_set(media, m | IFM_NONE);
break;
default:
device_printf(pi->dev,
"unknown port_type (%d), mod_type (%d)\n",
pi->port_type, pi->mod_type);
ifmedia_add(media, m | IFM_UNKNOWN, 0, NULL);
ifmedia_set(media, m | IFM_UNKNOWN);
break;
}
break;
case FW_PORT_TYPE_QSFP:
switch (pi->mod_type) {
case FW_PORT_MOD_TYPE_LR:
ifmedia_add(media, m | IFM_40G_LR4, 0, NULL);
ifmedia_set(media, m | IFM_40G_LR4);
break;
case FW_PORT_MOD_TYPE_SR:
ifmedia_add(media, m | IFM_40G_SR4, 0, NULL);
ifmedia_set(media, m | IFM_40G_SR4);
break;
case FW_PORT_MOD_TYPE_TWINAX_PASSIVE:
case FW_PORT_MOD_TYPE_TWINAX_ACTIVE:
ifmedia_add(media, m | IFM_40G_CR4, 0, NULL);
ifmedia_set(media, m | IFM_40G_CR4);
break;
case FW_PORT_MOD_TYPE_NONE:
m &= ~IFM_FDX;
ifmedia_add(media, m | IFM_NONE, 0, NULL);
ifmedia_set(media, m | IFM_NONE);
break;
default:
device_printf(pi->dev,
"unknown port_type (%d), mod_type (%d)\n",
pi->port_type, pi->mod_type);
ifmedia_add(media, m | IFM_UNKNOWN, 0, NULL);
ifmedia_set(media, m | IFM_UNKNOWN);
break;
}
break;
case FW_PORT_TYPE_KR4_100G:
case FW_PORT_TYPE_CR4_QSFP:
switch (pi->mod_type) {
case FW_PORT_MOD_TYPE_LR:
ifmedia_add(media, m | IFM_100G_LR4, 0, NULL);
ifmedia_set(media, m | IFM_100G_LR4);
break;
case FW_PORT_MOD_TYPE_SR:
ifmedia_add(media, m | IFM_100G_SR4, 0, NULL);
ifmedia_set(media, m | IFM_100G_SR4);
break;
case FW_PORT_MOD_TYPE_TWINAX_PASSIVE:
case FW_PORT_MOD_TYPE_TWINAX_ACTIVE:
ifmedia_add(media, m | IFM_100G_CR4, 0, NULL);
ifmedia_set(media, m | IFM_100G_CR4);
break;
case FW_PORT_MOD_TYPE_NONE:
m &= ~IFM_FDX;
ifmedia_add(media, m | IFM_NONE, 0, NULL);
ifmedia_set(media, m | IFM_NONE);
break;
default:
device_printf(pi->dev,
"unknown port_type (%d), mod_type (%d)\n",
pi->port_type, pi->mod_type);
ifmedia_add(media, m | IFM_UNKNOWN, 0, NULL);
ifmedia_set(media, m | IFM_UNKNOWN);
break;
}
break;
default:
device_printf(pi->dev,
"unknown port_type (%d), mod_type (%d)\n", pi->port_type,
pi->mod_type);
ifmedia_add(media, m | IFM_UNKNOWN, 0, NULL);
ifmedia_set(media, m | IFM_UNKNOWN);
break;
/*
* Now (re)build the ifmedia list.
*/
ifmedia_removeall(ifm);
lc = &pi->link_cfg;
ss = G_FW_PORT_CAP_SPEED(lc->supported); /* Supported Speeds */
if (__predict_false(ss == 0)) { /* not supposed to happen. */
MPASS(ss != 0);
no_media:
MPASS(LIST_EMPTY(&ifm->ifm_list));
ifmedia_add(ifm, IFM_ETHER | IFM_NONE, 0, NULL);
ifmedia_set(ifm, IFM_ETHER | IFM_NONE);
return;
}
unknown = 0;
for (bit = 0; bit < fls(ss); bit++) {
speed = 1 << bit;
MPASS(speed & M_FW_PORT_CAP_SPEED);
if (ss & speed) {
mword = port_mword(pi, speed);
if (mword == IFM_NONE) {
goto no_media;
} else if (mword == IFM_UNKNOWN)
unknown++;
else
ifmedia_add4(ifm, IFM_ETHER | IFM_FDX | mword);
}
}
if (unknown > 0) /* Add one unknown for all unknown media types. */
ifmedia_add4(ifm, IFM_ETHER | IFM_FDX | IFM_UNKNOWN);
if (lc->supported & FW_PORT_CAP_ANEG)
ifmedia_add(ifm, IFM_ETHER | IFM_AUTO, 0, NULL);
set_current_media(pi, ifm);
}
/*
* Update all the requested_* fields in the link config and then send a mailbox
* command to apply the settings.
* Update all the requested_* fields in the link config to something valid (and
* reasonable).
*/
static void
init_l1cfg(struct port_info *pi)
{
struct adapter *sc = pi->adapter;
struct link_config *lc = &pi->link_cfg;
int rc;
ASSERT_SYNCHRONIZED_OP(sc);
PORT_LOCK_ASSERT_OWNED(pi);
/* Gbps -> Mbps */
lc->requested_speed = port_top_speed(pi) * 1000;
lc->requested_speed = port_top_speed(pi); /* in Gbps */
if (t4_autoneg != 0 && lc->supported & FW_PORT_CAP_ANEG) {
lc->requested_aneg = AUTONEG_ENABLE;
} else {
@@ -3976,18 +4071,58 @@ init_l1cfg(struct port_info *pi)
lc->requested_fc = t4_pause_settings & (PAUSE_TX | PAUSE_RX);
if (t4_fec != -1) {
lc->requested_fec = t4_fec & (FEC_RS | FEC_BASER_RS |
FEC_RESERVED);
if (t4_fec & FEC_RS && lc->supported & FW_PORT_CAP_FEC_RS) {
lc->requested_fec = FEC_RS;
} else if (t4_fec & FEC_BASER_RS &&
lc->supported & FW_PORT_CAP_FEC_BASER_RS) {
lc->requested_fec = FEC_BASER_RS;
} else {
lc->requested_fec = 0;
}
} else {
/* Use the suggested value provided by the firmware in acaps */
if (lc->advertising & FW_PORT_CAP_FEC_RS)
if (lc->advertising & FW_PORT_CAP_FEC_RS &&
lc->supported & FW_PORT_CAP_FEC_RS) {
lc->requested_fec = FEC_RS;
else if (lc->advertising & FW_PORT_CAP_FEC_BASER_RS)
} else if (lc->advertising & FW_PORT_CAP_FEC_BASER_RS &&
lc->supported & FW_PORT_CAP_FEC_BASER_RS) {
lc->requested_fec = FEC_BASER_RS;
else
} else {
lc->requested_fec = 0;
}
}
}
/*
* Apply the settings in requested_* to the hardware. The parameters are
* expected to be sane.
*/
static int
apply_l1cfg(struct port_info *pi)
{
struct adapter *sc = pi->adapter;
struct link_config *lc = &pi->link_cfg;
int rc;
#ifdef INVARIANTS
uint16_t fwspeed;
ASSERT_SYNCHRONIZED_OP(sc);
PORT_LOCK_ASSERT_OWNED(pi);
if (lc->requested_aneg == AUTONEG_ENABLE)
MPASS(lc->supported & FW_PORT_CAP_ANEG);
if (lc->requested_fc & PAUSE_TX)
MPASS(lc->supported & FW_PORT_CAP_FC_TX);
if (lc->requested_fc & PAUSE_RX)
MPASS(lc->supported & FW_PORT_CAP_FC_RX);
if (lc->requested_fec == FEC_RS)
MPASS(lc->supported & FW_PORT_CAP_FEC_RS);
if (lc->requested_fec == FEC_BASER_RS)
MPASS(lc->supported & FW_PORT_CAP_FEC_BASER_RS);
fwspeed = speed_to_fwspeed(lc->requested_speed);
MPASS(fwspeed != 0);
MPASS(lc->supported & fwspeed);
#endif
rc = -t4_link_l1cfg(sc, sc->mbox, pi->tx_chan, lc);
if (rc != 0) {
device_printf(pi->dev, "l1cfg failed: %d\n", rc);
@@ -3995,6 +4130,7 @@ init_l1cfg(struct port_info *pi)
lc->fc = lc->requested_fc;
lc->fec = lc->requested_fec;
}
return (rc);
}
#define FW_MAC_EXACT_CHUNK 7
@@ -4279,7 +4415,7 @@ cxgbe_init_synchronized(struct vi_info *vi)
if (pi->up_vis++ == 0) {
t4_update_port_info(pi);
build_medialist(pi, &pi->media);
init_l1cfg(pi);
apply_l1cfg(pi);
}
ifp->if_drv_flags |= IFF_DRV_RUNNING;
@@ -4354,13 +4490,13 @@ cxgbe_uninit_synchronized(struct vi_info *vi)
PORT_UNLOCK(pi);
return (0);
}
PORT_UNLOCK(pi);
pi->link_cfg.link_ok = 0;
pi->link_cfg.speed = 0;
pi->link_cfg.link_down_rc = 255;
t4_os_link_changed(pi);
pi->old_link_cfg = pi->link_cfg;
PORT_UNLOCK(pi);
return (0);
}
@@ -6083,14 +6219,17 @@ sysctl_pause_settings(SYSCTL_HANDLER_ARGS)
"t4PAUSE");
if (rc)
return (rc);
PORT_LOCK(pi);
if ((lc->requested_fc & (PAUSE_TX | PAUSE_RX)) != n) {
lc->requested_fc &= ~(PAUSE_TX | PAUSE_RX);
lc->requested_fc |= n;
rc = -t4_link_l1cfg(sc, sc->mbox, pi->tx_chan, lc);
if (rc == 0) {
lc->fc = lc->requested_fc;
set_current_media(pi, &pi->media);
}
}
PORT_UNLOCK(pi);
end_synchronized_op(sc, 0);
}
@@ -6138,11 +6277,14 @@ sysctl_fec(SYSCTL_HANDLER_ARGS)
n = s[0] - '0';
if (n & ~M_FW_PORT_CAP_FEC)
return (EINVAL); /* some other bit is set too */
if (!powerof2(n))
return (EINVAL); /* one bit can be set at most */
rc = begin_synchronized_op(sc, &pi->vi[0], SLEEP_OK | INTR_OK,
"t4fec");
if (rc)
return (rc);
PORT_LOCK(pi);
if ((lc->requested_fec & M_FW_PORT_CAP_FEC) != n) {
lc->requested_fec = n &
G_FW_PORT_CAP_FEC(lc->supported);
@@ -6151,6 +6293,7 @@ sysctl_fec(SYSCTL_HANDLER_ARGS)
lc->fec = lc->requested_fec;
}
}
PORT_UNLOCK(pi);
end_synchronized_op(sc, 0);
}
@@ -6172,27 +6315,35 @@ sysctl_autoneg(SYSCTL_HANDLER_ARGS)
rc = sysctl_handle_int(oidp, &val, 0, req);
if (rc != 0 || req->newptr == NULL)
return (rc);
if ((lc->supported & FW_PORT_CAP_ANEG) == 0)
return (ENOTSUP);
if (val == 0)
val = AUTONEG_DISABLE;
else if (val == 1)
val = AUTONEG_ENABLE;
else
return (EINVAL);
if (lc->requested_aneg == val)
return (0); /* no change */
rc = begin_synchronized_op(sc, &pi->vi[0], SLEEP_OK | INTR_OK,
"t4aneg");
if (rc)
return (rc);
PORT_LOCK(pi);
if ((lc->supported & FW_PORT_CAP_ANEG) == 0) {
rc = ENOTSUP;
goto done;
}
if (lc->requested_aneg == val) {
rc = 0; /* no change, do nothing. */
goto done;
}
old = lc->requested_aneg;
lc->requested_aneg = val;
rc = -t4_link_l1cfg(sc, sc->mbox, pi->tx_chan, lc);
if (rc != 0)
lc->requested_aneg = old;
else
set_current_media(pi, &pi->media);
done:
PORT_UNLOCK(pi);
end_synchronized_op(sc, 0);
return (rc);
}
@@ -9395,12 +9546,14 @@ t4_os_portmod_changed(struct port_info *pi)
NULL, "LR", "SR", "ER", "TWINAX", "active TWINAX", "LRM"
};
PORT_LOCK(pi);
build_medialist(pi, &pi->media);
PORT_UNLOCK(pi);
MPASS((pi->flags & FIXED_IFMEDIA) == 0);
vi = &pi->vi[0];
if (begin_synchronized_op(sc, vi, HOLD_LOCK, "t4mod") == 0) {
init_l1cfg(pi);
PORT_LOCK(pi);
build_medialist(pi, &pi->media);
apply_l1cfg(pi);
PORT_UNLOCK(pi);
end_synchronized_op(sc, LOCK_HELD);
}
@@ -9428,6 +9581,8 @@ t4_os_link_changed(struct port_info *pi)
struct link_config *lc;
int v;
PORT_LOCK_ASSERT_OWNED(pi);
for_each_vi(pi, v, vi) {
ifp = vi->ifp;
if (ifp == NULL)
+2 -2
View File
@@ -2373,7 +2373,7 @@ static void
get_nv_wwpn(ocs_t *ocs, char *name, ocs_textbuf_t *textbuf)
{
char result_string[24];
static ocs_mgmt_get_nvparms_result_t result;
ocs_mgmt_get_nvparms_result_t result;
ocs_sem_init(&(result.semaphore), 0, "get_nv_wwpn");
@@ -2411,7 +2411,7 @@ static void
get_nv_wwnn(ocs_t *ocs, char *name, ocs_textbuf_t *textbuf)
{
char result_string[24];
static ocs_mgmt_get_nvparms_result_t result;
ocs_mgmt_get_nvparms_result_t result;
ocs_sem_init(&(result.semaphore), 0, "get_nv_wwnn");
+6
View File
@@ -296,6 +296,12 @@ sw1:
cpu_switch_load_gs:
mov PCB_GS(%edx),%gs
pushl %edx
pushl PCPU(CURTHREAD)
call npxswitch
popl %edx
popl %edx
/* Test if debug registers should be restored. */
testl $PCB_DBREGS,PCB_FLAGS(%edx)
jz 1f
+70 -43
View File
@@ -191,6 +191,11 @@ int hw_float;
SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD,
&hw_float, 0, "Floating point instructions executed in hardware");
int lazy_fpu_switch = 0;
SYSCTL_INT(_hw, OID_AUTO, lazy_fpu_switch, CTLFLAG_RWTUN | CTLFLAG_NOFETCH,
&lazy_fpu_switch, 0,
"Lazily load FPU context after context switch");
int use_xsave;
uint64_t xsave_mask;
static uma_zone_t fpu_save_area_zone;
@@ -327,6 +332,7 @@ npxinit_bsp1(void)
u_int cp[4];
uint64_t xsave_mask_user;
TUNABLE_INT_FETCH("hw.lazy_fpu_switch", &lazy_fpu_switch);
if (cpu_fxsr && (cpu_feature2 & CPUID2_XSAVE) != 0) {
use_xsave = 1;
TUNABLE_INT_FETCH("hw.use_xsave", &use_xsave);
@@ -785,47 +791,20 @@ npxtrap_sse(void)
return (fpetable[(mxcsr & (~mxcsr >> 7)) & 0x3f]);
}
/*
* Implement device not available (DNA) exception
*
* It would be better to switch FP context here (if curthread != fpcurthread)
* and not necessarily for every context switch, but it is too hard to
* access foreign pcb's.
*/
static int err_count = 0;
int
npxdna(void)
static void
restore_npx_curthread(struct thread *td, struct pcb *pcb)
{
if (!hw_float)
return (0);
critical_enter();
if (PCPU_GET(fpcurthread) == curthread) {
printf("npxdna: fpcurthread == curthread %d times\n",
++err_count);
stop_emulating();
critical_exit();
return (1);
}
if (PCPU_GET(fpcurthread) != NULL) {
printf("npxdna: fpcurthread = %p (%d), curthread = %p (%d)\n",
PCPU_GET(fpcurthread),
PCPU_GET(fpcurthread)->td_proc->p_pid,
curthread, curthread->td_proc->p_pid);
panic("npxdna");
}
stop_emulating();
/*
* Record new context early in case frstor causes a trap.
*/
PCPU_SET(fpcurthread, curthread);
PCPU_SET(fpcurthread, td);
stop_emulating();
if (cpu_fxsr)
fpu_clean_state();
if ((curpcb->pcb_flags & PCB_NPXINITDONE) == 0) {
if ((pcb->pcb_flags & PCB_NPXINITDONE) == 0) {
/*
* This is the first time this thread has used the FPU or
* the PCB doesn't contain a clean FPU state. Explicitly
@@ -836,18 +815,54 @@ npxdna(void)
* npx_initialstate, to ignite the XSAVEOPT
* tracking engine.
*/
bcopy(npx_initialstate, curpcb->pcb_save, cpu_max_ext_state_size);
fpurstor(curpcb->pcb_save);
if (curpcb->pcb_initial_npxcw != __INITIAL_NPXCW__)
fldcw(curpcb->pcb_initial_npxcw);
curpcb->pcb_flags |= PCB_NPXINITDONE;
if (PCB_USER_FPU(curpcb))
curpcb->pcb_flags |= PCB_NPXUSERINITDONE;
bcopy(npx_initialstate, pcb->pcb_save, cpu_max_ext_state_size);
fpurstor(pcb->pcb_save);
if (pcb->pcb_initial_npxcw != __INITIAL_NPXCW__)
fldcw(pcb->pcb_initial_npxcw);
pcb->pcb_flags |= PCB_NPXINITDONE;
if (PCB_USER_FPU(pcb))
pcb->pcb_flags |= PCB_NPXUSERINITDONE;
} else {
fpurstor(curpcb->pcb_save);
fpurstor(pcb->pcb_save);
}
}
/*
* Implement device not available (DNA) exception
*
* It would be better to switch FP context here (if curthread != fpcurthread)
* and not necessarily for every context switch, but it is too hard to
* access foreign pcb's.
*/
int
npxdna(void)
{
struct thread *td;
if (!hw_float)
return (0);
td = curthread;
critical_enter();
if (__predict_false(PCPU_GET(fpcurthread) == td)) {
/*
* Some virtual machines seems to set %cr0.TS at
* arbitrary moments. Silently clear the TS bit
* regardless of the eager/lazy FPU context switch
* mode.
*/
stop_emulating();
} else {
if (__predict_false(PCPU_GET(fpcurthread) != NULL)) {
printf(
"npxdna: fpcurthread = %p (%d), curthread = %p (%d)\n",
PCPU_GET(fpcurthread),
PCPU_GET(fpcurthread)->td_proc->p_pid,
td, td->td_proc->p_pid);
panic("npxdna");
}
restore_npx_curthread(td, td->td_pcb);
}
critical_exit();
return (1);
}
@@ -869,8 +884,20 @@ npxsave(addr)
xsaveopt((char *)addr, xsave_mask);
else
fpusave(addr);
start_emulating();
PCPU_SET(fpcurthread, NULL);
}
void npxswitch(struct thread *td, struct pcb *pcb);
void
npxswitch(struct thread *td, struct pcb *pcb)
{
if (lazy_fpu_switch || (td->td_pflags & TDP_KTHREAD) != 0 ||
!PCB_USER_FPU(pcb)) {
start_emulating();
PCPU_SET(fpcurthread, NULL);
} else if (PCPU_GET(fpcurthread) != td) {
restore_npx_curthread(td, pcb);
}
}
/*
+2
View File
@@ -1502,6 +1502,8 @@ sctp_auth_get_cookie_params(struct sctp_tcb *stcb, struct mbuf *m,
if (p_random != NULL) {
keylen = sizeof(*p_random) + random_len;
memcpy(new_key->key, p_random, keylen);
} else {
keylen = 0;
}
/* append in the AUTH chunks */
if (chunks != NULL) {
+3 -1
View File
@@ -3619,7 +3619,9 @@ sctp_strike_gap_ack_chunks(struct sctp_tcb *stcb, struct sctp_association *asoc,
SCTP_SO_NOT_LOCKED);
}
/* Make sure to flag we had a FR */
tp1->whoTo->net_ack++;
if (tp1->whoTo != NULL) {
tp1->whoTo->net_ack++;
}
continue;
}
}
-3
View File
@@ -4810,7 +4810,6 @@ process_control_chunks:
/* check to see if this chunk required auth, but isn't */
if ((stcb != NULL) &&
(stcb->asoc.auth_supported == 1) &&
sctp_auth_is_required_chunk(ch->chunk_type, stcb->asoc.local_auth_chunks) &&
!stcb->asoc.authenticated) {
/* "silently" ignore */
@@ -5687,7 +5686,6 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
* chunks
*/
if ((stcb != NULL) &&
(stcb->asoc.auth_supported == 1) &&
sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.local_auth_chunks)) {
/* "silently" ignore */
SCTP_STAT_INCR(sctps_recvauthmissing);
@@ -5729,7 +5727,6 @@ sctp_common_input_processing(struct mbuf **mm, int iphlen, int offset, int lengt
*/
if ((length > offset) &&
(stcb != NULL) &&
(stcb->asoc.auth_supported == 1) &&
sctp_auth_is_required_chunk(SCTP_DATA, stcb->asoc.local_auth_chunks) &&
!stcb->asoc.authenticated) {
/* "silently" ignore */
+2
View File
@@ -6702,6 +6702,8 @@ next_param:
if (p_random != NULL) {
keylen = sizeof(*p_random) + random_len;
memcpy(new_key->key, p_random, keylen);
} else {
keylen = 0;
}
/* append in the AUTH chunks */
if (chunks != NULL) {
+2
View File
@@ -4248,6 +4248,8 @@ sctp_setopt(struct socket *so, int optname, void *optval, size_t optsize,
if (sctp_auth_add_chunk(sauth->sauth_chunk, inp->sctp_ep.local_auth_chunks)) {
SCTP_LTRACE_ERR_RET(inp, NULL, NULL, SCTP_FROM_SCTP_USRREQ, EINVAL);
error = EINVAL;
} else {
inp->auth_supported = 1;
}
SCTP_INP_WUNLOCK(inp);
break;
+28 -3
View File
@@ -175,8 +175,27 @@ SYSCTL_UINT(_net_inet_tcp_syncache, OID_AUTO, hashsize, CTLFLAG_VNET | CTLFLAG_R
&VNET_NAME(tcp_syncache.hashsize), 0,
"Size of TCP syncache hashtable");
SYSCTL_UINT(_net_inet_tcp_syncache, OID_AUTO, rexmtlimit, CTLFLAG_VNET | CTLFLAG_RW,
static int
sysctl_net_inet_tcp_syncache_rexmtlimit_check(SYSCTL_HANDLER_ARGS)
{
int error;
u_int new;
new = V_tcp_syncache.rexmt_limit;
error = sysctl_handle_int(oidp, &new, 0, req);
if ((error == 0) && (req->newptr != NULL)) {
if (new > TCP_MAXRXTSHIFT)
error = EINVAL;
else
V_tcp_syncache.rexmt_limit = new;
}
return (error);
}
SYSCTL_PROC(_net_inet_tcp_syncache, OID_AUTO, rexmtlimit,
CTLFLAG_VNET | CTLTYPE_UINT | CTLFLAG_RW,
&VNET_NAME(tcp_syncache.rexmt_limit), 0,
sysctl_net_inet_tcp_syncache_rexmtlimit_check, "UI",
"Limit on SYN/ACK retransmissions");
VNET_DEFINE(int, tcp_sc_rst_sock_fail) = 1;
@@ -388,8 +407,14 @@ syncache_drop(struct syncache *sc, struct syncache_head *sch)
static void
syncache_timeout(struct syncache *sc, struct syncache_head *sch, int docallout)
{
sc->sc_rxttime = ticks +
TCPTV_RTOBASE * (tcp_syn_backoff[sc->sc_rxmits]);
int rexmt;
if (sc->sc_rxmits == 0)
rexmt = TCPTV_RTOBASE;
else
TCPT_RANGESET(rexmt, TCPTV_RTOBASE * tcp_syn_backoff[sc->sc_rxmits],
tcp_rexmit_min, TCPTV_REXMTMAX);
sc->sc_rxttime = ticks + rexmt;
sc->sc_rxmits++;
if (TSTMP_LT(sc->sc_rxttime, sch->sch_nextc)) {
sch->sch_nextc = sc->sc_rxttime;
+1 -1
View File
@@ -58,7 +58,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
#define __FreeBSD_version 1101516 /* Master, propagated to newvers */
#define __FreeBSD_version 1102000 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
+3 -3
View File
@@ -4499,7 +4499,6 @@ OLD_FILES+=usr/include/c++/v1/__libcpp_version
OLD_FILES+=usr/include/c++/v1/__locale
OLD_FILES+=usr/include/c++/v1/__mutex_base
OLD_FILES+=usr/include/c++/v1/__nullptr
OLD_FILES+=usr/include/c++/v1/__refstring
OLD_FILES+=usr/include/c++/v1/__split_buffer
OLD_FILES+=usr/include/c++/v1/__sso_allocator
OLD_FILES+=usr/include/c++/v1/__std_stream
@@ -4552,6 +4551,7 @@ OLD_FILES+=usr/include/c++/v1/experimental/__memory
OLD_FILES+=usr/include/c++/v1/experimental/algorithm
OLD_FILES+=usr/include/c++/v1/experimental/any
OLD_FILES+=usr/include/c++/v1/experimental/chrono
OLD_FILES+=usr/include/c++/v1/experimental/coroutine
OLD_FILES+=usr/include/c++/v1/experimental/deque
OLD_FILES+=usr/include/c++/v1/experimental/dynarray
OLD_FILES+=usr/include/c++/v1/experimental/filesystem
@@ -4561,6 +4561,7 @@ OLD_FILES+=usr/include/c++/v1/experimental/iterator
OLD_FILES+=usr/include/c++/v1/experimental/list
OLD_FILES+=usr/include/c++/v1/experimental/map
OLD_FILES+=usr/include/c++/v1/experimental/memory_resource
OLD_FILES+=usr/include/c++/v1/experimental/numeric
OLD_FILES+=usr/include/c++/v1/experimental/optional
OLD_FILES+=usr/include/c++/v1/experimental/propagate_const
OLD_FILES+=usr/include/c++/v1/experimental/ratio
@@ -4642,7 +4643,6 @@ OLD_FILES+=usr/include/c++/v1/tr1/__libcpp_version
OLD_FILES+=usr/include/c++/v1/tr1/__locale
OLD_FILES+=usr/include/c++/v1/tr1/__mutex_base
OLD_FILES+=usr/include/c++/v1/tr1/__nullptr
OLD_FILES+=usr/include/c++/v1/tr1/__refstring
OLD_FILES+=usr/include/c++/v1/tr1/__split_buffer
OLD_FILES+=usr/include/c++/v1/tr1/__sso_allocator
OLD_FILES+=usr/include/c++/v1/tr1/__std_stream
@@ -4650,7 +4650,7 @@ OLD_FILES+=usr/include/c++/v1/tr1/__string
OLD_FILES+=usr/include/c++/v1/tr1/__threading_support
OLD_FILES+=usr/include/c++/v1/tr1/__tree
OLD_FILES+=usr/include/c++/v1/tr1/__tuple
OLD_FILES+=usr/include/c++/v1/tr1/__undef_min_max
OLD_FILES+=usr/include/c++/v1/tr1/__undef_macros
OLD_FILES+=usr/include/c++/v1/tr1/algorithm
OLD_FILES+=usr/include/c++/v1/tr1/any
OLD_FILES+=usr/include/c++/v1/tr1/array