mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 19:34:43 +01:00
Compare commits
29
Commits
main
...
release/8.0.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
59dd044d1c | ||
|
|
fc8b5e644f | ||
|
|
93f0adb458 | ||
|
|
a3f27f9ed4 | ||
|
|
357894a88e | ||
|
|
17a789523f | ||
|
|
cb752cfcac | ||
|
|
9bcf40edac | ||
|
|
0a949f8099 | ||
|
|
e868427534 | ||
|
|
4df8d91866 | ||
|
|
cf79ed3803 | ||
|
|
34f914c8dc | ||
|
|
faf2e10bc0 | ||
|
|
65a1fd769a | ||
|
|
3092cfd15b | ||
|
|
21998cced7 | ||
|
|
09700a122a | ||
|
|
2b145d4338 | ||
|
|
92b18d813e | ||
|
|
0a43e0477c | ||
|
|
fd80572866 | ||
|
|
b9bd7bf678 | ||
|
|
08ff25d373 | ||
|
|
337287c2c8 | ||
|
|
9919881dba | ||
|
|
1ce9ab7f77 | ||
|
|
e104a03eb5 | ||
|
|
190f5f216b |
No files matched your search
+1
-1
@@ -93,7 +93,7 @@ CLEANDIR= cleandir
|
||||
.endif
|
||||
|
||||
CVS?= cvs
|
||||
CVSFLAGS?= -r RELENG_8 -P -d -I!
|
||||
CVSFLAGS?= -r RELENG_8_0 -P -d -I!
|
||||
SVN?= svn
|
||||
SVNFLAGS?= -r HEAD
|
||||
SUP?= /usr/bin/csup
|
||||
|
||||
@@ -15,6 +15,9 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
|
||||
debugging tools present in HEAD were left in place because
|
||||
sun4v support still needs work to become production ready.
|
||||
|
||||
20091125:
|
||||
8.0-RELEASE.
|
||||
|
||||
20090929:
|
||||
802.11s D3.03 support was committed. This is incompatible with
|
||||
the previous code, which was based on D3.0.
|
||||
@@ -566,6 +569,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
|
||||
userland (libpmc(3)) and the kernel module (hwpmc(4)) in
|
||||
sync.
|
||||
|
||||
20081009:
|
||||
atapci kernel module now includes only generic PCI ATA
|
||||
driver. AHCI driver moved to ataahci kernel module.
|
||||
All vendor-specific code moved into separate kernel modules:
|
||||
ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
|
||||
atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
|
||||
atamarvell, atamicron, atanational, atanetcell, atanvidia,
|
||||
atapromise, ataserverworks, atasiliconimage, atasis, atavia
|
||||
|
||||
20080820:
|
||||
The TTY subsystem of the kernel has been replaced by a new
|
||||
implementation, which provides better scalability and an
|
||||
|
||||
@@ -476,6 +476,12 @@ _nc_wgetch(WINDOW *win,
|
||||
/* resizeterm can push KEY_RESIZE */
|
||||
if (cooked_key_in_fifo()) {
|
||||
*result = fifo_pull(sp);
|
||||
/*
|
||||
* Get the ERR from queue -- it is from WINCH,
|
||||
* so we should take it out, the "error" is handled.
|
||||
*/
|
||||
if (fifo_peek(sp) == -1)
|
||||
fifo_pull(sp);
|
||||
returnCode(*result >= KEY_MIN ? KEY_CODE_YES : OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,6 +50,12 @@
|
||||
the last release, as well as significant changes to the &os;
|
||||
kernel and userland.
|
||||
Some brief remarks on upgrading are also presented.</para>
|
||||
|
||||
<para>NOTE: the full release notes were not available at the time
|
||||
the release builds were started. See the online version of the
|
||||
release notes for the most up to date information. The online
|
||||
release notes can be found at <ulink url="&release.url;"></ulink>.
|
||||
</para>
|
||||
</abstract>
|
||||
</articleinfo>
|
||||
|
||||
@@ -138,84 +144,16 @@
|
||||
<sect2 id="kernel">
|
||||
<title>Kernel Changes</title>
|
||||
|
||||
<para>A new &man.cpuset.2; API has been added
|
||||
for thread to CPU binding and CPU resource grouping and
|
||||
assignment. The &man.cpuset.1; userland utility has been added
|
||||
to allow manipulation of processor sets.</para>
|
||||
|
||||
<para role="merged">The &man.ddb.4; kernel debugger now has an output capture
|
||||
facility. Input and output from &man.ddb.4; can now be captured
|
||||
to a memory buffer for later inspection using &man.sysctl.8; or
|
||||
a textdump. The new <command>capture</command> command controls
|
||||
this feature.</para>
|
||||
|
||||
<para role="merged">The &man.ddb.4; debugger now supports a simple scripting
|
||||
facility, which supports a set of named scripts consisting of a
|
||||
set of &man.ddb.4; commands. These commands can be managed from
|
||||
within &man.ddb.4; or with the use of the new &man.ddb.8;
|
||||
utility. More details can be found in the &man.ddb.4; manual
|
||||
page.</para>
|
||||
|
||||
<para role="merged">The kernel now supports a new textdump format of kernel
|
||||
dumps. A textdump provides higher-level information via
|
||||
mechanically generated/extracted debugging output, rather than a
|
||||
simple memory dump. This facility can be used to generate brief
|
||||
kernel bug reports that are rich in debugging information, but
|
||||
are not dependent on kernel symbol tables or precisely
|
||||
synchronized source code. More information can be found in the
|
||||
&man.textdump.4; manual page.</para>
|
||||
|
||||
<para>Kernel support for M:N threading has been removed. While
|
||||
the KSE (Kernel Scheduled Entities) project was quite successful
|
||||
in bringing threading to FreeBSD, the M:N approach taken by the
|
||||
KSE library was never developed to its full potential.
|
||||
Backwards compatibility for applications using KSE threading
|
||||
will be provided via &man.libmap.conf.5; for dynamically linked
|
||||
binaries. The &os; Project greatly appreciates the work of
|
||||
&a.julian;, &a.deischen;, and &a.davidxu; on KSE support.</para>
|
||||
|
||||
<para>The &os; kernel now exports information about certain kernel
|
||||
features via the <varname>kern.features</varname> sysctl tree.
|
||||
The &man.feature.present.3; library call provides a convenient
|
||||
interface for user applications to test the presence of
|
||||
features.</para>
|
||||
|
||||
<para arch="amd64">The &os; kernel now has support for large
|
||||
memory page mappings (<quote>superpages</quote>).</para>
|
||||
|
||||
<para arch="amd64,i386,ia64,powerpc" role="merged">The ULE
|
||||
scheduler is now the default process scheduler
|
||||
in <filename>GENERIC</filename> kernels.</para>
|
||||
|
||||
<sect3 id="boot">
|
||||
<title>Boot Loader Changes</title>
|
||||
|
||||
<para arch="amd64,i386" role="merged">The BTX kernel used by the boot
|
||||
loader has been changed to invoke BIOS routines from real
|
||||
mode. This change makes it possible to boot &os; from USB
|
||||
devices.</para>
|
||||
|
||||
<para arch="amd64,i386" role="merged">A new gptboot boot loader has
|
||||
been added to support booting from a GPT labeled disk. A
|
||||
new <command>boot</command> command has been added to
|
||||
&man.gpt.8;, which makes a GPT disk bootable by writing the
|
||||
required bits of the boot loader, creating a new boot
|
||||
partition if required.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="proc">
|
||||
<title>Hardware Support</title>
|
||||
|
||||
<para role="merged">The &man.cmx.4; driver, a driver for Omnikey CardMan 4040
|
||||
PCMCIA smartcard readers, has been added.</para>
|
||||
|
||||
<para>The &man.syscons.4; driver now supports Colemak keyboard layout.</para>
|
||||
|
||||
<para role="merged">The &man.uslcom.4; driver, a driver for Silicon
|
||||
Laboratories CP2101/CP2102-based USB serial adapters, has been
|
||||
imported from OpenBSD.</para>
|
||||
|
||||
<sect4 id="mm">
|
||||
<title>Multimedia Support</title>
|
||||
|
||||
@@ -226,40 +164,7 @@
|
||||
<sect4 id="net-if">
|
||||
<title>Network Interface Support</title>
|
||||
|
||||
<para>The &man.ale.4; driver has been added to provide support
|
||||
for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet controllers.</para>
|
||||
|
||||
<para>The &man.em.4; driver has been split into two drivers
|
||||
with some common parts. The &man.em.4; driver will continue
|
||||
to support adapters up to the 82575, as well as new
|
||||
client/desktop adapters. A new &man.igb.4; driver
|
||||
will support new server adapters.</para>
|
||||
|
||||
<para>The &man.jme.4; driver has been added to provide support
|
||||
for PCIe network adapters based on JMicron JMC250 Gigabit
|
||||
Ethernet and JMC260 Fast Ethernet controllers.</para>
|
||||
|
||||
<para>The &man.malo.4; driver has been added to provide
|
||||
support for Marvell Libertas 88W8335 based PCI network
|
||||
adapters.</para>
|
||||
|
||||
<para>The firmware for the &man.mxge.4; driver has been
|
||||
updated from 1.4.25 to 1.4.29.</para>
|
||||
|
||||
<para>The &man.sf.4; driver has been overhauled to improve its
|
||||
performance and to add support for checksum offloading. It
|
||||
should also work on all architectures.</para>
|
||||
|
||||
<para>The &man.re.4; driver has been overhauled to fix a
|
||||
number of issues. This driver now has Wake On LAN (WOL)
|
||||
support.</para>
|
||||
|
||||
<para>The &man.vr.4; driver has been overhauled to fix a
|
||||
number of outstanding issues. It also now works on all
|
||||
architectures.</para>
|
||||
|
||||
<para arch="amd64,i386" role="merged">The &man.wpi.4; driver has
|
||||
been updated to include a number of stability fixes.</para>
|
||||
<para></para>
|
||||
|
||||
</sect4>
|
||||
</sect3>
|
||||
@@ -267,50 +172,21 @@
|
||||
<sect3 id="net-proto">
|
||||
<title>Network Protocols</title>
|
||||
|
||||
<para>The &man.bpf.4; packet filter and capture facility now
|
||||
supports a zero-copy mode of operation, in which buffers are
|
||||
loaned from a user process to the kernel. This feature can
|
||||
be enabled by setting
|
||||
the <varname>net.bpf.zerocopy_enable</varname> sysctl
|
||||
variable to <literal>1</literal>.</para>
|
||||
|
||||
<para>ISDN4BSD(I4B), <filename>netatm</filename>, and all
|
||||
related subsystems have been removed due to lack of
|
||||
multi-processor support.</para>
|
||||
|
||||
<para role="merged">A bug in TCP options padding, where the wrong padding
|
||||
bytes were used, has been fixed.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="disks">
|
||||
<title>Disks and Storage</title>
|
||||
|
||||
<para role="merged">The &man.aac.4; driver now supports volumes larger than
|
||||
2TB in size.</para>
|
||||
|
||||
<para>The &man.ata.4; driver now supports a spindown command for
|
||||
disks; after a configurable amount of time, if no requests
|
||||
have been received for a disk, the disk will be spun down
|
||||
until the next request. The &man.atacontrol.8; utility now
|
||||
supports a <command>spindown</command> command to configure
|
||||
this feature.</para>
|
||||
|
||||
<para role="merged">The &man.hptrr.4; driver has been updated to version 1.2
|
||||
from Highpoint.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="fs">
|
||||
<title>File Systems</title>
|
||||
|
||||
<para>A problem with using &man.mmap.2; on ZFS filesystems has
|
||||
been fixed.</para>
|
||||
|
||||
<para>A new kernel-mode NFS lock manager has been added,
|
||||
improving performance and behavior of NFS locking. A new
|
||||
&man.clear.locks.8; command has been added to clear locks held
|
||||
on behalf of an NFS client.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
@@ -318,111 +194,6 @@
|
||||
<sect2 id="userland">
|
||||
<title>Userland Changes</title>
|
||||
|
||||
<para role="merged">The &man.adduser.8; utility now supports
|
||||
a <option>-M</option> option to set the mode of a new user's
|
||||
home directory.</para>
|
||||
|
||||
<para>BSD-licensed versions of &man.ar.1; and &man.ranlib.1;,
|
||||
based on <filename>libarchive</filename>, have replaced the GNU
|
||||
Binutils versions of these utilities.</para>
|
||||
|
||||
<para role="merged">&man.chflags.1; now supports a <option>-v</option> flag for
|
||||
verbose output and a <option>-f</option> flag to ignore errors
|
||||
with the same semantics as (for example)
|
||||
&man.chmod.1;.</para>
|
||||
|
||||
<para>For compatiblity with other implementations, &man.cp.1; now
|
||||
supports a <option>-a</option> flag, which is equivalent to
|
||||
specifying the <option>-RrP</option> flags.</para>
|
||||
|
||||
<para>BSD-licensed version of &man.cpio.1; based on
|
||||
<filename>libarchive</filename>, has replaced the GNU cpio.
|
||||
Note that the GNU cpio is still installed as
|
||||
<filename>gcpio</filename>.</para>
|
||||
|
||||
<para>The &man.env.1; program now supports <option>-u
|
||||
<replaceable>name</replaceable></option>
|
||||
which will completely unset the given variable
|
||||
<replaceable>name</replaceable> by removing it from the environment,
|
||||
instead of just setting it to a null value.</para>
|
||||
|
||||
<para>The &man.fdopendir.3; library function has been added.</para>
|
||||
|
||||
<para role="merged">The &man.fetch.3; library now support HTTP 1.1
|
||||
If-Modified-Since behavior. The &man.fetch.1; program now
|
||||
supports <option>-i <replaceable>filename</replaceable></option>
|
||||
which will only download the specified HTTP URL if the content
|
||||
is newer than <replaceable>filename</replaceable>.</para>
|
||||
|
||||
<para>&man.find.1; has been enhanced by the addition of a number
|
||||
of primaries that were present in GNU find but not &os;
|
||||
&man.find.1;.</para>
|
||||
|
||||
<para>&man.jexec.8; now supports <option>-h
|
||||
<replaceable>hostname</replaceable></option> option to specify the
|
||||
jail where the command will be executed.</para>
|
||||
|
||||
<para>&man.kgdb.1; now supports a new <command>add-kld</command>
|
||||
command to make it easier to debug crash dumps with kernel
|
||||
modules.</para>
|
||||
|
||||
<para>The &man.ls.1; program now supports a <option>-D</option>
|
||||
option to specify a date format string to be used with the long
|
||||
format (<option>-l</option>) output.</para>
|
||||
|
||||
<para>&man.nc.1; now supports a <option>-O</option> switch to
|
||||
disable the use of TCP options.</para>
|
||||
|
||||
<para>The &man.ping6.8; utility now returns <literal>2</literal>
|
||||
when the packet transmission was successful but no responses
|
||||
were received (this is the same behavior as &man.ping.8;).
|
||||
It returned a non-zero value before this change.</para>
|
||||
|
||||
<para>The &man.procstat.1; utility has been added to display
|
||||
detailed information about processes.</para>
|
||||
|
||||
<para role="merged">The &man.realpath.1; utility now supports
|
||||
a <option>-q</option> flag to suppress warnings; it now also
|
||||
accepts multiple paths on its command line.</para>
|
||||
|
||||
<para>The &man.split.1; utility now supports a <option>-n</option>
|
||||
flag to split a file into a certain number of chunks.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a <option>-Z</option>
|
||||
flag to enable &man.compress.1;-style
|
||||
compression/decompression.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a
|
||||
<option>--numeric-owner</option> flag to ignore user/group names
|
||||
on create and extract.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports an
|
||||
<option>-S</option> flag to sparsify files on extraction.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a <option>-s</option>
|
||||
flag to substitute filenames based on the specified regular
|
||||
expression.</para>
|
||||
|
||||
<para>The &man.tcgetsid.3; library function has been added to
|
||||
return the process group ID for the session leader for the
|
||||
controlling terminal. It is defined in IEEE Std 1003.1-2001
|
||||
(POSIX).</para>
|
||||
|
||||
<para>&man.top.1; now supports a <option>-P</option> flag to
|
||||
provide per-CPU usage statistics.</para>
|
||||
|
||||
<para>&man.zdump.8; is now working properly on 64 bit architectures.
|
||||
</para>
|
||||
|
||||
<para>&man.traceroute.8; now has the ability to print the AS
|
||||
number for each hop with the new <option>-a</option> switch; a
|
||||
new <option>-A</option> option allows selecting a particular
|
||||
WHOIS server.</para>
|
||||
|
||||
<para>&man.traceroute6.8; now supports a <option>-U</option> flag
|
||||
to send probe packets with no upper-layer protocol, rather than
|
||||
the usual UDP probe packets.</para>
|
||||
|
||||
<sect3 id="rc-scripts">
|
||||
<title><filename>/etc/rc.d</filename> Scripts</title>
|
||||
|
||||
@@ -434,83 +205,21 @@
|
||||
<sect2 id="contrib">
|
||||
<title>Contributed Software</title>
|
||||
|
||||
<para role="merged"><application>AMD</application> has been updated from 6.0.10
|
||||
to 6.1.5.</para>
|
||||
|
||||
<para role="merged"><application>awk</application> has been updated from 1 May
|
||||
2007 release to the 23 October 2007 release.</para>
|
||||
|
||||
<para role="merged"><application>bzip2</application> has been updated from 1.0.4
|
||||
to 1.0.5.</para>
|
||||
|
||||
<para><application>CVS</application> has been updated from 1.11.17
|
||||
to a post-1.11.22 snapshot from 10 March 2008.</para>
|
||||
|
||||
<para><application>FILE</application> has been updated from 4.23
|
||||
to 5.03.</para>
|
||||
|
||||
<para><application>hostapd</application> has been
|
||||
updated from 0.5.8 to 0.5.10.</para>
|
||||
|
||||
<para><application>IPFilter</application> has been updated from
|
||||
4.1.23 to 4.1.28.</para>
|
||||
|
||||
<para><application>less</application> has been updated from
|
||||
v408 to v429.</para>
|
||||
|
||||
<para><application>ncurses</application> has been updated from
|
||||
5.6-20061217 to 5.6-20080503.</para>
|
||||
|
||||
<para role="merged"><application>OpenSSH</application> has been updated
|
||||
from 4.5p1 to 5.1p1.</para>
|
||||
|
||||
<para role="merged"><application>OpenPAM</application> has been updated from the
|
||||
Figwort release to the Hydrangea release.</para>
|
||||
|
||||
<para role="merged"><application>sendmail</application> has been updated from
|
||||
8.14.1 to 8.14.3.</para>
|
||||
|
||||
<para role="merged">The timezone database has been updated from
|
||||
the <application>tzdata2008h</application> release to
|
||||
the <application>tzdata2009j</application> release.</para>
|
||||
|
||||
<para>The stdtime part of libc, &man.zdump.8 and &man.zic.8
|
||||
have been updated from the <application>tzcode2004a</application>
|
||||
release to the <application>tzcode2009h</application> release.
|
||||
If you have upgraded from source or via the &man.freebsd-update.8,
|
||||
then please run &man.tzsetup.8 to install a new /etc/localtime.
|
||||
</para>
|
||||
|
||||
<para><application>WPA Supplicant</application> has been
|
||||
updated from 0.5.8 to 0.5.10.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ports">
|
||||
<title>Ports/Packages Collection Infrastructure</title>
|
||||
|
||||
<para>The &man.pkg.create.1; utility now supports
|
||||
<option>-n</option>. When this option is specified and a
|
||||
package tarball exists, it will not be overwritten. This is
|
||||
useful when multiple packages are saved with several consecutive
|
||||
runs of &man.pkg.create.1; with the <option>-Rb</option>
|
||||
options.</para>
|
||||
|
||||
<para>The pkg_sign and pkg_check utilities for cryptographically
|
||||
signing &os; packages have been removed. They were only useful
|
||||
for packages compressed using &man.gzip.1;; however
|
||||
&man.bzip2.1; compression has been the norm for some time
|
||||
now.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="releng">
|
||||
<title>Release Engineering and Integration</title>
|
||||
|
||||
<para role="merged">The supported version of
|
||||
the <application>GNOME</application> desktop environment
|
||||
(<filename role="package">x11/gnome2</filename>) has been
|
||||
updated from 2.20.1 to 2.22.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
@@ -35,17 +35,6 @@
|
||||
(list (list "HREF" "mailto:[email protected]"))
|
||||
(literal "[email protected]"))
|
||||
(literal ">.")))
|
||||
(make element gi: "p"
|
||||
attributes: (list (list "align" "center"))
|
||||
(make element gi: "small"
|
||||
(literal "All users of FreeBSD ")
|
||||
(literal (entity-text "release.branch"))
|
||||
(literal " should subscribe to the ")
|
||||
(literal "<")
|
||||
(create-link (list (list "HREF" "mailto:[email protected]"))
|
||||
(literal "[email protected]"))
|
||||
(literal "> mailing list.")))
|
||||
|
||||
(make element gi: "p"
|
||||
attributes: (list (list "align" "center"))
|
||||
(make element gi: "small"
|
||||
|
||||
@@ -6,41 +6,35 @@
|
||||
|
||||
<!-- Version of the OS we're describing. This needs to be updated
|
||||
with each new release. -->
|
||||
<!ENTITY release.current "8.0-CURRENT">
|
||||
<!ENTITY release.current "8.0-RELEASE">
|
||||
|
||||
<!-- The previous version used for comparison in the "What's New"
|
||||
section. For -CURRENT, we might point back to the last
|
||||
branchpoint. -->
|
||||
<!ENTITY release.prev "7.0-RELEASE">
|
||||
|
||||
<!-- 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 "7.0-RELEASE">
|
||||
<!ENTITY release.prev "7.2-RELEASE">
|
||||
|
||||
<!-- The next version to be released, usually used for snapshots. -->
|
||||
<!ENTITY release.next "8.0-RELEASE">
|
||||
<!ENTITY release.next "8.1-RELEASE">
|
||||
|
||||
<!-- The name of this branch. -->
|
||||
<!ENTITY release.branch "8-CURRENT">
|
||||
<!ENTITY release.branch "8.0-STABLE">
|
||||
|
||||
<!-- The URL for obtaining this version of FreeBSD. -->
|
||||
<!ENTITY release.url "http://www.FreeBSD.org/snapshots/">
|
||||
<!ENTITY release.url "http://www.FreeBSD.org/">
|
||||
|
||||
<!-- The type of release (usually this will be either "snapshot"
|
||||
or "release" -->
|
||||
<!ENTITY release.type "snapshot">
|
||||
<!ENTITY % release.type.current "INCLUDE">
|
||||
<!ENTITY release.type "release">
|
||||
<!ENTITY % release.type.current "IGNORE">
|
||||
<!ENTITY % release.type.snapshot "IGNORE">
|
||||
<!ENTITY % release.type.release "IGNORE">
|
||||
<!ENTITY % release.type.release "INCLUDE">
|
||||
|
||||
<!-- The manpaths for man page references -->
|
||||
<!ENTITY release.man.url "http://www.FreeBSD.org/cgi/man.cgi">
|
||||
<!ENTITY release.manpath.xfree86 "4.5.0">
|
||||
<!ENTITY release.manpath.xorg "7.2">
|
||||
<!ENTITY release.manpath.netbsd "3.0">
|
||||
<!ENTITY release.manpath.xorg "7.4">
|
||||
<!ENTITY release.manpath.netbsd "4.0.1">
|
||||
<!ENTITY release.manpath.freebsd-ports "Ports">
|
||||
<!ENTITY release.manpath.freebsd "8-current">
|
||||
<!ENTITY release.manpath.freebsd "8.0-RELEASE">
|
||||
|
||||
<!-- Text constants which probably don't need to be changed.-->
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
*default host=CHANGE_THIS.FreeBSD.org
|
||||
*default base=/var/db
|
||||
*default prefix=/usr
|
||||
*default release=cvs tag=RELENG_8
|
||||
*default release=cvs tag=RELENG_8_0
|
||||
*default delete use-rel-suffix
|
||||
|
||||
# If you seem to be limited by CPU rather than network or disk bandwidth, try
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Please consult with http://www.FreeBSD.org/internal/i18n.html before
|
||||
# making changes to this file.
|
||||
#
|
||||
# ISO 3166 country codes
|
||||
# This includes many places that are not legally independent countries,
|
||||
# but which is it convenient to refer to separately from their
|
||||
@@ -230,7 +233,7 @@ SZ SWZ 748 Swaziland
|
||||
SE SWE 752 Sweden
|
||||
CH CHE 756 Switzerland
|
||||
SY SYR 760 Syrian Arab Republic
|
||||
TW TWN 158 Taiwan, Province of China
|
||||
TW TWN 158 Taiwan
|
||||
TJ TJK 762 Tajikistan
|
||||
TZ TZA 834 Tanzania, United Republic of
|
||||
TH THA 764 Thailand
|
||||
|
||||
+80
-12
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)asia 8.40
|
||||
# @(#)asia 8.42
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -172,11 +172,30 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
|
||||
#
|
||||
# No DST end date has been announced yet.
|
||||
|
||||
# From Arthur David Olson (2009-07-11):
|
||||
# Arbitrarily end DST at the end of 2009 so that a POSIX-sytle time zone string
|
||||
# can appear in the Dhaka binary file and for the benefit of old glibc
|
||||
# reimplementations of the time zone software that mishandle permanent DST.
|
||||
# A change will be required once the end date is known.
|
||||
# From Alexander Krivenyshev (2009-09-25):
|
||||
# Bangladesh won't go back to Standard Time from October 1, 2009,
|
||||
# instead it will continue DST measure till the cabinet makes a fresh decision.
|
||||
#
|
||||
# Following report by same newspaper-"The Daily Star Friday":
|
||||
# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
|
||||
# <a href="http://www.thedailystar.net/newDesign/news-details.php?nid=107021">
|
||||
# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
|
||||
# </a>
|
||||
# or
|
||||
# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html">
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
|
||||
# </a>
|
||||
|
||||
# From Steffen Thorsen (2009-10-13):
|
||||
# IANS (Indo-Asian News Service) now reports:
|
||||
# Bangladesh has decided that the clock advanced by an hour to make
|
||||
# maximum use of daylight hours as an energy saving measure would
|
||||
# "continue for an indefinite period."
|
||||
#
|
||||
# One of many places where it is published:
|
||||
# <a href="http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html">
|
||||
# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
|
||||
# </a>
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Dhaka 6:01:40 - LMT 1890
|
||||
@@ -186,8 +205,7 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890
|
||||
6:30 - BURT 1951 Sep 30
|
||||
6:00 - DACT 1971 Mar 26 # Dacca Time
|
||||
6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time
|
||||
6:00 1:00 BDST 2010
|
||||
6:00 - BDT
|
||||
6:00 1:00 BDST
|
||||
|
||||
# Bhutan
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@@ -1674,16 +1692,66 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
|
||||
# advance clocks in the country by one hour from April 15 to
|
||||
# conserve energy"
|
||||
|
||||
# From Arthur David Olson (2009-04-10):
|
||||
# Assume for now that Pakistan will end DST in 2009 as it did in 2008.
|
||||
# From Steffen Thorsen (2009-09-17):
|
||||
# "The News International," Pakistan reports that: "The Federal
|
||||
# Government has decided to restore the previous time by moving the
|
||||
# clocks backward by one hour from October 1. A formal announcement to
|
||||
# this effect will be made after the Prime Minister grants approval in
|
||||
# this regard."
|
||||
# <a href="http://www.thenews.com.pk/updates.asp?id=87168">
|
||||
# http://www.thenews.com.pk/updates.asp?id=87168
|
||||
# </a>
|
||||
|
||||
# From Alexander Krivenyshev (2009-09-28):
|
||||
# According to Associated Press Of Pakistan, it is confirmed that
|
||||
# Pakistan clocks across the country would be turned back by an hour from October
|
||||
# 1, 2009.
|
||||
#
|
||||
# "Clocks to go back one hour from 1 Oct"
|
||||
# <a href="http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2">
|
||||
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
|
||||
# </a>
|
||||
# or
|
||||
# <a href="http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm">
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
|
||||
# </a>
|
||||
|
||||
# From Steffen Thorsen (2009-09-29):
|
||||
# Alexander Krivenyshev wrote:
|
||||
# > According to Associated Press Of Pakistan, it is confirmed that
|
||||
# > Pakistan clocks across the country would be turned back by an hour from October
|
||||
# > 1, 2009.
|
||||
#
|
||||
# Now they seem to have changed their mind, November 1 is the new date:
|
||||
# <a href="http://www.thenews.com.pk/top_story_detail.asp?Id=24742">
|
||||
# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
|
||||
# </a>
|
||||
# "The country's clocks will be reversed by one hour on November 1.
|
||||
# Officials of Federal Ministry for Interior told this to Geo News on
|
||||
# Monday."
|
||||
#
|
||||
# And more importantly, it seems that these dates will be kept every year:
|
||||
# "It has now been decided that clocks will be wound forward by one hour
|
||||
# on April 15 and reversed by an hour on November 1 every year without
|
||||
# obtaining prior approval, the officials added."
|
||||
#
|
||||
# We have confirmed this year's end date with both with the Ministry of
|
||||
# Water and Power and the Pakistan Electric Power Company:
|
||||
# <a href="http://www.timeanddate.com/news/time/pakistan-ends-dst09.html">
|
||||
# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
|
||||
# </a>
|
||||
|
||||
# From Christoph Goehre (2009-10-01):
|
||||
# [T]he German Consulate General in Karachi reported me today that Pakistan
|
||||
# will go back to standard time on 1st of November.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
|
||||
Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
|
||||
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
|
||||
Rule Pakistan 2008 only - Nov 1 0:00 0 -
|
||||
Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
|
||||
Rule Pakistan 2009 only - Nov 1 0:00 0 -
|
||||
Rule Pakistan 2009 max - Apr 15 0:00 1:00 S
|
||||
Rule Pakistan 2009 max - Nov 1 0:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
5:30 - IST 1942 Sep
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)australasia 8.13
|
||||
# @(#)australasia 8.14
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -457,6 +457,36 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
|
||||
# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
|
||||
# </a>
|
||||
|
||||
# From Alexander Krivenyshev (2009-10-03):
|
||||
# First, my deepest condolences to people of Samoa islands and all families and
|
||||
# loved ones around the world who lost their lives in the earthquake and tsunami.
|
||||
#
|
||||
# Considering the recent devastation on Samoa by earthquake and tsunami and that
|
||||
# many government offices/ ministers are closed- not sure if "Daylight Saving
|
||||
# Bill 2009" will be implemented in next few days- on October 4, 2009.
|
||||
#
|
||||
# Here is reply from Consulate-General of Samoa in New Zealand
|
||||
# ---------------------------
|
||||
# Consul General
|
||||
# [email protected]
|
||||
#
|
||||
# Talofa Alexander,
|
||||
#
|
||||
# Thank you for your sympathy for our country but at this time we have not
|
||||
# been informed about the Daylight Savings Time Change. Most Ministries in
|
||||
# Apia are closed or relocating due to weather concerns.
|
||||
#
|
||||
# When we do find out if they are still proceeding with the time change we
|
||||
# will advise you soonest.
|
||||
#
|
||||
# Kind Regards,
|
||||
# Lana
|
||||
# for: Consul General
|
||||
|
||||
# From Steffen Thorsen (2009-10-05):
|
||||
# We have called a hotel in Samoa and asked about local time there - they
|
||||
# are still on standard time.
|
||||
|
||||
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
|
||||
-11:26:56 - LMT 1911
|
||||
-11:30 - SAMT 1950 # Samoa Time
|
||||
|
||||
+55
-13
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)southamerica 8.36
|
||||
# @(#)southamerica 8.40
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -215,9 +215,23 @@ Rule Arg 2000 only - Mar 3 0:00 0 -
|
||||
# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
|
||||
# </a>
|
||||
|
||||
# From fullinet (2009-10-18):
|
||||
# As announced in
|
||||
# <a hef="http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356">
|
||||
# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
|
||||
# </a>
|
||||
# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
|
||||
#
|
||||
# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
|
||||
# oficial, decision que estaba en estudio para su implementacion el
|
||||
# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
|
||||
# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
|
||||
# la modificacion del huso horario, ya que 2009 nos encuentra con
|
||||
# crecimiento en la produccion y distribucion energetica."
|
||||
|
||||
Rule Arg 2007 only - Dec 30 0:00 1:00 S
|
||||
Rule Arg 2008 max - Mar Sun>=15 0:00 0 -
|
||||
Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
|
||||
Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
|
||||
Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
|
||||
|
||||
# From Mariano Absatz (2004-05-21):
|
||||
# Today it was officially published that the Province of Mendoza is changing
|
||||
@@ -389,15 +403,40 @@ Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
|
||||
# during 2009, this timezone change will run from 00:00 the third Sunday
|
||||
# in March until 24:00 of the second Saturday in October.
|
||||
|
||||
# From Arthur David Olson (2009-03-16):
|
||||
# The unofficial claim at
|
||||
# <a href="http://www.timeanddate.com/news/time/san-luis-new-time-zone.html">
|
||||
# http://www.timeanddate.com/news/time/san-luis-new-time-zone.html
|
||||
# </a>
|
||||
# is that "The province will most likely follow the next daylight saving schedule,
|
||||
# which is planned for the second Sunday in October."
|
||||
|
||||
# From Mariano Absatz (2009-10-16):
|
||||
# ...the Province of San Luis is a case in itself.
|
||||
#
|
||||
# The Law at
|
||||
# <a href="http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276>"
|
||||
# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276
|
||||
# </a>
|
||||
# is ambiguous because establishes a calendar from the 2nd Sunday in
|
||||
# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
|
||||
# complement of that starting on the 2nd Sunday of March at 0:00 and
|
||||
# ending on the 2nd Saturday of March at 24:00.
|
||||
#
|
||||
# This clearly breaks every time the 1st of March or October is a Sunday.
|
||||
#
|
||||
# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
|
||||
# Sunday of October and March.
|
||||
#
|
||||
# The problem is that the changes in the rest of the Provinces that did
|
||||
# change in 2007/2008, were made according to the Federal Law and Decrees
|
||||
# that did so on the 3rd Sunday of October and March.
|
||||
#
|
||||
# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
|
||||
# (October 11th) at 0:00.
|
||||
#
|
||||
# So I guess a new set of rules, besides "Arg", must be made and the last
|
||||
# America/Argentina/San_Luis entries should change to use these...
|
||||
#
|
||||
# I'm enclosing a patch that does what I say... regretfully, the San Luis
|
||||
# timezone must be called "WART/WARST" even when most of the time (like,
|
||||
# right now) WARST == ART... that is, since last Sunday, all the country
|
||||
# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
|
||||
# of the country calls it "ART".
|
||||
# ...
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
#
|
||||
# Buenos Aires (BA), Capital Federal (CF),
|
||||
@@ -530,6 +569,10 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
|
||||
-3:00 - ART
|
||||
#
|
||||
# San Luis (SL)
|
||||
|
||||
Rule SanLuis 2008 max - Mar Sun>=8 0:00 0 -
|
||||
Rule SanLuis 2007 max - Oct Sun>=8 0:00 1:00 S
|
||||
|
||||
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
||||
-4:16:48 - CMT 1920 May
|
||||
-4:00 - ART 1930 Dec
|
||||
@@ -544,8 +587,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
||||
-3:00 - ART 2004 May 31
|
||||
-4:00 - WART 2004 Jul 25
|
||||
-3:00 Arg AR%sT 2008 Jan 21
|
||||
-3:00 - ART 2009 Mar 15
|
||||
-4:00 Arg WAR%sT
|
||||
-4:00 SanLuis WAR%sT
|
||||
#
|
||||
# Santa Cruz (SC)
|
||||
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
|
||||
|
||||
@@ -371,21 +371,21 @@ printcpuinfo(void)
|
||||
switch (cpu_vendor_id) {
|
||||
case CPU_VENDOR_AMD:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
AMD64_CPU_FAMILY(cpu_id) >= 0x10 ||
|
||||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
|
||||
cpu_id == 0x60fb2)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_INTEL:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
(AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xe) ||
|
||||
(AMD64_CPU_FAMILY(cpu_id) == 0xf &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0x3))
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0x3))
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf &&
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf &&
|
||||
(rdmsr(0x1203) & 0x100000000ULL) == 0)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
@@ -607,6 +607,21 @@ print_AMD_info(void)
|
||||
printf(", %d lines/tag", (regs[2] >> 8) & 0x0f);
|
||||
print_AMD_l2_assoc((regs[2] >> 12) & 0x0f);
|
||||
}
|
||||
|
||||
/*
|
||||
* Opteron Rev E shows a bug as in very rare occasions a read memory
|
||||
* barrier is not performed as expected if it is followed by a
|
||||
* non-atomic read-modify-write instruction.
|
||||
* As long as that bug pops up very rarely (intensive machine usage
|
||||
* on other operating systems generally generates one unexplainable
|
||||
* crash any 2 months) and as long as a model specific fix would be
|
||||
* impratical at this stage, print out a warning string if the broken
|
||||
* model and family are identified.
|
||||
*/
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
|
||||
CPUID_TO_MODEL(cpu_id) <= 0x3f)
|
||||
printf("WARNING: This architecture revision has known SMP "
|
||||
"hardware bugs which may cause random instability\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -154,8 +154,8 @@ initializecpu(void)
|
||||
pg_nx = PG_NX;
|
||||
}
|
||||
if (cpu_vendor_id == CPU_VENDOR_CENTAUR &&
|
||||
AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf)
|
||||
CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
init_via();
|
||||
|
||||
/*
|
||||
|
||||
@@ -275,8 +275,8 @@ msi_init(void)
|
||||
case CPU_VENDOR_AMD:
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf)
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
|
||||
@@ -313,7 +313,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -168,10 +168,10 @@
|
||||
#define CPUID_FAMILY 0x00000f00
|
||||
#define CPUID_EXT_MODEL 0x000f0000
|
||||
#define CPUID_EXT_FAMILY 0x0ff00000
|
||||
#define AMD64_CPU_MODEL(id) \
|
||||
#define CPUID_TO_MODEL(id) \
|
||||
((((id) & CPUID_MODEL) >> 4) | \
|
||||
(((id) & CPUID_EXT_MODEL) >> 12))
|
||||
#define AMD64_CPU_FAMILY(id) \
|
||||
#define CPUID_TO_FAMILY(id) \
|
||||
((((id) & CPUID_FAMILY) >> 8) + \
|
||||
(((id) & CPUID_EXT_FAMILY) >> 20))
|
||||
|
||||
|
||||
@@ -91,6 +91,10 @@ linux_to_bsd_sigaltstack(int lsa)
|
||||
return (bsa);
|
||||
}
|
||||
|
||||
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
|
||||
l_size_t len, l_int prot, l_int flags, l_int fd,
|
||||
l_loff_t pos);
|
||||
|
||||
int
|
||||
bsd_to_linux_sigaltstack(int bsa)
|
||||
{
|
||||
@@ -759,12 +763,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
|
||||
#define STACK_SIZE (2 * 1024 * 1024)
|
||||
#define GUARD_SIZE (4 * PAGE_SIZE)
|
||||
|
||||
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
|
||||
|
||||
int
|
||||
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
{
|
||||
struct l_mmap_argv linux_args;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap2))
|
||||
@@ -773,14 +774,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
args->flags, args->fd, args->pgoff);
|
||||
#endif
|
||||
|
||||
linux_args.addr = PTROUT(args->addr);
|
||||
linux_args.len = args->len;
|
||||
linux_args.prot = args->prot;
|
||||
linux_args.flags = args->flags;
|
||||
linux_args.fd = args->fd;
|
||||
linux_args.pgoff = args->pgoff;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, PTROUT(args->addr), args->len, args->prot,
|
||||
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
|
||||
PAGE_SIZE));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -799,15 +795,15 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
|
||||
linux_args.addr, linux_args.len, linux_args.prot,
|
||||
linux_args.flags, linux_args.fd, linux_args.pgoff);
|
||||
#endif
|
||||
if ((linux_args.pgoff % PAGE_SIZE) != 0)
|
||||
return (EINVAL);
|
||||
linux_args.pgoff /= PAGE_SIZE;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
|
||||
linux_args.prot, linux_args.flags, linux_args.fd,
|
||||
(uint32_t)linux_args.pgoff));
|
||||
}
|
||||
|
||||
static int
|
||||
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
|
||||
l_int flags, l_int fd, l_loff_t pos)
|
||||
{
|
||||
struct proc *p = td->td_proc;
|
||||
struct mmap_args /* {
|
||||
@@ -830,21 +826,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* Linux mmap(2):
|
||||
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
|
||||
*/
|
||||
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
|
||||
(linux_args->flags & LINUX_MAP_PRIVATE)))
|
||||
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
|
||||
return (EINVAL);
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_SHARED)
|
||||
if (flags & LINUX_MAP_SHARED)
|
||||
bsd_args.flags |= MAP_SHARED;
|
||||
if (linux_args->flags & LINUX_MAP_PRIVATE)
|
||||
if (flags & LINUX_MAP_PRIVATE)
|
||||
bsd_args.flags |= MAP_PRIVATE;
|
||||
if (linux_args->flags & LINUX_MAP_FIXED)
|
||||
if (flags & LINUX_MAP_FIXED)
|
||||
bsd_args.flags |= MAP_FIXED;
|
||||
if (linux_args->flags & LINUX_MAP_ANON)
|
||||
if (flags & LINUX_MAP_ANON)
|
||||
bsd_args.flags |= MAP_ANON;
|
||||
else
|
||||
bsd_args.flags |= MAP_NOSYNC;
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
|
||||
if (flags & LINUX_MAP_GROWSDOWN)
|
||||
bsd_args.flags |= MAP_STACK;
|
||||
|
||||
/*
|
||||
@@ -852,12 +847,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* on Linux/i386. We do this to ensure maximum compatibility.
|
||||
* Linux/ia64 does the same in i386 emulation mode.
|
||||
*/
|
||||
bsd_args.prot = linux_args->prot;
|
||||
bsd_args.prot = prot;
|
||||
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
|
||||
bsd_args.prot |= PROT_READ | PROT_EXEC;
|
||||
|
||||
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
|
||||
if (bsd_args.fd != -1) {
|
||||
/*
|
||||
* Linux follows Solaris mmap(2) description:
|
||||
@@ -882,7 +877,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
fdrop(fp, td);
|
||||
}
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
|
||||
if (flags & LINUX_MAP_GROWSDOWN) {
|
||||
/*
|
||||
* The Linux MAP_GROWSDOWN option does not limit auto
|
||||
* growth of the region. Linux mmap with this option
|
||||
@@ -905,8 +900,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* fixed size of (STACK_SIZE - GUARD_SIZE).
|
||||
*/
|
||||
|
||||
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
|
||||
p->p_vmspace->vm_maxsaddr) {
|
||||
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
|
||||
/*
|
||||
* Some Linux apps will attempt to mmap
|
||||
* thread stacks near the top of their
|
||||
@@ -937,19 +931,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* we map the full stack, since we don't have a way
|
||||
* to autogrow it.
|
||||
*/
|
||||
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
if (len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - linux_args->len);
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - len);
|
||||
bsd_args.len = STACK_SIZE - GUARD_SIZE;
|
||||
}
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
}
|
||||
bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE;
|
||||
bsd_args.pos = pos;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap))
|
||||
|
||||
@@ -550,7 +550,8 @@ vdev_raidz_read(vdev_t *vdev, const blkptr_t *bp, void *buf,
|
||||
uint64_t s = psize >> unit_shift;
|
||||
uint64_t f = b % dcols;
|
||||
uint64_t o = (b / dcols) << unit_shift;
|
||||
int q, r, c, c1, bc, col, acols, coff, devidx, asize, n;
|
||||
uint64_t q, r, coff;
|
||||
int c, c1, bc, col, acols, devidx, asize, n;
|
||||
static raidz_col_t cols[16];
|
||||
raidz_col_t *rc, *rc1;
|
||||
|
||||
|
||||
@@ -1657,6 +1657,10 @@ device siis
|
||||
# The 'ATA' driver supports all ATA and ATAPI devices, including PC Card
|
||||
# devices. You only need one "device ata" for it to find all
|
||||
# PCI and PC Card ATA/ATAPI devices on modern machines.
|
||||
# Alternatively, individual bus and chipset drivers may be chosen by using
|
||||
# the 'atacore' driver then selecting the drivers on a per vendor basis.
|
||||
# For example to build a system which only supports a VIA chipset,
|
||||
# omit 'ata' and include the 'atacore', 'atapci' and 'atavia' drivers.
|
||||
device ata
|
||||
device atadisk # ATA disk drives
|
||||
device ataraid # ATA RAID drives
|
||||
@@ -1665,6 +1669,39 @@ device atapifd # ATAPI floppy drives
|
||||
device atapist # ATAPI tape drives
|
||||
device atapicam # emulate ATAPI devices as SCSI ditto via CAM
|
||||
# needs CAM to be present (scbus & pass)
|
||||
|
||||
# Modular ATA
|
||||
#device atacore # Core ATA functionality
|
||||
#device atacard # CARDBUS support
|
||||
#device atabus # PC98 cbus support
|
||||
#device ataisa # ISA bus support
|
||||
#device atapci # PCI bus support; only generic chipset support
|
||||
|
||||
# PCI ATA chipsets
|
||||
#device ataahci # AHCI SATA
|
||||
#device ataacard # ACARD
|
||||
#device ataacerlabs # Acer Labs Inc. (ALI)
|
||||
#device ataadaptec # Adaptec
|
||||
#device ataamd # American Micro Devices (AMD)
|
||||
#device ataati # ATI
|
||||
#device atacenatek # Cenatek
|
||||
#device atacypress # Cypress
|
||||
#device atacyrix # Cyrix
|
||||
#device atahighpoint # HighPoint
|
||||
#device ataintel # Intel
|
||||
#device ataite # Integrated Technology Inc. (ITE)
|
||||
#device atajmicron # JMicron
|
||||
#device atamarvell # Marvell
|
||||
#device atamicron # Micron
|
||||
#device atanational # National
|
||||
#device atanetcell # NetCell
|
||||
#device atanvidia # nVidia
|
||||
#device atapromise # Promise
|
||||
#device ataserverworks # ServerWorks
|
||||
#device atasiliconimage # Silicon Image Inc. (SiI) (formerly CMD)
|
||||
#device atasis # Silicon Integrated Systems Corp.(SiS)
|
||||
#device atavia # VIA Technologies Inc.
|
||||
|
||||
#
|
||||
# For older non-PCI, non-PnPBIOS systems, these are the hints lines to add:
|
||||
hint.ata.0.at="isa"
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
TYPE="FreeBSD"
|
||||
REVISION="8.0"
|
||||
BRANCH="RC2"
|
||||
BRANCH="RELEASE"
|
||||
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
|
||||
BRANCH=${BRANCH_OVERRIDE}
|
||||
fi
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
** 1.20.00.14 02/05/2007 Erich Chen bug fix for incorrect ccb_h.status report
|
||||
** and cause g_vfs_done() read write error
|
||||
** 1.20.00.15 10/10/2007 Erich Chen support new RAID adapter type ARC120x
|
||||
** 1.20.00.16 10/10/2009 Erich Chen Bug fix for RAID adapter type ARC120x
|
||||
** bus_dmamem_alloc() with BUS_DMA_ZERO
|
||||
******************************************************************************************
|
||||
* $FreeBSD$
|
||||
*/
|
||||
@@ -2903,7 +2905,7 @@ static u_int32_t arcmsr_initialize(device_t dev)
|
||||
}
|
||||
/* Allocation for our srbs */
|
||||
if(bus_dmamem_alloc(acb->srb_dmat, (void **)&acb->uncacheptr
|
||||
, BUS_DMA_WAITOK | BUS_DMA_COHERENT, &acb->srb_dmamap) != 0) {
|
||||
, BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, &acb->srb_dmamap) != 0) {
|
||||
bus_dma_tag_destroy(acb->srb_dmat);
|
||||
bus_dma_tag_destroy(acb->dm_segs_dmat);
|
||||
bus_dma_tag_destroy(acb->parent_dmat);
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
**************************************************************************
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.15 2007-10-07"
|
||||
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.16 2009-10-10"
|
||||
#define ARCMSR_SCSI_INITIATOR_ID 255
|
||||
#define ARCMSR_DEV_SECTOR_SIZE 512
|
||||
#define ARCMSR_MAX_XFER_SECTORS 4096
|
||||
|
||||
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
|
||||
|
||||
/* enable control access */
|
||||
pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
|
||||
|
||||
/* MCP55 seems to need some time to allow r_res2 read. */
|
||||
DELAY(10);
|
||||
if (ctlr->chip->cfg1 & NVQ) {
|
||||
/* clear interrupt status */
|
||||
ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
|
||||
|
||||
@@ -2654,7 +2654,7 @@ igb_dma_malloc(struct adapter *adapter, bus_size_t size,
|
||||
int error;
|
||||
|
||||
error = bus_dma_tag_create(bus_get_dma_tag(adapter->dev), /* parent */
|
||||
IGB_DBA_ALIGN, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
@@ -2867,7 +2867,7 @@ igb_allocate_transmit_buffers(struct tx_ring *txr)
|
||||
* Setup DMA descriptor areas.
|
||||
*/
|
||||
if ((error = bus_dma_tag_create(NULL, /* parent */
|
||||
PAGE_SIZE, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
@@ -3554,7 +3554,7 @@ igb_allocate_receive_buffers(struct rx_ring *rxr)
|
||||
** it may not always use this.
|
||||
*/
|
||||
if ((error = bus_dma_tag_create(NULL, /* parent */
|
||||
PAGE_SIZE, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
|
||||
+11
-21
@@ -193,6 +193,8 @@ isp_sbus_attach(device_t dev)
|
||||
isp->isp_param = &sbs->sbus_param;
|
||||
isp->isp_osinfo.pc.ptr = &sbs->sbus_spi;
|
||||
isp->isp_revision = 0; /* XXX */
|
||||
isp->isp_dev = dev;
|
||||
isp->isp_nchan = 1;
|
||||
ISP_SET_PC(isp, 0, role, role);
|
||||
|
||||
/*
|
||||
@@ -316,18 +318,16 @@ isp_sbus_attach(device_t dev)
|
||||
goto bad;
|
||||
}
|
||||
isp_init(isp);
|
||||
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_INITSTATE) {
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
}
|
||||
isp_attach(isp);
|
||||
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_RUNSTATE) {
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
if (isp->isp_state == ISP_INITSTATE) {
|
||||
isp->isp_state = ISP_RUNSTATE;
|
||||
}
|
||||
ISP_UNLOCK(isp);
|
||||
if (isp_attach(isp)) {
|
||||
ISP_LOCK(isp);
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
}
|
||||
return (0);
|
||||
|
||||
bad:
|
||||
@@ -345,13 +345,10 @@ bad:
|
||||
}
|
||||
|
||||
if (regs) {
|
||||
(void) bus_release_resource(dev, 0, 0, regs);
|
||||
(void) bus_release_resource(dev, SYS_RES_MEMORY, 0, regs);
|
||||
}
|
||||
|
||||
if (sbs) {
|
||||
if (sbs->sbus_isp.isp_param) {
|
||||
free(sbs->sbus_isp.isp_param, M_DEVBUF);
|
||||
}
|
||||
free(sbs, M_DEVBUF);
|
||||
}
|
||||
return (ENXIO);
|
||||
@@ -584,13 +581,6 @@ dma2(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
|
||||
isp = mp->isp;
|
||||
rq = mp->rq;
|
||||
if (nseg) {
|
||||
if (sizeof (bus_addr_t) > 4) {
|
||||
if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) {
|
||||
rq->req_header.rqs_entry_type = RQSTYPE_T3RQS;
|
||||
} else if (rq->req_header.rqs_entry_type == RQSTYPE_REQUEST) {
|
||||
rq->req_header.rqs_entry_type = RQSTYPE_A64;
|
||||
}
|
||||
}
|
||||
if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) {
|
||||
bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, BUS_DMASYNC_PREREAD);
|
||||
ddir = ISP_FROM_DEVICE;
|
||||
|
||||
@@ -8582,7 +8582,7 @@ sym_pci_attach(device_t dev)
|
||||
* Allocate a tag for the DMA of user data.
|
||||
*/
|
||||
if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24),
|
||||
BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
|
||||
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
|
||||
NULL, NULL,
|
||||
BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG,
|
||||
(1<<24), 0, busdma_lock_mutex, &np->mtx,
|
||||
|
||||
+51
-12
@@ -247,8 +247,8 @@ static const uint8_t ukbd_trtab[256] = {
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 68 - 6F */
|
||||
NN, NN, NN, NN, 115, 108, 111, 113, /* 70 - 77 */
|
||||
109, 110, 112, 118, 114, 116, 117, 119, /* 78 - 7F */
|
||||
121, 120, NN, NN, NN, NN, NN, 115, /* 80 - 87 */
|
||||
112, 125, 121, 123, NN, NN, NN, NN, /* 88 - 8F */
|
||||
121, 120, NN, NN, NN, NN, NN, 123, /* 80 - 87 */
|
||||
124, 125, 126, 127, 128, NN, NN, NN, /* 88 - 8F */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 90 - 97 */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 98 - 9F */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* A0 - A7 */
|
||||
@@ -1636,20 +1636,59 @@ static int
|
||||
ukbd_key2scan(struct ukbd_softc *sc, int code, int shift, int up)
|
||||
{
|
||||
static const int scan[] = {
|
||||
0x1c, 0x1d, 0x35,
|
||||
0x37 | SCAN_PREFIX_SHIFT, /* PrintScreen */
|
||||
0x38, 0x47, 0x48, 0x49, 0x4b, 0x4d, 0x4f,
|
||||
0x50, 0x51, 0x52, 0x53,
|
||||
0x46, /* XXX Pause/Break */
|
||||
0x5b, 0x5c, 0x5d,
|
||||
/* 89 */
|
||||
0x11c, /* Enter */
|
||||
/* 90-99 */
|
||||
0x11d, /* Ctrl-R */
|
||||
0x135, /* Divide */
|
||||
0x137 | SCAN_PREFIX_SHIFT, /* PrintScreen */
|
||||
0x138, /* Alt-R */
|
||||
0x147, /* Home */
|
||||
0x148, /* Up */
|
||||
0x149, /* PageUp */
|
||||
0x14b, /* Left */
|
||||
0x14d, /* Right */
|
||||
0x14f, /* End */
|
||||
/* 100-109 */
|
||||
0x150, /* Down */
|
||||
0x151, /* PageDown */
|
||||
0x152, /* Insert */
|
||||
0x153, /* Delete */
|
||||
0x146, /* XXX Pause/Break */
|
||||
0x15b, /* Win_L(Super_L) */
|
||||
0x15c, /* Win_R(Super_R) */
|
||||
0x15d, /* Application(Menu) */
|
||||
|
||||
/* SUN TYPE 6 USB KEYBOARD */
|
||||
0x68, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
|
||||
0x64, 0x65, 0x66, 0x67, 0x25, 0x1f, 0x1e,
|
||||
0x20,
|
||||
0x168, /* Sun Type 6 Help */
|
||||
0x15e, /* Sun Type 6 Stop */
|
||||
/* 110 - 119 */
|
||||
0x15f, /* Sun Type 6 Again */
|
||||
0x160, /* Sun Type 6 Props */
|
||||
0x161, /* Sun Type 6 Undo */
|
||||
0x162, /* Sun Type 6 Front */
|
||||
0x163, /* Sun Type 6 Copy */
|
||||
0x164, /* Sun Type 6 Open */
|
||||
0x165, /* Sun Type 6 Paste */
|
||||
0x166, /* Sun Type 6 Find */
|
||||
0x167, /* Sun Type 6 Cut */
|
||||
0x125, /* Sun Type 6 Mute */
|
||||
/* 120 - 128 */
|
||||
0x11f, /* Sun Type 6 VolumeDown */
|
||||
0x11e, /* Sun Type 6 VolumeUp */
|
||||
0x120, /* Sun Type 6 PowerDown */
|
||||
|
||||
/* Japanese 106/109 keyboard */
|
||||
0x73, /* Keyboard Intl' 1 (backslash / underscore) */
|
||||
0x70, /* Keyboard Intl' 2 (Katakana / Hiragana) */
|
||||
0x7d, /* Keyboard Intl' 3 (Yen sign) (Not using in jp106/109) */
|
||||
0x79, /* Keyboard Intl' 4 (Henkan) */
|
||||
0x7b, /* Keyboard Intl' 5 (Muhenkan) */
|
||||
0x5c, /* Keyboard Intl' 6 (Keypad ,) (For PC-9821 layout) */
|
||||
};
|
||||
|
||||
if ((code >= 89) && (code < (89 + (sizeof(scan) / sizeof(scan[0]))))) {
|
||||
code = scan[code - 89] | SCAN_PREFIX_E0;
|
||||
code = scan[code - 89];
|
||||
}
|
||||
/* Pause/Break */
|
||||
if ((code == 104) && (!(shift & (MOD_CONTROL_L | MOD_CONTROL_R)))) {
|
||||
|
||||
@@ -112,6 +112,7 @@ struct usb_xfer_flags_int {
|
||||
uint8_t curr_dma_set:1; /* used by USB HC/DC driver */
|
||||
uint8_t can_cancel_immed:1; /* set if USB transfer can be
|
||||
* cancelled immediately */
|
||||
uint8_t doing_callback:1; /* set if executing the callback */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -1785,8 +1785,18 @@ usbd_transfer_drain(struct usb_xfer *xfer)
|
||||
|
||||
usbd_transfer_stop(xfer);
|
||||
|
||||
while (usbd_transfer_pending(xfer)) {
|
||||
while (usbd_transfer_pending(xfer) ||
|
||||
xfer->flags_int.doing_callback) {
|
||||
|
||||
/*
|
||||
* It is allowed that the callback can drop its
|
||||
* transfer mutex. In that case checking only
|
||||
* "usbd_transfer_pending()" is not enough to tell if
|
||||
* the USB transfer is fully drained. We also need to
|
||||
* check the internal "doing_callback" flag.
|
||||
*/
|
||||
xfer->flags_int.draining = 1;
|
||||
|
||||
/*
|
||||
* Wait until the current outstanding USB
|
||||
* transfer is complete !
|
||||
@@ -2031,6 +2041,9 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
|
||||
/* get next USB transfer in the queue */
|
||||
info->done_q.curr = NULL;
|
||||
|
||||
/* set flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 1;
|
||||
|
||||
USB_BUS_UNLOCK(info->bus);
|
||||
USB_BUS_LOCK_ASSERT(info->bus, MA_NOTOWNED);
|
||||
|
||||
@@ -2083,12 +2096,17 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
|
||||
if ((!xfer->flags_int.open) &&
|
||||
(xfer->flags_int.started) &&
|
||||
(xfer->usb_state == USB_ST_ERROR)) {
|
||||
/* clear flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 0;
|
||||
/* try to loop, but not recursivly */
|
||||
usb_command_wrapper(&info->done_q, xfer);
|
||||
return;
|
||||
}
|
||||
|
||||
done:
|
||||
/* clear flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 0;
|
||||
|
||||
/*
|
||||
* Check if we are draining.
|
||||
*/
|
||||
|
||||
@@ -327,7 +327,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -83,12 +83,6 @@ __FBSDID("$FreeBSD$");
|
||||
#define AMD_10H_11H_CUR_DID(msr) (((msr) >> 6) & 0x07)
|
||||
#define AMD_10H_11H_CUR_FID(msr) ((msr) & 0x3F)
|
||||
|
||||
#if defined(__amd64__)
|
||||
#define CPU_FAMILY(id) AMD64_CPU_FAMILY(id)
|
||||
#elif defined(__i386__)
|
||||
#define CPU_FAMILY(id) I386_CPU_FAMILY(id)
|
||||
#endif
|
||||
|
||||
#define HWPSTATE_DEBUG(dev, msg...) \
|
||||
do{ \
|
||||
if(hwpstate_verbose) \
|
||||
@@ -302,7 +296,7 @@ hwpstate_identify(driver_t *driver, device_t parent)
|
||||
if (device_find_child(parent, "hwpstate", -1) != NULL)
|
||||
return;
|
||||
|
||||
if (cpu_vendor_id != CPU_VENDOR_AMD || CPU_FAMILY(cpu_id) < 0x10)
|
||||
if (cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -405,7 +399,7 @@ hwpstate_get_info_from_msr(device_t dev)
|
||||
uint64_t msr;
|
||||
int family, i, fid, did;
|
||||
|
||||
family = CPU_FAMILY(cpu_id);
|
||||
family = CPUID_TO_FAMILY(cpu_id);
|
||||
sc = device_get_softc(dev);
|
||||
/* Get pstate count */
|
||||
msr = rdmsr(MSR_AMD_10H_11H_LIMIT);
|
||||
|
||||
@@ -858,21 +858,21 @@ printcpuinfo(void)
|
||||
switch (cpu_vendor_id) {
|
||||
case CPU_VENDOR_AMD:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
I386_CPU_FAMILY(cpu_id) >= 0x10 ||
|
||||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
|
||||
cpu_id == 0x60fb2)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_INTEL:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xe) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0xf &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0x3))
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0x3))
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xf &&
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf &&
|
||||
(rdmsr(0x1203) & 0x100000000ULL) == 0)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
@@ -1106,8 +1106,8 @@ finishidentcpu(void)
|
||||
* XXX This is only done on the BSP package.
|
||||
*/
|
||||
if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4 &&
|
||||
((I386_CPU_FAMILY(cpu_id) == 0xf && I386_CPU_MODEL(cpu_id) >= 0x3) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0x6 && I386_CPU_MODEL(cpu_id) >= 0xe))) {
|
||||
((CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x3) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 && CPUID_TO_MODEL(cpu_id) >= 0xe))) {
|
||||
uint64_t msr;
|
||||
msr = rdmsr(MSR_IA32_MISC_ENABLE);
|
||||
if ((msr & 0x400000ULL) != 0) {
|
||||
@@ -1303,6 +1303,21 @@ print_AMD_info(void)
|
||||
(amd_whcr & 0x0100) ? "Enable" : "Disable");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Opteron Rev E shows a bug as in very rare occasions a read memory
|
||||
* barrier is not performed as expected if it is followed by a
|
||||
* non-atomic read-modify-write instruction.
|
||||
* As long as that bug pops up very rarely (intensive machine usage
|
||||
* on other operating systems generally generates one unexplainable
|
||||
* crash any 2 months) and as long as a model specific fix would be
|
||||
* impratical at this stage, print out a warning string if the broken
|
||||
* model and family are identified.
|
||||
*/
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
|
||||
CPUID_TO_MODEL(cpu_id) <= 0x3f)
|
||||
printf("WARNING: This architecture revision has known SMP "
|
||||
"hardware bugs which may cause random instability\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
+2
-2
@@ -275,8 +275,8 @@ msi_init(void)
|
||||
case CPU_VENDOR_AMD:
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xf)
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
|
||||
@@ -484,7 +484,7 @@ pmap_init_pat(void)
|
||||
return;
|
||||
|
||||
if (cpu_vendor_id != CPU_VENDOR_INTEL ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 6 && I386_CPU_MODEL(cpu_id) >= 0xe)) {
|
||||
(CPUID_TO_FAMILY(cpu_id) == 6 && CPUID_TO_MODEL(cpu_id) >= 0xe)) {
|
||||
/*
|
||||
* Leave the indices 0-3 at the default of WB, WT, UC, and UC-.
|
||||
* Program 4 and 5 as WP and WC.
|
||||
|
||||
@@ -165,11 +165,11 @@
|
||||
#define CPUID_FAMILY 0x00000f00
|
||||
#define CPUID_EXT_MODEL 0x000f0000
|
||||
#define CPUID_EXT_FAMILY 0x0ff00000
|
||||
#define I386_CPU_MODEL(id) \
|
||||
#define CPUID_TO_MODEL(id) \
|
||||
((((id) & CPUID_MODEL) >> 4) | \
|
||||
((((id) & CPUID_FAMILY) >= 0x600) ? \
|
||||
(((id) & CPUID_EXT_MODEL) >> 12) : 0))
|
||||
#define I386_CPU_FAMILY(id) \
|
||||
#define CPUID_TO_FAMILY(id) \
|
||||
((((id) & CPUID_FAMILY) >> 8) + \
|
||||
((((id) & CPUID_FAMILY) == 0xf00) ? \
|
||||
(((id) & CPUID_EXT_FAMILY) >> 20) : 0))
|
||||
|
||||
@@ -93,6 +93,10 @@ struct l_old_select_argv {
|
||||
struct l_timeval *timeout;
|
||||
};
|
||||
|
||||
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
|
||||
l_size_t len, l_int prot, l_int flags, l_int fd,
|
||||
l_loff_t pos);
|
||||
|
||||
int
|
||||
linux_to_bsd_sigaltstack(int lsa)
|
||||
{
|
||||
@@ -591,12 +595,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
|
||||
#define STACK_SIZE (2 * 1024 * 1024)
|
||||
#define GUARD_SIZE (4 * PAGE_SIZE)
|
||||
|
||||
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
|
||||
|
||||
int
|
||||
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
{
|
||||
struct l_mmap_argv linux_args;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap2))
|
||||
@@ -605,14 +606,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
args->flags, args->fd, args->pgoff);
|
||||
#endif
|
||||
|
||||
linux_args.addr = args->addr;
|
||||
linux_args.len = args->len;
|
||||
linux_args.prot = args->prot;
|
||||
linux_args.flags = args->flags;
|
||||
linux_args.fd = args->fd;
|
||||
linux_args.pgoff = args->pgoff * PAGE_SIZE;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, args->addr, args->len, args->prot,
|
||||
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
|
||||
PAGE_SIZE));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -632,11 +628,14 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
|
||||
linux_args.flags, linux_args.fd, linux_args.pgoff);
|
||||
#endif
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
|
||||
linux_args.prot, linux_args.flags, linux_args.fd,
|
||||
(uint32_t)linux_args.pgoff));
|
||||
}
|
||||
|
||||
static int
|
||||
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
|
||||
l_int flags, l_int fd, l_loff_t pos)
|
||||
{
|
||||
struct proc *p = td->td_proc;
|
||||
struct mmap_args /* {
|
||||
@@ -659,21 +658,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* Linux mmap(2):
|
||||
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
|
||||
*/
|
||||
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
|
||||
(linux_args->flags & LINUX_MAP_PRIVATE)))
|
||||
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
|
||||
return (EINVAL);
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_SHARED)
|
||||
if (flags & LINUX_MAP_SHARED)
|
||||
bsd_args.flags |= MAP_SHARED;
|
||||
if (linux_args->flags & LINUX_MAP_PRIVATE)
|
||||
if (flags & LINUX_MAP_PRIVATE)
|
||||
bsd_args.flags |= MAP_PRIVATE;
|
||||
if (linux_args->flags & LINUX_MAP_FIXED)
|
||||
if (flags & LINUX_MAP_FIXED)
|
||||
bsd_args.flags |= MAP_FIXED;
|
||||
if (linux_args->flags & LINUX_MAP_ANON)
|
||||
if (flags & LINUX_MAP_ANON)
|
||||
bsd_args.flags |= MAP_ANON;
|
||||
else
|
||||
bsd_args.flags |= MAP_NOSYNC;
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
|
||||
if (flags & LINUX_MAP_GROWSDOWN)
|
||||
bsd_args.flags |= MAP_STACK;
|
||||
|
||||
/*
|
||||
@@ -681,12 +679,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* on Linux/i386. We do this to ensure maximum compatibility.
|
||||
* Linux/ia64 does the same in i386 emulation mode.
|
||||
*/
|
||||
bsd_args.prot = linux_args->prot;
|
||||
bsd_args.prot = prot;
|
||||
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
|
||||
bsd_args.prot |= PROT_READ | PROT_EXEC;
|
||||
|
||||
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
|
||||
if (bsd_args.fd != -1) {
|
||||
/*
|
||||
* Linux follows Solaris mmap(2) description:
|
||||
@@ -711,9 +709,9 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
fdrop(fp, td);
|
||||
}
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
|
||||
if (flags & LINUX_MAP_GROWSDOWN) {
|
||||
/*
|
||||
* The linux MAP_GROWSDOWN option does not limit auto
|
||||
* The Linux MAP_GROWSDOWN option does not limit auto
|
||||
* growth of the region. Linux mmap with this option
|
||||
* takes as addr the inital BOS, and as len, the initial
|
||||
* region size. It can then grow down from addr without
|
||||
@@ -734,8 +732,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* fixed size of (STACK_SIZE - GUARD_SIZE).
|
||||
*/
|
||||
|
||||
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
|
||||
p->p_vmspace->vm_maxsaddr) {
|
||||
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
|
||||
/*
|
||||
* Some linux apps will attempt to mmap
|
||||
* thread stacks near the top of their
|
||||
@@ -766,19 +763,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* we map the full stack, since we don't have a way
|
||||
* to autogrow it.
|
||||
*/
|
||||
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
if (len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - linux_args->len);
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - len);
|
||||
bsd_args.len = STACK_SIZE - GUARD_SIZE;
|
||||
}
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
}
|
||||
bsd_args.pos = linux_args->pgoff;
|
||||
bsd_args.pos = pos;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap))
|
||||
|
||||
@@ -139,7 +139,7 @@ device cue # CATC USB Ethernet
|
||||
device kue # Kawasaki LSI USB Ethernet
|
||||
|
||||
# FireWire support
|
||||
device sbp # SCSI over FireWire (need scbus & da)
|
||||
#device sbp # SCSI over FireWire (need scbus & da)
|
||||
|
||||
# Various (pseudo) devices
|
||||
device ether # Ethernet support
|
||||
|
||||
+1
-1
@@ -161,7 +161,7 @@ acl_copyout(struct acl *kernel_acl, void *user_acl, acl_type_t type)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (fuword((char *)user_acl +
|
||||
if (fuword32((char *)user_acl +
|
||||
offsetof(struct acl, acl_maxcnt)) != ACL_MAX_ENTRIES)
|
||||
return (EINVAL);
|
||||
|
||||
|
||||
+10
-6
@@ -963,15 +963,19 @@ flowtable_clean_vnet(void)
|
||||
if (CPU_ABSENT(i))
|
||||
continue;
|
||||
|
||||
thread_lock(curthread);
|
||||
sched_bind(curthread, i);
|
||||
thread_unlock(curthread);
|
||||
if (smp_started == 1) {
|
||||
thread_lock(curthread);
|
||||
sched_bind(curthread, i);
|
||||
thread_unlock(curthread);
|
||||
}
|
||||
|
||||
flowtable_free_stale(ft, NULL);
|
||||
|
||||
thread_lock(curthread);
|
||||
sched_unbind(curthread);
|
||||
thread_unlock(curthread);
|
||||
if (smp_started == 1) {
|
||||
thread_lock(curthread);
|
||||
sched_unbind(curthread);
|
||||
thread_unlock(curthread);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
flowtable_free_stale(ft, NULL);
|
||||
|
||||
@@ -270,7 +270,7 @@ static struct mem_region *pregions;
|
||||
extern u_int phys_avail_count;
|
||||
extern int regions_sz, pregions_sz;
|
||||
extern int ofw_real_mode;
|
||||
static struct ofw_map translations[64];
|
||||
static struct ofw_map translations[96];
|
||||
|
||||
extern struct pmap ofw_pmap;
|
||||
|
||||
@@ -896,6 +896,9 @@ moea64_bridge_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm_offset_t kernele
|
||||
panic("moea64_bootstrap: can't get mmu package");
|
||||
if ((sz = OF_getproplen(mmu, "translations")) == -1)
|
||||
panic("moea64_bootstrap: can't get ofw translation count");
|
||||
if (sz > sizeof(translations))
|
||||
panic("moea64_bootstrap: too many ofw translations (%d)",
|
||||
sz/sizeof(*translations));
|
||||
|
||||
bzero(translations, sz);
|
||||
if (OF_getprop(mmu, "translations", translations, sz) == -1)
|
||||
|
||||
@@ -157,7 +157,7 @@ device kue # Kawasaki LSI USB Ethernet
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
|
||||
# Misc
|
||||
|
||||
@@ -255,7 +255,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -147,6 +147,8 @@ fi
|
||||
|
||||
echo "Writing crash summary to $FILE."
|
||||
|
||||
umask 077
|
||||
|
||||
# Simulate uname
|
||||
ostype=$(echo -e printf '"%s", ostype' | gdb -x /dev/stdin -batch $KERNEL)
|
||||
osrelease=$(echo -e printf '"%s", osrelease' | gdb -x /dev/stdin -batch $KERNEL)
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
This package includes a mfiutil command for administering mfi(4) controllers
|
||||
on FreeBSD.
|
||||
|
||||
Version 1.0.13
|
||||
* Cleaned up warnings in preparation for integration with FreeBSD
|
||||
|
||||
Version 1.0.12
|
||||
* Add 'drive clear' command to wipe drives with all 0x00 characters
|
||||
|
||||
Version 1.0.11
|
||||
* Display serial number for drives
|
||||
* Display location info for drives with 'show config'
|
||||
|
||||
Version 1.0.10
|
||||
* Display min and max stripe size supported by adapters.
|
||||
* Added support for examining the controller event log.
|
||||
|
||||
Version 1.0.9
|
||||
* Display stripe size for volumes.
|
||||
* Added support for setting the stripe size for new volumes.
|
||||
* Fix a regression in 1.0.8 that broke creation of RAID-5 and RAID-50
|
||||
arrays.
|
||||
|
||||
Version 1.0.8
|
||||
* Added support for RAID-60 arrays.
|
||||
* Added 'flash' command to support firmware flashing.
|
||||
|
||||
Version 1.0.7
|
||||
* Renamed 'clear config' to 'clear, 'create volume' to 'create',
|
||||
'delete volume' to 'delete', 'create spare' to 'add', and
|
||||
'delete spare' to 'remove'. The old names still work.
|
||||
* Added support for RAID-6 arrays.
|
||||
|
||||
Version 1.0.6
|
||||
* Added 'show patrol', 'patrol', 'start patrol', and 'stop patrol'
|
||||
commands to manage patrol reads.
|
||||
|
||||
Version 1.0.5
|
||||
* Added 'create volume' and 'delete volume' commands to manage volumes.
|
||||
* Added 'clear config' command to clear entire configuration.
|
||||
* Added more detailed error reporting based on firmware status codes.
|
||||
* Renamed 'progress' command to 'drive progress'.
|
||||
* Added 'volume progress' command to display progress of volume-level
|
||||
activites such as background inits.
|
||||
* Fixed 'create spare' to properly add global spares.
|
||||
|
||||
Version 1.0.4
|
||||
* Added 'create spare' and 'delete spare' commands to manage hot spares.
|
||||
* Added 'good' command to mark unconfigured bad drives as good.
|
||||
* Display more information about hot spares in 'show config'
|
||||
* Allow physical drives to be specified via Exx:Syy similar to megacli
|
||||
* Display onboard memory size in 'show adapter'
|
||||
|
||||
Version 1.0.3
|
||||
* Added 'cache' command to manage cache settings for volumes.
|
||||
* Added 'name' command to name volumes.
|
||||
* Added manpage.
|
||||
|
||||
Version 1.0.2
|
||||
* Added 'show adapter' and 'show battery' commands.
|
||||
* Added RAID level of volumes to 'show config' and 'show volumes'.
|
||||
* Added drive model info to 'show config' and 'show drives'.
|
||||
* Added package firmware version to 'show firmware'.
|
||||
* Added read and write cache status to 'show volumes'.
|
||||
* Map volume IDs to mfidX device names on newer kernels.
|
||||
|
||||
Version 1.0.1
|
||||
* Added 'show firmware' command
|
||||
|
||||
Version 1.0.0
|
||||
* Initial release
|
||||
|
||||
usage: mfiutil [-u unit] <command> ...
|
||||
|
||||
Commands include:
|
||||
version
|
||||
show adapter - display controller information
|
||||
show battery - display battery information
|
||||
show config - display RAID configuration
|
||||
show drives - list physical drives
|
||||
show firmware - list firmware images
|
||||
show volumes - list logical volumes
|
||||
show patrol - display patrol read status
|
||||
fail <drive> - fail a physical drive
|
||||
good <drive> - mark a bad physical drive as good
|
||||
rebuild <drive> - mark failed drive ready for rebuild
|
||||
drive progress <drive> - display status of active operations
|
||||
start rebuild <drive>
|
||||
abort rebuild <drive>
|
||||
locate <drive> <on|off> - toggle drive LED
|
||||
cache <volume> [command [setting]]
|
||||
name <volume> <name>
|
||||
volume progress <volume> - display status of active operations
|
||||
clear - clear volume configuration
|
||||
create <type> [-v] <drive>[,<drive>[,...]] [<drive>[,<drive>[,...]]
|
||||
delete <volume>
|
||||
add <drive> [volume] - add a hot spare
|
||||
remove <drive> - remove a hot spare
|
||||
patrol <disable|auto|manual> [interval [start]]
|
||||
start patrol - start a patrol read
|
||||
stop patrol - stop a patrol read
|
||||
flash <firmware>
|
||||
@@ -1,574 +0,0 @@
|
||||
.\" Copyright (c) 2008, 2009 Yahoo!, Inc.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. The names of the authors may not be used to endorse or promote
|
||||
.\" products derived from this software without specific prior written
|
||||
.\" permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 17, 2008
|
||||
.Dt MFIUTIL 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm mfiutil
|
||||
.Nd Utility for managing LSI MegaRAID SAS controllers
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Cm version
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show adapter
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show battery
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show config
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show drives
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show events
|
||||
.Op Fl c Ar class
|
||||
.Op Fl l Ar locale
|
||||
.Op Fl n Ar count
|
||||
.Op Fl v
|
||||
.Op Ar start Op Ar stop
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show firmware
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show logstate
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show volumes
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm fail Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm good Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm drive progress Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm drive clear Ar drive Brq "start | stop"
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm start rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm abort rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm locate Ar drive Brq "on | off"
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm cache Ar volume Op Ar setting Op Ar value
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm name Ar volume Ar name
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm volume progress Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm clear
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm create Ar type
|
||||
.Op Fl v
|
||||
.Op Fl s Ar stripe_size
|
||||
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm delete Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm add Ar drive Op Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm remove Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm start patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm stop patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm patrol Ar command Op Ar interval Op Ar start
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm flash Ar file
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility can be used to display or modify various parameters on LSI
|
||||
MegaRAID SAS RAID controllers.
|
||||
Each invocation of
|
||||
.Nm
|
||||
consists of zero or more global options followed by a command.
|
||||
Commands may support additional optional or required arguments after the
|
||||
command.
|
||||
.Pp
|
||||
Currently one global option is supported:
|
||||
.Bl -tag -width indent
|
||||
.It Fl u Ar unit
|
||||
.Ar unit
|
||||
specifies the unit of the controller to work with.
|
||||
If no unit is specified,
|
||||
then unit 0 is used.
|
||||
.El
|
||||
.Pp
|
||||
Volumes may be specified in two forms.
|
||||
First,
|
||||
a volume may be identified by its target ID.
|
||||
Second,
|
||||
on the volume may be specified by the corresponding
|
||||
.Em mfidX
|
||||
device,
|
||||
such as
|
||||
.Em mfid0 .
|
||||
Note that this second method only works on OS versions
|
||||
.Dv 6.2-YAHOO-20070510
|
||||
and later.
|
||||
.Pp
|
||||
Drives may be specified in two forms.
|
||||
First,
|
||||
a drive may be identified by its device ID.
|
||||
The device ID for configured drives can be found in
|
||||
.Cm show config .
|
||||
Second,
|
||||
a drive may be identified by its location as
|
||||
.Sm off
|
||||
.Op E Ar xx Ns \&:
|
||||
.Li S Ns Ar yy
|
||||
.Sm on
|
||||
where
|
||||
.Ar xx
|
||||
is the enclosure
|
||||
and
|
||||
.Ar yy
|
||||
is the slot for each drive as displayed in
|
||||
.Cm show drives .
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
utility supports several different groups of commands.
|
||||
The first group of commands provide information about the controller,
|
||||
the volumes it manages, and the drives it controls.
|
||||
The second group of commands are used to manage the physical drives
|
||||
attached to the controller.
|
||||
The third group of commands are used to manage the logical volumes
|
||||
managed by the controller.
|
||||
The fourth group of commands are used to manage the drive configuration for
|
||||
the controller.
|
||||
The fifth group of commands are used to manage controller-wide operations.
|
||||
.Pp
|
||||
The informational commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm version
|
||||
Displays the version of
|
||||
.Nm .
|
||||
.It Cm show adapter
|
||||
Displays information about the RAID controller such as the model number.
|
||||
.It Cm show battery
|
||||
Displays information about the battery from the battery backup unit.
|
||||
.It Cm show config
|
||||
Displays the volume and drive configuration for the controller.
|
||||
Each array is listed along with the physical drives the array is built from.
|
||||
Each volume is listed along with the arrays that the volume spans.
|
||||
If any hot spare drives are configured, then they are listed as well.
|
||||
.It Cm show drives
|
||||
Lists all of the physical drives attached to the controller.
|
||||
.It Xo Cm show events
|
||||
.Op Fl c Ar class
|
||||
.Op Fl l Ar locale
|
||||
.Op Fl n Ar count
|
||||
.Op Fl v
|
||||
.Op Ar start Op Ar stop
|
||||
.Xc
|
||||
Display entries from the controller's event log.
|
||||
The controller maintains a circular buffer of events.
|
||||
Each event is tagged with a class and locale.
|
||||
.Pp
|
||||
The
|
||||
.Ar class
|
||||
parameter limits the output to entries at the specified class or higher.
|
||||
The default class is
|
||||
.Dq warn .
|
||||
The available classes from lowest priority to highest are:
|
||||
.Bl -tag -width -indent
|
||||
.It Cm debug
|
||||
Debug messages.
|
||||
.It Cm progress
|
||||
Periodic progress updates for long-running operations such as background
|
||||
initializations, array rebuilds, or patrol reads.
|
||||
.It Cm info
|
||||
Informational messages such as drive insertions and volume creations.
|
||||
.It Cm warn
|
||||
Indicates that some component may be close to failing.
|
||||
.It Cm crit
|
||||
A component has failed, but no data is lost.
|
||||
For example, a volume becoming degraded due to a drive failure.
|
||||
.It Cm fatal
|
||||
A component has failed resulting in data loss.
|
||||
.It Cm dead
|
||||
The controller itself has died.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Ar locale
|
||||
parameter limits the output to entries for the specified part of the controller.
|
||||
The default locale is
|
||||
.Dq all .
|
||||
The available locales are
|
||||
.Dq volume ,
|
||||
.Dq drive ,
|
||||
.Dq enclousure ,
|
||||
.Dq battery ,
|
||||
.Dq sas ,
|
||||
.Dq controller ,
|
||||
.Dq config ,
|
||||
.Dq cluster ,
|
||||
and
|
||||
.Dq all .
|
||||
.Pp
|
||||
The
|
||||
.Ar count
|
||||
parameter is a debugging aid that specifies the number of events to fetch from
|
||||
the controller for each low-level request.
|
||||
The default is 15 events.
|
||||
.Pp
|
||||
By default, matching event log entries from the previous shutdown up to the
|
||||
present are displayed. This range can be adjusted via the
|
||||
.Ar start
|
||||
and
|
||||
.Ar stop
|
||||
parameters.
|
||||
Each of these parameters can either be specified as a log entry number or as
|
||||
one of the following aliases:
|
||||
.Bl -tag -width -indent
|
||||
.It Cm newest
|
||||
The newest entry in the event log.
|
||||
.It Cm oldest
|
||||
The oldest entry in the event log.
|
||||
.It Cm clear
|
||||
The first entry since the event log was cleared.
|
||||
.It Cm shutdown
|
||||
The entry in the event log corresponding to the last time the controller was
|
||||
cleanly shut down.
|
||||
.It Cm boot
|
||||
The entry in the event log corresponding to the most recent boot.
|
||||
.El
|
||||
.It Cm show firmware
|
||||
Lists all of the firmware images present on the controller.
|
||||
.It Cm show logstate
|
||||
Display the various sequence numbers associated with the event log.
|
||||
.It Cm show patrol
|
||||
Display the status of the controller's patrol read operation.
|
||||
.It Cm show volumes
|
||||
Lists all of the logical volumes managed by the controller.
|
||||
.El
|
||||
.Pp
|
||||
The physical drive management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm fail Ar drive
|
||||
Mark
|
||||
.Ar drive
|
||||
as failed.
|
||||
.Ar Drive
|
||||
must be an online drive that is part of an array.
|
||||
.It Cm good Ar drive
|
||||
Mark
|
||||
.Ar drive
|
||||
as an unconfigured good drive.
|
||||
.Ar Drive
|
||||
must not be part of an existing array.
|
||||
.It Cm rebuild Ar drive
|
||||
Mark a failed
|
||||
.Ar drive
|
||||
that is still part of an array as a good drive suitable for a rebuild.
|
||||
The firmware should kick off an array rebuild on its own if a failed drive
|
||||
is marked as a rebuild drive.
|
||||
.It Cm drive progress Ar drive
|
||||
Report the current progress and estimated completion time of drive operations
|
||||
such as rebuilds or patrol reads.
|
||||
.It Cm drive clear Ar drive Brq "start | stop"
|
||||
Start or stop the writing of all 0x00 characters to a drive.
|
||||
.It Cm start rebuild Ar drive
|
||||
Manually start a rebuild on
|
||||
.Ar drive .
|
||||
.It Cm abort rebuild Ar drive
|
||||
Abort an in-progress rebuild operation on
|
||||
.Ar drive .
|
||||
It can be resumed with the
|
||||
.Cm start rebuild
|
||||
command.
|
||||
.It Cm locate Ar drive Brq "on | off"
|
||||
Change the state of the external LED associated with
|
||||
.Ar drive .
|
||||
.El
|
||||
.Pp
|
||||
The logical volume management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm cache Ar volume Op Ar setting Op Ar value
|
||||
If no
|
||||
.Ar setting
|
||||
argument is supplied, then the current cache policy for
|
||||
.Ar volume
|
||||
is displayed;
|
||||
otherwise,
|
||||
the cache policy for
|
||||
.Ar volume
|
||||
is modified.
|
||||
The optional
|
||||
.Ar setting
|
||||
argument can be one of the following values:
|
||||
.Bl -tag -width indent
|
||||
.It Cm enable
|
||||
Enable caching for both read and write I/O operations.
|
||||
.It Cm disable
|
||||
Disable caching for both read and write I/O operations.
|
||||
.It Cm reads
|
||||
Enable caching only for read I/O operations.
|
||||
.It Cm writes
|
||||
Enable caching only for write I/O operations.
|
||||
.It Cm write-back
|
||||
Use write-back policy for cached writes.
|
||||
.It Cm write-through
|
||||
Use write-through policy for cached writes.
|
||||
.It Cm read-ahead Op Ar value
|
||||
Set the read ahead policy for cached reads.
|
||||
The
|
||||
.Ar value
|
||||
argument can be set to either
|
||||
.Dq none ,
|
||||
.Dq adaptive ,
|
||||
or
|
||||
.Dq always .
|
||||
.It Cm write-cache Op Ar value
|
||||
Control the write caches on the physical drives backing
|
||||
.Ar volume .
|
||||
The
|
||||
.Ar value
|
||||
argument can be set to either
|
||||
.Dq disable ,
|
||||
.Dq enable ,
|
||||
or
|
||||
.Dq default .
|
||||
.Pp
|
||||
In general this setting should be left disabled to avoid data loss when the
|
||||
physical drives lose power.
|
||||
The battery backup of the RAID controller does not save data in the write
|
||||
caches of the physical drives.
|
||||
.El
|
||||
.It Cm name Ar volume Ar name
|
||||
Sets the name of
|
||||
.Ar volume
|
||||
to
|
||||
.Ar name .
|
||||
.It Cm volume progress Ar volume
|
||||
Report the current progress and estimated completion time of volume operations
|
||||
such as consistency checks and initializations.
|
||||
.El
|
||||
.Pp
|
||||
The configuration commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm clear
|
||||
Delete the entire configuration including all volumes, arrays, and spares.
|
||||
.It Xo Cm create Ar type
|
||||
.Op Fl v
|
||||
.Op Fl s Ar stripe_size
|
||||
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Xc
|
||||
Create a new volume.
|
||||
The
|
||||
.Ar type
|
||||
specifies the type of volume to create.
|
||||
Currently supported types include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm jbod
|
||||
Creates a RAID0 volume for each drive specified.
|
||||
Each drive must be specified as a separate argument.
|
||||
.It Cm raid0
|
||||
Creates one RAID0 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid1
|
||||
Creates one RAID1 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid5
|
||||
Creates one RAID5 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid6
|
||||
Creates one RAID6 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid10
|
||||
Creates one RAID10 volume spanning multiple RAID1 arrays.
|
||||
The drives for each RAID1 array are specified as a single drive list.
|
||||
.It Cm raid50
|
||||
Creates one RAID50 volume spanning multiple RAID5 arrays.
|
||||
The drives for each RAID5 array are specified as a single drive list.
|
||||
.It Cm raid60
|
||||
Creates one RAID60 volume spanning multiple RAID6 arrays.
|
||||
The drives for each RAID6 array are specified as a single drive list.
|
||||
.It Cm concat
|
||||
Creates a single volume by concatenating all of the drives in the single drive
|
||||
list.
|
||||
.El
|
||||
.Pp
|
||||
.Sy Note:
|
||||
Not all volume types are supported by all controllers.
|
||||
.Pp
|
||||
If the
|
||||
.Fl v
|
||||
flag is specified after
|
||||
.Ar type ,
|
||||
then more verbose output will be enabled.
|
||||
Currently this just provides notification as drives are added to arrays and
|
||||
arrays to volumes when building the configuration.
|
||||
.Pp
|
||||
The
|
||||
.Fl s
|
||||
.Ar stripe_size
|
||||
parameter allows the stripe size of the array to be set.
|
||||
By default a stripe size of 64K is used.
|
||||
Valid values are 512 through 1M, though the MFI firmware may reject some
|
||||
values.
|
||||
.It Cm delete Ar volume
|
||||
Delete the volume
|
||||
.Ar volume .
|
||||
.It Cm add Ar drive Op Ar volume
|
||||
Mark
|
||||
.Ar drive
|
||||
as a hot spare.
|
||||
.Ar Drive
|
||||
must be in the unconfigured good state.
|
||||
If
|
||||
.Ar volume
|
||||
is specified,
|
||||
then the hot spare will be dedicated to arrays backing that volume.
|
||||
Otherwise,
|
||||
.Ar drive
|
||||
will be used as a global hot spare backing all arrays for this controller.
|
||||
Note that
|
||||
.Ar drive
|
||||
must be as large as the smallest drive in all of the arrays it is going to
|
||||
back.
|
||||
.It Cm remove Ar drive
|
||||
Remove the hot spare
|
||||
.Ar drive
|
||||
from service.
|
||||
It will be placed in the unconfigured good state.
|
||||
.El
|
||||
.Pp
|
||||
The controller management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm patrol Ar command Op Ar interval Op Ar start
|
||||
Set the patrol read operation mode.
|
||||
The
|
||||
.Ar command
|
||||
argument can be one of the following values:
|
||||
.Bl -tag -width indent
|
||||
.It Cm disable
|
||||
Disable patrol reads.
|
||||
.It Cm auto
|
||||
Enable periodic patrol reads initiated by the firmware.
|
||||
The optional
|
||||
.Ar interval
|
||||
argument specifies the interval in seconds between patrol reads.
|
||||
If patrol reads should be run continously,
|
||||
then
|
||||
.Ar interval
|
||||
should consist of the word
|
||||
.Dq continuously .
|
||||
The optional
|
||||
.Ar start
|
||||
argument specifies a non-negative, relative start time for the next patrol read.
|
||||
If an interval or start time is not specified,
|
||||
then the existing setting will be used.
|
||||
.It Cm manual
|
||||
Enable manual patrol reads that are only initiated by the user.
|
||||
.El
|
||||
.It Cm start patrol
|
||||
Start a patrol read operation.
|
||||
.It Cm stop patrol
|
||||
Stop a currently running patrol read operation.
|
||||
.It Cm flash Ar file
|
||||
Updates the flash on the controller with the firmware stored in
|
||||
.Ar file .
|
||||
A reboot is required for the new firmware to take effect.
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
Configure the cache for volume mfid0 to cache only writes:
|
||||
.Pp
|
||||
.Dl Nm Cm cache mfid0 writes
|
||||
.Dl Nm Cm cache mfid0 write-back
|
||||
.Pp
|
||||
Create a RAID5 array spanning the first four disks in the second enclosure:
|
||||
.Pp
|
||||
.Dl Nm Cm create raid5 e1:s0,e1:s1,e1:s2,e1:s4
|
||||
.Pp
|
||||
Configure the first three disks on a controller as JBOD:
|
||||
.Pp
|
||||
.Dl Nm Cm create jbod 0 1 2
|
||||
.Pp
|
||||
Create a RAID10 volume that spans two arrays each of which contains two disks
|
||||
from two different enclosures:
|
||||
.Pp
|
||||
.Dl Nm Cm create raid10 e1:s0,e1:s1 e2:s0,e2:s1
|
||||
.Pp
|
||||
Add drive with the device ID of 4 as a global hot spare:
|
||||
.Pp
|
||||
.Dl Nm Cm add 4
|
||||
.Pp
|
||||
Add the drive in slot 2 in the main chassis as a hot spare for volume mfid0:
|
||||
.Pp
|
||||
.Dl Nm Cm add s2 mfid0
|
||||
.Pp
|
||||
Configure the adapter to run periodic patrol reads once a week with the first
|
||||
patrol read starting in 5 minutes:
|
||||
.Pp
|
||||
.Dl Nm Cm patrol auto 604800 300
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr mfi 4
|
||||
.Sh BUGS
|
||||
On 64-bit OS versions
|
||||
.Dv 6.2-YAHOO-20070514
|
||||
and earlier,
|
||||
the
|
||||
.Xr mfi 4
|
||||
driver does not properly report firmware errors to 32-bit versions of
|
||||
.Nm .
|
||||
As a result,
|
||||
some commands may fail even though they do not report any errors.
|
||||
Reference in new issue
Block a user