Merge ^/head r284644 through r284736.

This commit is contained in:
Dimitry Andric 2015-06-23 18:55:08 +00:00
commit 94f6f93ac8
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/projects/clang-trunk/; revision=284737
134 changed files with 44842 additions and 39427 deletions

View File

@ -408,7 +408,7 @@ UNIVERSE_TARGET?= buildworld
.endif
KERNSRCDIR?= ${.CURDIR}/sys
targets:
targets: .PHONY
@echo "Supported TARGET/TARGET_ARCH pairs for world and kernel targets"
.for target in ${TARGETS}
.for target_arch in ${TARGET_ARCHES_${target}}

View File

@ -1258,7 +1258,7 @@ _bt= _bootstrap-tools
_strfile= games/fortune/strfile
.endif
.if ${MK_CXX} != "no"
.if ${MK_GCC} != "no" && ${MK_CXX} != "no"
_gperf= gnu/usr.bin/gperf
.endif

View File

@ -293,8 +293,8 @@ OLD_FILES+=usr/share/man/man3/nvlist_takev_descriptor.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_number.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_nvlist.3.gz
OLD_FILES+=usr/share/man/man3/nvlist_takev_string.3.gz
# 20150429:
OLD_FILES+=usr/share/docs/papers/hwpmc.ascii.gz
# 20150429: remove never written documentation
OLD_FILES+=usr/share/doc/papers/hwpmc.ascii.gz
# 20150427: test/sys/kern/mmap_test moved to test/sys/vm/mmap_test
OLD_FILES+=usr/tests/sys/kern/mmap_test
# 20150422: zlib.c moved from net to libkern
@ -318,6 +318,42 @@ OLD_FILES+=usr/include/altq/altq_rmclass.h
OLD_FILES+=usr/include/altq/altq_cbq.h
OLD_FILES+=usr/include/altq/altq_rio.h
OLD_DIRS+=usr/include/altq
# 20150330: ntp 4.2.8p1
OLD_FILES+=usr/share/doc/ntp/driver1.html
OLD_FILES+=usr/share/doc/ntp/driver10.html
OLD_FILES+=usr/share/doc/ntp/driver11.html
OLD_FILES+=usr/share/doc/ntp/driver12.html
OLD_FILES+=usr/share/doc/ntp/driver16.html
OLD_FILES+=usr/share/doc/ntp/driver18.html
OLD_FILES+=usr/share/doc/ntp/driver19.html
OLD_FILES+=usr/share/doc/ntp/driver2.html
OLD_FILES+=usr/share/doc/ntp/driver20.html
OLD_FILES+=usr/share/doc/ntp/driver22.html
OLD_FILES+=usr/share/doc/ntp/driver26.html
OLD_FILES+=usr/share/doc/ntp/driver27.html
OLD_FILES+=usr/share/doc/ntp/driver28.html
OLD_FILES+=usr/share/doc/ntp/driver29.html
OLD_FILES+=usr/share/doc/ntp/driver3.html
OLD_FILES+=usr/share/doc/ntp/driver30.html
OLD_FILES+=usr/share/doc/ntp/driver32.html
OLD_FILES+=usr/share/doc/ntp/driver33.html
OLD_FILES+=usr/share/doc/ntp/driver34.html
OLD_FILES+=usr/share/doc/ntp/driver35.html
OLD_FILES+=usr/share/doc/ntp/driver36.html
OLD_FILES+=usr/share/doc/ntp/driver37.html
OLD_FILES+=usr/share/doc/ntp/driver4.html
OLD_FILES+=usr/share/doc/ntp/driver5.html
OLD_FILES+=usr/share/doc/ntp/driver6.html
OLD_FILES+=usr/share/doc/ntp/driver7.html
OLD_FILES+=usr/share/doc/ntp/driver8.html
OLD_FILES+=usr/share/doc/ntp/driver9.html
OLD_FILES+=usr/share/doc/ntp/ldisc.html
OLD_FILES+=usr/share/doc/ntp/measure.html
OLD_FILES+=usr/share/doc/ntp/mx4200data.html
OLD_FILES+=usr/share/doc/ntp/notes.html
OLD_FILES+=usr/share/doc/ntp/patches.html
OLD_FILES+=usr/share/doc/ntp/porting.html
OLD_FILES+=usr/share/man/man1/sntp.1.gz
# 20150329
.if ${TARGET_ARCH} == "arm"
OLD_FILES+=usr/include/bootconfig.h
@ -422,6 +458,8 @@ OLD_FILES+=usr/share/man/man9/splstatclock.9.gz
OLD_FILES+=usr/share/man/man9/spltty.9.gz
OLD_FILES+=usr/share/man/man9/splvm.9.gz
OLD_FILES+=usr/share/man/man9/splx.9.gz
# 20150122: callout changes reverted
OLD_FILES+=usr/share/man/man9/callout_drain_async.9.gz
# 20150118: toeplitz.c moved from netinet to net
OLD_FILES+=usr/include/netinet/toeplitz.h
# 20150118: new clang import which bumps version from 3.5.0 to 3.5.1.
@ -589,6 +627,9 @@ OLD_LIBS+=usr/lib/libxo.so.0
OLD_FILES+=usr/include/net/if_stf.h
OLD_FILES+=usr/include/netinet/in_gif.h
OLD_FILES+=usr/include/netinet6/in6_gif.h
# 20141209: pw tests broken into a file per command
OLD_FILES+=usr/tests/usr.sbin/pw/pw_delete
OLD_FILES+=usr/tests/usr.sbin/pw/pw_modify
# 20141202: update to mandoc CVS 20141201
OLD_FILES+=usr.bin/preconv
OLD_FILES+=share/man/man1/preconv.1.gz
@ -705,6 +746,8 @@ OLD_FILES+=usr/lib/private/libucl.so
OLD_FILES+=usr/lib/private/libucl_p.a
# 20140803: Remove an obsolete man page
OLD_FILES+=usr/share/man/man9/pmap_change_wiring.9.gz
# 20140731
OLD_FILES+=usr/share/man/man9/SYSCTL_ADD_OID.9.gz
# 20140728: libsbuf restored to old version.
OLD_LIBS+=lib/libsbuf.so.7
OLD_LIBS+=usr/lib32/libsbuf.so.7
@ -817,6 +860,12 @@ OLD_FILES+=usr/share/mk/src.opts.mk
OLD_FILES+=usr/tests/sbin/ifconfig/fibs_test
# 20140502: Removal of lindev(4)
OLD_FILES+=usr/share/man/man4/lindev.4.gz
# 20140425
OLD_FILES+=usr/lib/libssp_p.a
OLD_FILES+=usr/lib/libstand_p.a
OLD_FILES+=usr/lib32/libc_pic.a
OLD_FILES+=usr/lib32/libssp_p.a
OLD_FILES+=usr/lib32/libstand_p.a
# 20140314: AppleTalk
OLD_DIRS+=usr/include/netatalk
OLD_FILES+=usr/include/netatalk/aarp.h

View File

@ -104,8 +104,8 @@ dwarf_get_section_max_offsets(Dwarf_Debug dbg, Dwarf_Unsigned *debug_info,
Dwarf_Unsigned *debug_ranges, Dwarf_Unsigned *debug_pubtypes)
{
return (dwarf_get_section_max_offsets(dbg, debug_info, debug_abbrev,
return (dwarf_get_section_max_offsets_b(dbg, debug_info, debug_abbrev,
debug_line, debug_loc, debug_aranges, debug_macinfo,
debug_pubnames, debug_str, debug_frame, debug_ranges,
debug_pubtypes));
debug_pubtypes, NULL));
}

View File

@ -1935,7 +1935,7 @@ struct termescape
/* server requirements */
#define TLS_I_SRV (TLS_I_SRV_CERT | TLS_I_RSA_TMP | TLS_I_VRFY_PATH | \
TLS_I_VRFY_LOC | TLS_I_TRY_DH | TLS_I_DH512 | \
TLS_I_VRFY_LOC | TLS_I_TRY_DH | TLS_I_DH1024 | \
TLS_I_CACHE)
/* client requirements */

View File

@ -42,8 +42,8 @@ ttyv7 "/usr/libexec/getty Pc" xterm off secure
# Serial terminals
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
ttyu0 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu1 "/usr/libexec/getty std.9600" dialup off secure
ttyu2 "/usr/libexec/getty std.9600" dialup off secure
ttyu3 "/usr/libexec/getty std.9600" dialup off secure
ttyu1 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu2 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu3 "/usr/libexec/getty 3wire" vt100 onifconsole secure
# Dumb console
dcons "/usr/libexec/getty std.9600" vt100 off secure

View File

@ -266,6 +266,7 @@ case ${firewall_type} in
# firewall_simple_oif_ipv6: Outside IPv6 network interface.
# firewall_simple_onet_ipv6: Outside IPv6 network prefix.
############
BAD_ADDR_TBL=13
# set these to your outside interface network
oif="$firewall_simple_oif"
@ -290,19 +291,23 @@ case ${firewall_type} in
fi
fi
# define stuff we should never send out or receive in
# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from any to 10.0.0.0/8 via ${oif}
${fwcmd} add deny all from any to 172.16.0.0/12 via ${oif}
${fwcmd} add deny all from any to 192.168.0.0/16 via ${oif}
${fwcmd} table ${BAD_ADDR_TBL} flush
${fwcmd} table ${BAD_ADDR_TBL} add 10.0.0.0/8
${fwcmd} table ${BAD_ADDR_TBL} add 172.16.0.0/12
${fwcmd} table ${BAD_ADDR_TBL} add 192.168.0.0/16
# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
${fwcmd} add deny all from any to 0.0.0.0/8 via ${oif}
${fwcmd} add deny all from any to 169.254.0.0/16 via ${oif}
${fwcmd} add deny all from any to 192.0.2.0/24 via ${oif}
${fwcmd} add deny all from any to 224.0.0.0/4 via ${oif}
${fwcmd} add deny all from any to 240.0.0.0/4 via ${oif}
${fwcmd} table ${BAD_ADDR_TBL} add 0.0.0.0/8
${fwcmd} table ${BAD_ADDR_TBL} add 169.254.0.0/16
${fwcmd} table ${BAD_ADDR_TBL} add 192.0.2.0/24
${fwcmd} table ${BAD_ADDR_TBL} add 224.0.0.0/4
${fwcmd} table ${BAD_ADDR_TBL} add 240.0.0.0/4
${fwcmd} add deny all from any to "table($BAD_ADDR_TBL)" via ${oif}
# Network Address Translation. This rule is placed here deliberately
# so that it does not interfere with the surrounding address-checking
@ -319,20 +324,7 @@ case ${firewall_type} in
;;
esac
# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from 10.0.0.0/8 to any via ${oif}
${fwcmd} add deny all from 172.16.0.0/12 to any via ${oif}
${fwcmd} add deny all from 192.168.0.0/16 to any via ${oif}
# Stop draft-manning-dsua-03.txt (1 May 2000) nets (includes RESERVED-1,
# DHCP auto-configuration, NET-TEST, MULTICAST (class D), and class E)
# on the outside interface
${fwcmd} add deny all from 0.0.0.0/8 to any via ${oif}
${fwcmd} add deny all from 169.254.0.0/16 to any via ${oif}
${fwcmd} add deny all from 192.0.2.0/24 to any via ${oif}
${fwcmd} add deny all from 224.0.0.0/4 to any via ${oif}
${fwcmd} add deny all from 240.0.0.0/4 to any via ${oif}
${fwcmd} add deny all from "table($BAD_ADDR_TBL)" to any via ${oif}
if [ -n "$inet6" ]; then
# Stop unique local unicast address on the outside interface
${fwcmd} add deny all from fc00::/7 to any via ${oif6}

View File

@ -58,9 +58,13 @@ __asm(" .text \n"
" .align 0 \n"
" .globl _start \n"
" _start: \n"
" mov x3, x2 \n" /* cleanup */
" ldr x0, [sp] \n" /* Load argc */
" add x1, sp, #8 \n" /* load argv */
/* TODO: Remove this when the kernel correctly aligns the stack */
" cbnz x0, 1f \n" /* Are we using a new kernel? */
" mov x0, sp \n" /* No, load the args from sp */
" and sp, x0, #~0xf \n" /* And align the stack */
"1: mov x3, x2 \n" /* cleanup */
" add x1, x0, #8 \n" /* load argv */
" ldr x0, [x0] \n" /* load argc */
" add x2, x1, x0, lsl #3 \n" /* env is after argv */
" add x2, x2, #8 \n" /* argv is null terminated */
" b __start ");

View File

@ -515,7 +515,7 @@ FTSENT *
fts_children(FTS *sp, int instr)
{
FTSENT *p;
int fd;
int fd, rc, serrno;
if (instr != 0 && instr != FTS_NAMEONLY) {
errno = EINVAL;
@ -571,11 +571,14 @@ fts_children(FTS *sp, int instr)
if ((fd = _open(".", O_RDONLY | O_CLOEXEC, 0)) < 0)
return (NULL);
sp->fts_child = fts_build(sp, instr);
if (fchdir(fd)) {
(void)_close(fd);
return (NULL);
}
serrno = (sp->fts_child == NULL) ? errno : 0;
rc = fchdir(fd);
if (rc < 0 && serrno == 0)
serrno = errno;
(void)_close(fd);
errno = serrno;
if (rc < 0)
return (NULL);
return (sp->fts_child);
}

View File

@ -254,6 +254,10 @@ CXXABI_1.3.1 {
__cxa_get_exception_ptr;
} CXXABI_1.3;
CXXABI_1.3.6 {
__cxa_deleted_virtual;
} CXXABI_1.3.1;
CXXRT_1.0 {
@ -286,7 +290,7 @@ CXXRT_1.0 {
__cxa_increment_exception_refcount;
__cxa_rethrow_primary_exception;
} CXXABI_1.3.1;
} CXXABI_1.3.6;
GLIBCXX_3.4 {

View File

@ -415,19 +415,28 @@ vm_setup_memory(struct vmctx *ctx, size_t memsize, enum vm_mmap_style vms)
return (0);
}
/*
* Returns a non-NULL pointer if [gaddr, gaddr+len) is entirely contained in
* the lowmem or highmem regions.
*
* In particular return NULL if [gaddr, gaddr+len) falls in guest MMIO region.
* The instruction emulation code depends on this behavior.
*/
void *
vm_map_gpa(struct vmctx *ctx, vm_paddr_t gaddr, size_t len)
{
vm_paddr_t start, end, mapend;
start = gaddr;
end = gaddr + len;
mapend = ctx->highmem ? 4*GB + ctx->highmem : ctx->lowmem;
if (ctx->lowmem > 0) {
if (gaddr < ctx->lowmem && gaddr + len <= ctx->lowmem)
return (ctx->baseaddr + gaddr);
}
if (start <= end && end <= mapend)
return (ctx->baseaddr + start);
else
return (NULL);
if (ctx->highmem > 0) {
if (gaddr >= 4*GB && gaddr + len <= 4*GB + ctx->highmem)
return (ctx->baseaddr + gaddr);
}
return (NULL);
}
size_t

View File

@ -308,7 +308,7 @@ SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtermlib${LIB_SUFFIX}_p.a
SYMLINKS+= libncurses${LIB_SUFFIX}_p.a ${LIBDIR}/libtinfo${LIB_SUFFIX}_p.a
.endif
.if ${.CURDIR:T} == "ncurses"
.if ${.CURDIR:T} == "ncursesw"
.if defined(ENABLE_WIDEC)
DOCSDIR= ${SHAREDIR}/doc/ncurses
DOCS= ncurses-intro.html hackguide.html

View File

@ -1,5 +1,5 @@
.\" $FreeBSD$
.Dd October 30, 2012
.Dd June 22, 2015
.Dt ATRUN 8
.Os
.Sh NAME
@ -14,32 +14,32 @@
runs jobs queued by
.Xr at 1 .
.Pp
Root's
The system
.Xr crontab 5
file
.Pa /etc/crontab
has to contain the line
must contain the line
.Bd -literal
*/5 * * * * root /usr/libexec/atrun
.Ed
.Pp
so that
so
.Nm
gets invoked every five minutes.
is invoked every five minutes.
.Pp
At every invocation,
.Nm
will start all the jobs in the lowercase queues whose start
starts all the jobs in the lowercase queues whose start
time has elapsed.
In addition, if the load average over the last minute was less than
the specified limit then a maximum of one batch job (denoted by the
the specified limit, then a maximum of one batch job (denoted by the
uppercase queues) is started.
.Pp
Before starting a job,
.Nm
will check the status of its owner's account with
checks the status of its owner's account with
.Xr pam 3
and refuse to run the job if the account is unavailable,
and refuses to run the job if the account is unavailable,
e.g., locked out or expired.
.Sh OPTIONS
.Bl -tag -width indent
@ -53,9 +53,11 @@ Debug; print error messages to standard error instead of using
.Sh WARNINGS
For
.Nm
to work, you have to start up a
to work, a
.Xr cron 8
daemon.
daemon must be running
.Nm
periodically.
.Sh FILES
.Bl -tag -width /etc/pam.d/atrun -compact
.It Pa /etc/pam.d/atrun

View File

@ -34,10 +34,14 @@ ENTRY(.rtld_start)
mov x19, x0 /* Put ps_strings in a callee-saved register */
mov x20, sp /* And the stack pointer */
sub x8, x20, #16 /* Make room for obj_main & exit proc */
mov sp, x8 /* Update the stack pointer */
/* Handle the old style stack */
/* TODO: Remove this when the kernel correctly aligns the stack */
cbnz x0, 1f
mov x0, sp /* sp points to the args */
and sp, x0, #~0xf /* Align the stack as needed */
1: sub sp, sp, #16 /* Make room for obj_main & exit proc */
mov x0, x20 /* Pass the stack we were given to _rtld */
mov x1, sp /* exit_proc */
add x2, x1, #8 /* obj_main */
bl _rtld /* Call the loader */
@ -64,6 +68,7 @@ ENTRY(_rtld_bind_start)
stp x2, x3, [sp, #-16]!
stp x4, x5, [sp, #-16]!
stp x6, x7, [sp, #-16]!
stp x8, xzr, [sp, #-16]!
/* Calculate reloff */
ldr x2, [x17, #0] /* Get the address of the entry */
@ -80,12 +85,13 @@ ENTRY(_rtld_bind_start)
bl _rtld_bind
/* Restore the registers saved by the plt code */
ldp xzr, x30, [sp, #(4 * 16)]
ldp xzr, x30, [sp, #(5 * 16)]
/* Backup the address to branch to */
mov x16, x0
/* restore the arguments */
ldp x8, xzr, [sp], #16
ldp x6, x7, [sp], #16
ldp x4, x5, [sp], #16
ldp x2, x3, [sp], #16

View File

@ -17,7 +17,7 @@ AZURE${VAR}!= grep -E ^AZURE${VAR} ${AZURE_UPLOAD_CONF} | awk -F' ' '{print $$2}
.endif
.if ${BRANCH} == "STABLE" || ${BRANCH} == "CURRENT"
SNAPSHOT_DATE!= date +-%Y-%m-%d
SNAPSHOT_DATE!= date +-%Y-%m-%d-%H:%M
.endif
AZURE_TARGET:= ${OSRELEASE}${SNAPSHOT_DATE}.vhd

View File

@ -6,7 +6,7 @@
#
.if ${BRANCH} == "CURRENT" || ${BRANCH} == "STABLE"
AMINAMESUFFIX!= date +-%Y-%m-%d
AMINAMESUFFIX!= date +-%Y-%m-%d-%H:%M
.endif
.if defined(EC2PUBLIC)
PUBLISH= --public

View File

@ -14,6 +14,7 @@ export VM_EXTRA_PACKAGES="sysutils/azure-agent"
export VM_RC_LIST=
vm_extra_pre_umount() {
chroot ${DESTDIR} ln -s /usr/local/sbin/waagent /usr/sbin/waagent
chroot ${DESTDIR} /usr/local/sbin/waagent -verbose -install
yes | chroot ${DESTDIR} /usr/local/sbin/waagent -deprovision
echo 'sshd_enable="YES"' >> ${DESTDIR}/etc/rc.conf
@ -26,17 +27,3 @@ vm_extra_pre_umount() {
return 0
}
vm_extra_create_disk() {
if [ ! -x "/usr/local/bin/qemu-img" ]; then
env ASSUME_ALWAYS_YES=yes pkg install -y emulators/qemu-devel
fi
mv ${VMIMAGE} ${VMIMAGE}.raw
size=$(qemu-img info -f raw --output json ${VMIMAGE}.raw | awk '/virtual-size/ {print $2}' | tr -d ',')
size=$(( ( ${size} / ( 1024 * 1024 ) + 1 ) * ( 1024 * 1024 ) ))
qemu-img resize ${VMIMAGE}.raw ${size}
qemu-img convert -f raw -o subformat=fixed -O vpc ${VMIMAGE}.raw ${VMIMAGE}
return 0
}

View File

@ -23,7 +23,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.Dd May 22, 2015
.Dd June 20, 2015
.Dt CTL 4
.Os
.Sh NAME
@ -91,12 +91,17 @@ variables and
.Xr loader 8
tunables:
.Bl -tag -width indent
.It Va kern.cam.ctl.iscsi.debug
Verbosity level for log messages from the kernel part of iSCSI target.
Set to 0 to disable logging or 1 to warn about potential problems.
Larger values enable debugging output.
Defaults to 1.
.It Va kern.cam.ctl.iscsi.maxcmdsn_delta
The number of outstanding commands to advertise to the initiator.
Technically, it's the difference between ExpCmdSN and MaxCmdSN fields
The number of outstanding commands to advertise to the iSCSI initiator.
Technically, it is the difference between ExpCmdSN and MaxCmdSN fields
in the iSCSI PDU.
.It Va kern.cam.ctl.iscsi.ping_timeout
The number of seconds to wait for the initiator to respond to a NOP-In
The number of seconds to wait for the iSCSI initiator to respond to a NOP-In
PDU.
In the event that there is no response within that time the session gets
forcibly terminated.

View File

@ -23,7 +23,7 @@
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.Dd September 11, 2014
.Dd June 20, 2015
.Dt ISCSI 4
.Os
.Sh NAME
@ -65,6 +65,13 @@ variables and
.Xr loader 8
tunables:
.Bl -tag -width indent
.It Va kern.iscsi.debug
Verbosity level for log messages from the
.Nm
driver.
Set to 0 to disable logging or 1 to warn about potential problems.
Larger values enable debugging output.
Defaults to 1.
.It Va kern.iscsi.ping_timeout
The number of seconds to wait for the target to respond to a NOP-Out
PDU.

View File

@ -1,7 +1,7 @@
.\" DO NOT EDIT-- this file is automatically generated.
.\" from FreeBSD: head/tools/build/options/makeman 255964 2013-10-01 07:22:04Z des
.\" $FreeBSD$
.Dd June 11, 2015
.Dd June 22, 2015
.Dt SRC.CONF 5
.Os
.Sh NAME
@ -126,6 +126,9 @@ Set to not build
Set to not build
.Xr autofs 4
related programs, libraries, and kernel modules.
.It Va WITH_AUTO_OBJ
.\" $FreeBSD$
Enable automatic creation of objdirs.
.It Va WITHOUT_BHYVE
.\" from FreeBSD: head/tools/build/options/WITHOUT_BHYVE 277727 2015-01-26 06:44:48Z ngie
Set to not build or install
@ -392,6 +395,12 @@ and are located automatically by
.It Va WITHOUT_DICT
.\" from FreeBSD: head/tools/build/options/WITHOUT_DICT 156932 2006-03-21 07:50:50Z ru
Set to not build the Webster dictionary files.
.It Va WITH_DIRDEPS_CACHE
.\" $FreeBSD$
Cache result of dirdeps.mk which can save significant time
for subsequent builds.
Depends on
.Va WITH_META_MODE .
.It Va WITHOUT_DMAGENT
.\" from FreeBSD: head/tools/build/options/WITHOUT_DMAGENT 262335 2014-02-22 13:05:23Z bapt
Set to not build dma Mail Transport Agent
@ -851,6 +860,56 @@ Set to not build utilities for manual pages,
.Xr whatis 1 ,
.Xr manctl 8 ,
and related support files.
.It Va WITH_META_FILES
.\" $FreeBSD$
Create meta files during non META_MODE build.
The meta files can be useful for debugging.
.It Va WITH_META_MODE
.\" $FreeBSD$
Enable building in meta mode.
.Pp
The build is driven by dirdeps.mk using DIRDEPS stored in
Makefile.depend files found in each directory.
.Pp
The build can be started from anywhere, and behaves the same.
The initial instance of make recursively reads DIRDEPS from Makefile.depend
computing a graph of tree dependencies from the current origin.
See http://www.crufty.net/help/sjg/dirdeps.htm
.Pp
As each target is made
.Xr make 1
produces a meta file which is used to capture (and compare)
the command line,
as well as any command output.
If
.Xr filemon 4
is available the meta file will also capture a record of syscalls
used to produce the target.
When set, it also enforces the following options:
.Pp
.Bl -item -compact
.It
.Va WITH_AUTO_OBJ
.It
.Va WITH_INSTALL_AS_USER
.It
.Va WITH_STAGING
.It
.Va WITH_SYSROOT
.El
.Pp
When set, the following options are also in effect:
.Pp
.Bl -inset -compact
.It Va WITH_STAGING_MAN
(unless
.Va WITHOUT_STAGING_MAN
is set explicitly)
.It Va WITH_STAGING_PROG
(unless
.Va WITHOUT_STAGING_PROG
is set explicitly)
.El
.It Va WITH_NAND
.\" from FreeBSD: head/tools/build/options/WITH_NAND 235537 2012-05-17 10:11:18Z gber
Set to build the NAND Flash components.
@ -1093,6 +1152,35 @@ Set to not build kernel modules that include sourceless microcode.
.It Va WITHOUT_SSP
.\" from FreeBSD: head/tools/build/options/WITHOUT_SSP 180012 2008-06-25 21:33:28Z ru
Set to not build world with propolice stack smashing protection.
.It Va WITH_STAGING
.\" $FreeBSD$
Enable staging of files to a stage tree.
This can be best thought of as auto-install to
.Va DESTDIR
with some extra meta data to ensure dependencies can be tracked.
Depends on
.Va WITH_META_MODE .
When set, the following options are also in effect:
.Pp
.Bl -inset -compact
.It Va WITH_STAGING_MAN
(unless
.Va WITHOUT_STAGING_MAN
is set explicitly)
.It Va WITH_STAGING_PROG
(unless
.Va WITHOUT_STAGING_PROG
is set explicitly)
.El
.It Va WITH_STAGING_MAN
.\" $FreeBSD$
Enable staging of MAN pages to stage tree.
.It Va WITH_STAGING_PROG
.\" $FreeBSD$
Enable staging of PROGs to stage tree.
.It Va WITH_STALE_STAGED
.\" $FreeBSD$
Check staged files are not stale.
.It Va WITH_SVN
.\" from FreeBSD: head/tools/build/options/WITH_SVN 252561 2013-07-03 12:36:47Z zeising
Set to install
@ -1117,6 +1205,11 @@ support files such as keyboard maps, fonts, and screen output maps.
Set to not build
.Xr sysinstall 8
and related programs.
.It Va WITH_SYSROOT
.\" $FreeBSD$
Enable use of sysroot during build.
Depends on
.Va WITH_META_MODE .
.It Va WITHOUT_TALK
.\" from FreeBSD: head/tools/build/options/WITHOUT_TALK 277676 2015-01-25 04:37:44Z ngie
Set to not build or install

View File

@ -23,7 +23,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd August 20, 2013
.Dd June 20, 2015
.Dt ATOMIC 9
.Os
.Sh NAME
@ -123,7 +123,9 @@ The first form just performs the operation without any explicit barriers.
The second form uses a read memory barrier, and the third variant uses a write
memory barrier.
.Pp
The second variant of each operation includes a read memory barrier.
The second variant of each operation includes an
.Em acquire
memory barrier.
This barrier ensures that the effects of this operation are completed before the
effects of any later data accesses.
As a result, the operation is said to have acquire semantics as it acquires a
@ -137,7 +139,9 @@ For example, to subtract two integers ensuring that any later writes will
happen after the subtraction is performed, use
.Fn atomic_subtract_acq_int .
.Pp
The third variant of each operation includes a write memory barrier.
The third variant of each operation includes a
.Em release
memory barrier.
This ensures that all effects of all previous data accesses are completed
before this operation takes place.
As a result, the operation is said to have release semantics as it releases

View File

@ -77,15 +77,10 @@ _${group}INS: ${_${group}INCS}
.if defined(INCSLINKS) && !empty(INCSLINKS)
installincludes:
@set ${INCSLINKS}; \
while test $$# -ge 2; do \
l=$$1; \
shift; \
t=${DESTDIR}$$1; \
shift; \
${ECHO} $$t -\> $$l; \
${INSTALL_SYMLINK} $$l $$t; \
done; true
.for s t in ${INCSLINKS}
@${ECHO} "$t -> $s" ; \
${INSTALL_SYMLINK} $s ${DESTDIR}$t
.endfor
.endif
.endif # !target(installincludes)

View File

@ -186,17 +186,11 @@ _maninstall: ${MAN}
.endif
.endfor
.else
@set ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}; \
while : ; do \
case $$# in \
0) break;; \
1) echo "warn: missing extension: $$1"; break;; \
esac; \
page=$$1; shift; sect=$$1; shift; \
d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \
${ECHO} ${MINSTALL} $${page} $${d}; \
${MINSTALL} $${page} $${d}; \
done
.for _page _sect ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}
@d=${DESTDIR}${MANDIR}${_sect}${MANSUBDIR}; \
${ECHO} ${MINSTALL} ${_page} $${d}; \
${MINSTALL} $${page} $${d};
.endfor
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
.for __page in ${MAN}
${MINSTALL} ${__page:T:S/$/${CATEXT}/} \
@ -217,35 +211,21 @@ _maninstall: ${MAN}
.endif
.if !defined(NO_MLINKS) && defined(MLINKS) && !empty(MLINKS)
@set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
while : ; do \
case $$# in \
0) break;; \
[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
esac; \
name=$$1; shift; sect=$$1; shift; \
l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
name=$$1; shift; sect=$$1; shift; \
t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}; \
done
.for _oname _osect _dname _dsect in ${MLINKS:C/\.([^.]*)$/.\1 \1/}
@l=${DESTDIR}${MANDIR}${_osect}${MANSUBDIR}/${_oname}; \
t=${DESTDIR}${MANDIR}${_dsect}${MANSUBDIR}/${_dname}; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}
.endfor
.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
@set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
while : ; do \
case $$# in \
0) break;; \
[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
esac; \
name=$$1; shift; sect=$$1; shift; \
l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
name=$$1; shift; sect=$$1; shift; \
t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}; \
done
.for _oname _osect _dname _dsect in ${MLINKS:C/\.([^.]*)$/.\1 \1/}
@l=${DESTDIR}${MANDIR}${_osect}${MANSUBDIR}/${_oname}; \
t=${DESTDIR}${MANDIR}${_dsect}${MANSUBDIR}/${_dname}; \
${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
rm -f $${t} $${t}${MCOMPRESS_EXT}; \
${INSTALL_LINK} $${l}${ZEXT} $${t}${ZEXT}
.endfor
.endif
.endif

View File

@ -81,5 +81,6 @@ MK_${vv:H}?= no
.else
MK_${vv:H}?= ${MK_${vv:T}}
.endif
MK_${vv:H}:= ${MK_${vv:H}}
.endfor
.undef __DEFAULT_DEPENDENT_OPTIONS

View File

@ -8,6 +8,20 @@
MK_INSTALL_AS_USER= yes
.if empty(OBJROOT) || ${.MAKE.LEVEL} == 0
.if !make(showconfig)
.if defined(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX})
.warning MAKEOBJDIRPREFIX not supported; setting MAKEOBJDIR...
# put things approximately where they want
OBJROOT:=${MAKEOBJDIRPREFIX}${SRCTOP:S,/src,,}/
# OBJTOP set below
MAKEOBJDIR=$${.CURDIR:S,$${SRCTOP},$${OBJTOP},}
MAKEOBJDIRPREFIX=
# export but do not track
.export-env MAKEOBJDIRPREFIX MAKEOBJDIR
# now for our own use
MAKEOBJDIR= ${.CURDIR:S,${SRCTOP},${OBJTOP},}
.endif
.endif
.if !empty(SB)
SB_OBJROOT ?= ${SB}/obj/
# this is what we use below

View File

@ -1916,7 +1916,6 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
struct vlapic *vlapic;
struct vm *vm;
uint64_t vmcb_pa;
u_int thiscpu;
int handled;
svm_sc = arg;
@ -1928,19 +1927,10 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
vmexit = vm_exitinfo(vm, vcpu);
vlapic = vm_lapic(vm, vcpu);
/*
* Stash 'curcpu' on the stack as 'thiscpu'.
*
* The per-cpu data area is not accessible until MSR_GSBASE is restored
* after the #VMEXIT. Since VMRUN is executed inside a critical section
* 'curcpu' and 'thiscpu' are guaranteed to identical.
*/
thiscpu = curcpu;
gctx = svm_get_guest_regctx(svm_sc, vcpu);
vmcb_pa = svm_sc->vcpu[vcpu].vmcb_pa;
if (vcpustate->lastcpu != thiscpu) {
if (vcpustate->lastcpu != curcpu) {
/*
* Force new ASID allocation by invalidating the generation.
*/
@ -1961,7 +1951,7 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
* This works for now but any new side-effects of vcpu
* migration should take this case into account.
*/
vcpustate->lastcpu = thiscpu;
vcpustate->lastcpu = curcpu;
vmm_stat_incr(vm, vcpu, VCPU_MIGRATIONS, 1);
}
@ -2007,14 +1997,14 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
svm_inj_interrupts(svm_sc, vcpu, vlapic);
/* Activate the nested pmap on 'thiscpu' */
CPU_SET_ATOMIC_ACQ(thiscpu, &pmap->pm_active);
/* Activate the nested pmap on 'curcpu' */
CPU_SET_ATOMIC_ACQ(curcpu, &pmap->pm_active);
/*
* Check the pmap generation and the ASID generation to
* ensure that the vcpu does not use stale TLB mappings.
*/
check_asid(svm_sc, vcpu, pmap, thiscpu);
check_asid(svm_sc, vcpu, pmap, curcpu);
ctrl->vmcb_clean = vmcb_clean & ~vcpustate->dirty;
vcpustate->dirty = 0;
@ -2022,23 +2012,9 @@ svm_vmrun(void *arg, int vcpu, register_t rip, pmap_t pmap,
/* Launch Virtual Machine. */
VCPU_CTR1(vm, vcpu, "Resume execution at %#lx", state->rip);
svm_launch(vmcb_pa, gctx);
svm_launch(vmcb_pa, gctx, &__pcpu[curcpu]);
CPU_CLR_ATOMIC(thiscpu, &pmap->pm_active);
/*
* Restore MSR_GSBASE to point to the pcpu data area.
*
* Note that accesses done via PCPU_GET/PCPU_SET will work
* only after MSR_GSBASE is restored.
*
* Also note that we don't bother restoring MSR_KGSBASE
* since it is not used in the kernel and will be restored
* when the VMRUN ioctl returns to userspace.
*/
wrmsr(MSR_GSBASE, (uint64_t)&__pcpu[thiscpu]);
KASSERT(curcpu == thiscpu, ("thiscpu/curcpu (%u/%u) mismatch",
thiscpu, curcpu));
CPU_CLR_ATOMIC(curcpu, &pmap->pm_active);
/*
* The host GDTR and IDTR is saved by VMRUN and restored

View File

@ -29,6 +29,8 @@
#ifndef _SVM_H_
#define _SVM_H_
struct pcpu;
/*
* Guest register state that is saved outside the VMCB.
*/
@ -49,6 +51,6 @@ struct svm_regctx {
register_t sctx_r15;
};
void svm_launch(uint64_t pa, struct svm_regctx *);
void svm_launch(uint64_t pa, struct svm_regctx *gctx, struct pcpu *pcpu);
#endif /* _SVM_H_ */

View File

@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/assym.h>
#include <x86/specialreg.h>
#include "svm.h"
@ -46,3 +47,4 @@ ASSYM(SCTX_R12, offsetof(struct svm_regctx, sctx_r12));
ASSYM(SCTX_R13, offsetof(struct svm_regctx, sctx_r13));
ASSYM(SCTX_R14, offsetof(struct svm_regctx, sctx_r14));
ASSYM(SCTX_R15, offsetof(struct svm_regctx, sctx_r15));
ASSYM(MSR_GSBASE, MSR_GSBASE);

View File

@ -42,13 +42,17 @@
#define VMSAVE .byte 0x0f, 0x01, 0xdb
/*
* svm_launch(uint64_t vmcb, struct svm_regctx *gctx)
* svm_launch(uint64_t vmcb, struct svm_regctx *gctx, struct pcpu *pcpu)
* %rdi: physical address of VMCB
* %rsi: pointer to guest context
* %rdx: pointer to the pcpu data
*/
ENTRY(svm_launch)
VENTER
/* save pointer to the pcpu data */
push %rdx
/*
* Host register state saved across a VMRUN.
*
@ -116,6 +120,13 @@ ENTRY(svm_launch)
pop %r12
pop %rbx
/* Restore %GS.base to point to the host's pcpu data */
pop %rdx
mov %edx, %eax
shr $32, %rdx
mov $MSR_GSBASE, %ecx
wrmsr
VLEAVE
ret
END(svm_launch)

View File

@ -8,6 +8,7 @@ MAN+= beastie.4th.8 \
loader.conf.5 \
loader.4th.8 \
menu.4th.8 \
menusets.4th.8
menusets.4th.8 \
version.4th.8
.include <bsd.prog.mk>

View File

@ -12499,24 +12499,21 @@ bxe_initial_phy_init(struct bxe_softc *sc,
}
/* must be called under IF_ADDR_LOCK */
static int
bxe_init_mcast_macs_list(struct bxe_softc *sc,
struct ecore_mcast_ramrod_params *p)
bxe_set_mc_list(struct bxe_softc *sc)
{
if_t ifp = sc->ifp;
struct ecore_mcast_ramrod_params rparam = { NULL };
int rc = 0;
int mc_count = 0;
int mcnt, i;
struct ecore_mcast_list_elem *mc_mac;
struct ecore_mcast_list_elem *mc_mac, *mc_mac_start;
unsigned char *mta;
if_t ifp = sc->ifp;
mc_count = if_multiaddr_count(ifp, -1);/* XXX they don't have a limit */
/* should we enforce one? */
ECORE_LIST_INIT(&p->mcast_list);
p->mcast_list_len = 0;
if (!mc_count) {
if (!mc_count)
return (0);
}
mta = malloc(sizeof(unsigned char) * ETHER_ADDR_LEN *
mc_count, M_DEVBUF, M_NOWAIT);
@ -12527,8 +12524,9 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
}
bzero(mta, (sizeof(unsigned char) * ETHER_ADDR_LEN * mc_count));
mc_mac = malloc(sizeof(*mc_mac) * mc_count, M_DEVBUF,
(M_NOWAIT | M_ZERO));
mc_mac = malloc(sizeof(*mc_mac) * mc_count, M_DEVBUF, (M_NOWAIT | M_ZERO));
mc_mac_start = mc_mac;
if (!mc_mac) {
free(mta, M_DEVBUF);
BLOGE(sc, "Failed to allocate temp mcast list\n");
@ -12536,12 +12534,17 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
}
bzero(mc_mac, (sizeof(*mc_mac) * mc_count));
if_multiaddr_array(ifp, mta, &mcnt, mc_count); /* mta and mcnt not expected
to be different */
/* mta and mcnt not expected to be different */
if_multiaddr_array(ifp, mta, &mcnt, mc_count);
rparam.mcast_obj = &sc->mcast_obj;
ECORE_LIST_INIT(&rparam.mcast_list);
for(i=0; i< mcnt; i++) {
mc_mac->mac = (uint8_t *)(mta + (i * ETHER_ADDR_LEN));
ECORE_LIST_PUSH_TAIL(&mc_mac->link, &p->mcast_list);
mc_mac->mac = (uint8_t *)(mta + (i * ETHER_ADDR_LEN));
ECORE_LIST_PUSH_TAIL(&mc_mac->link, &rparam.mcast_list);
BLOGD(sc, DBG_LOAD,
"Setting MCAST %02X:%02X:%02X:%02X:%02X:%02X\n",
@ -12550,34 +12553,7 @@ bxe_init_mcast_macs_list(struct bxe_softc *sc,
mc_mac++;
}
p->mcast_list_len = mc_count;
free(mta, M_DEVBUF);
return (0);
}
static void
bxe_free_mcast_macs_list(struct ecore_mcast_ramrod_params *p)
{
struct ecore_mcast_list_elem *mc_mac =
ECORE_LIST_FIRST_ENTRY(&p->mcast_list,
struct ecore_mcast_list_elem,
link);
if (mc_mac) {
/* only a single free as all mc_macs are in the same heap array */
free(mc_mac, M_DEVBUF);
}
}
static int
bxe_set_mc_list(struct bxe_softc *sc)
{
struct ecore_mcast_ramrod_params rparam = { NULL };
int rc = 0;
rparam.mcast_obj = &sc->mcast_obj;
rparam.mcast_list_len = mc_count;
BXE_MCAST_LOCK(sc);
@ -12586,14 +12562,8 @@ bxe_set_mc_list(struct bxe_softc *sc)
if (rc < 0) {
BLOGE(sc, "Failed to clear multicast configuration: %d\n", rc);
BXE_MCAST_UNLOCK(sc);
return (rc);
}
/* configure a new MACs list */
rc = bxe_init_mcast_macs_list(sc, &rparam);
if (rc) {
BLOGE(sc, "Failed to create mcast MACs list (%d)\n", rc);
BXE_MCAST_UNLOCK(sc);
free(mc_mac_start, M_DEVBUF);
free(mta, M_DEVBUF);
return (rc);
}
@ -12603,10 +12573,11 @@ bxe_set_mc_list(struct bxe_softc *sc)
BLOGE(sc, "Failed to set new mcast config (%d)\n", rc);
}
bxe_free_mcast_macs_list(&rparam);
BXE_MCAST_UNLOCK(sc);
free(mc_mac_start, M_DEVBUF);
free(mta, M_DEVBUF);
return (rc);
}

View File

@ -1724,6 +1724,7 @@ get_fl_payload(struct adapter *sc, struct sge_fl *fl, uint32_t len_newbuf)
}
*pnext = NULL;
M_ASSERTPKTHDR(m0);
return (m0);
}

View File

@ -1,10 +1,34 @@
RocketRAID Controller Driver for FreeBSD
Copyright (C) 2011 HighPoint Technologies, Inc. All rights reserved.
Copyright (C) 2005-2015 HighPoint Technologies, Inc. All rights reserved.
#############################################################################
Revision History:
v1.0 2011-12-27
First source code release
v1.2.7.1 06/08/2015
* Add 10.x comment and correct file name in readme.
v1.2.7 05/22/2015
* Support Report Luns command.
v1.2.6 04/13/2015
* Fix a bug that some disks will be dropped when data integrity test over
one hour on 32bit system.
v1.2.5 01/26/2015
* Fix a bug that failed to verify controller by retrying 8 times.
* Supported 4Kn drive.
v1.2.4 09/29/2014
* Fix a bug that memory would be corrupted and caused strange system
behavior when running IO and WebGUI
v1.2.3 01/24/2014
* fixup system crash while write date to raid5.
v1.1 07/01/2013
* Fix 2nd RAID controller can not load as multipath issue.
v1.0 12/13/2011
* First source code release
#############################################################################
@ -40,7 +64,7 @@ Revision History:
2) Extract the driver files under the kernel source tree:
# cd /usr/src/sys/
# tar xvzf /your/path/to/hpt27xx-freebsd-src-v1.0-111227.tgz
# tar xvzf /your/path/to/HPT27xx_FreeBSD_Src_v1.2.7.1_15_06_08.tgz
3) Update the kernel configuration file to include the HighPoint source.
Assume the configure file is GENERIC, and new kernel configure file is
@ -62,8 +86,8 @@ Revision History:
compile-with "uudecode < $S/dev/hpt27xx/i386-elf.hpt27xx_lib.o.uu" \
no-implicit-rule
dev/hpt27xx/os_bsd.c optional hpt27xx
dev/hpt27xx/osm_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_os_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_osm_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_config.c optional hpt27xx
For amd64 system, edit /usr/src/sys/conf/files.amd64 and append the lines
@ -74,13 +98,13 @@ Revision History:
compile-with "uudecode < $S/dev/hpt27xx/amd64-elf.hpt27xx_lib.o.uu" \
no-implicit-rule
dev/hpt27xx/os_bsd.c optional hpt27xx
dev/hpt27xx/osm_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_os_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_osm_bsd.c optional hpt27xx
dev/hpt27xx/hpt27xx_config.c optional hpt27xx
6) Rebuild and install the kernel:
a) for FreeBSD 5.x-i386/6.x-i386/7.x-i386/8.x-i386/9.x-i386:
a) for FreeBSD 5.x-i386/6.x-i386/7.x-i386/8.x-i386/9.x-i386/10.x-i386:
# cd /usr/src/sys/i386/conf/
# /usr/sbin/config MYKERNEL
@ -89,7 +113,7 @@ Revision History:
# make
# make install
b) for FreeBSD 5.x-amd64/6.x-amd64/7.x-amd64/8.x-amd64/9.x-amd64:
b) for FreeBSD 5.x-amd64/6.x-amd64/7.x-amd64/8.x-amd64/9.x-amd64/10.x-amd64:
# cd /usr/src/sys/amd64/conf/
# /usr/sbin/config MYKERNEL
@ -122,7 +146,7 @@ Revision History:
2) Extract the driver files under the kernel source tree:
# cd /usr/src/sys/
# tar xvzf /your/path/to/hpt27xx-freebsd-src-v1.0-111227.tgz
# tar xvzf /your/path/to/HPT27xx_FreeBSD_Src_v1.2.7.1_15_06_08.tgz
4) Build the driver module:
@ -136,7 +160,7 @@ Revision History:
# cp hpt27xx.ko /modules/
For FreeBSD 5.x/6.x/7.x/8.x/9.x:
For FreeBSD 5.x/6.x/7.x/8.x/9.x/10.x:
# cp hpt27xx.ko /boot/kernel/
@ -162,7 +186,7 @@ Revision History:
/modules/hpt27xx.ko text=0xf571 data=0x2c8+0x254
ok boot
For FreeBSD 5.x/6.x/7.x/8.x/9.x, you can select 6 on the boot menu to get a loader
For FreeBSD 5.x/6.x/7.x/8.x/9.x/10.x, you can select 6 on the boot menu to get a loader
prompt.
7) You can add a below line into /boot/defaults/loader.conf to load the

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2004-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -93,7 +93,11 @@ typedef struct _HIM_ADAPTER_CONFIG
HPT_U32 nvramSize;
HPT_U64 nvramAddress;
HPT_U8 slot_index;
HPT_U8 reserved2[11];
HPT_U8 maxWidth;
HPT_U8 currentWidth;
HPT_U8 maxSpeed;
HPT_U8 currentSpeed;
HPT_U8 reserved2[7];
}
HIM_ADAPTER_CONFIG, *PHIM_ADAPTER_CONFIG;
@ -117,6 +121,7 @@ typedef struct _HIM_DEVICE_FLAGS
HPT_UINT df_write_cache_enabled :1;
HPT_UINT df_cdrom_device :1;
HPT_UINT df_tape_device :1;
HPT_UINT df_changer_device :1;
HPT_UINT df_support_tcq :1;
HPT_UINT df_tcq_enabled :1;
HPT_UINT df_support_ncq :1;
@ -194,7 +199,8 @@ IDENTIFY_DATA, *PIDENTIFY_DATA;
typedef struct _HIM_DEVICE_CONFIG
{
HPT_U64 capacity;
HPT_U32 logical_sector_size;
DEVICE_FLAGS flags;
HPT_U8 path_id;
@ -342,11 +348,23 @@ typedef struct _ScsiComm {
HPT_U8 scsiStatus;
HPT_U8 reserve1;
HPT_U32 dataLength;
HPT_U8 *cdb;
HPT_U8 cdb[16];
HPT_U8 *senseBuffer;
}
ScsiComm;
typedef struct _ScsiExtComm {
HPT_U8 cdbLength;
HPT_U8 senseLength;
HPT_U8 scsiStatus;
HPT_U8 reserve1;
HPT_U32 dataLength;
HPT_U8 cdb[16];
HPT_U8 *senseBuffer;
HPT_U8 lun[8];
}
ScsiExtComm;
#define CTRL_CMD_REBUILD 1
#define CTRL_CMD_VERIFY 2
@ -357,7 +375,7 @@ typedef struct _R5ControlCmd {
HPT_U64 StripeLine;
HPT_U16 Offset;
HPT_U8 Command;
HPT_U8 reserve1;
HPT_U8 CmdTarget;
}
R5ControlCmd, *PR5ControlCmd;
@ -379,8 +397,8 @@ typedef struct ctl_pages {
typedef struct _R1ControlCmd {
HPT_U64 Lba;
HPT_U16 nSectors;
HPT_U8 Command; /* CTRL_CMD_XXX */
HPT_U8 reserve1;
HPT_U8 Command;
HPT_U8 CmdTarget;
PCONTROL_PAGES ctl_pages;
}
R1ControlCmd, *PR1ControlCmd;
@ -427,6 +445,7 @@ typedef struct _COMMAND
AtaComm Ide;
PassthroughCmd Passthrough;
ScsiComm Scsi;
ScsiExtComm ScsiExt;
R5ControlCmd R5Control;
R1ControlCmd R1Control;
} uCmd;
@ -464,6 +483,7 @@ COMMAND, *PCOMMAND;
#define CMD_TYPE_SCSI CMD_TYPE_ATAPI
#define CMD_TYPE_PASSTHROUGH 3
#define CMD_TYPE_FLUSH 4
#define CMD_TYPE_SCSI_EXT 5
#define CMD_TYPE_IO_INDIRECT 0x80
/* flush command flags */

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2005-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -101,6 +101,7 @@ _HIM_INTERFACE(int, get_enclosure_count, (void *adapter))
_HIM_INTERFACE(int, get_enclosure_info, (void *adapter, int id, void *pinfo))
_HIM_INTERFACE(int, get_enclosure_info_v2, (void *adapter, int id, void *pinfo))
_HIM_INTERFACE(int, get_enclosure_info_v3, (void *adapter, int id, void *pinfo))
_HIM_INTERFACE(int, get_enclosure_info_v4, (void *adapter, int enc_id, int ele_id, void *pinfo, void *pstatus))
_HIM_INTERFACE(HPT_BOOL, flash_access, (void *adapter, HPT_U32 offset, void *value, int size, HPT_BOOL reading))

View File

@ -60,7 +60,7 @@ int init_config(void)
const char driver_name[] = "hpt27xx";
const char driver_name_long[] = "RocketRAID 27xx controller driver";
const char driver_ver[] = "v1.1";
const char driver_ver[] = "v1.2.7";
int osm_max_targets = 0xff;

View File

@ -149,7 +149,9 @@
#define os_stallexec hpt27xx_os_stallexec
#define os_unmap_pci_bar hpt27xx_os_unmap_pci_bar
#define osm_max_targets hpt27xx_osm_max_targets
#define pcicfg_read_byte hpt27xx_pcicfg_read_byte
#define pcicfg_read_dword hpt27xx_pcicfg_read_dword
#define vbus_list hpt27xx_vbus_list
#define vdev_queue_cmd hpt27xx_vdev_queue_cmd
#define get_dmapool_phy_addr hpt27xx_get_dmapool_phy_addr
#endif

View File

@ -1,5 +1,7 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* HighPoint RAID Driver for FreeBSD
*
* Copyright (C) 2005-2011 HighPoint Technologies, Inc. All Rights Reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -30,6 +32,8 @@
#include <dev/hpt27xx/os_bsd.h>
BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr);
/* hardware access */
HPT_U8 os_inb (void *port) { return inb((unsigned)(HPT_UPTR)port); }
HPT_U16 os_inw (void *port) { return inw((unsigned)(HPT_UPTR)port); }
@ -78,6 +82,11 @@ void os_pci_writel (void *osext, HPT_U8 offset, HPT_U32 value)
pci_write_config(((PHBA)osext)->pcidev, offset, value, 4);
}
BUS_ADDRESS get_dmapool_phy_addr(void *osext, void * dmapool_virt_addr)
{
return (BUS_ADDRESS)vtophys(dmapool_virt_addr);
}
/* PCI space access */
HPT_U8 pcicfg_read_byte (HPT_U8 bus, HPT_U8 dev, HPT_U8 func, HPT_U8 reg)
{
@ -240,8 +249,13 @@ void os_request_timer(void * osext, HPT_U32 interval)
HPT_ASSERT(vbus_ext->ext_type==EXT_TYPE_VBUS);
#if (__FreeBSD_version >= 1000510)
callout_reset_sbt(&vbus_ext->timer, SBT_1US * interval, 0,
os_timer_for_ldm, vbus_ext, 0);
#else
untimeout(os_timer_for_ldm, vbus_ext, vbus_ext->timer);
vbus_ext->timer = timeout(os_timer_for_ldm, vbus_ext, interval * hz / 1000000);
#endif
}
HPT_TIME os_query_time(void)

View File

@ -374,7 +374,10 @@ static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
vbus_ext->hba_list = hba->next;
free(hba->ldm_adapter.him_handle, M_DEVBUF);
}
#if (__FreeBSD_version >= 1000510)
callout_drain(&vbus_ext->timer);
mtx_destroy(&vbus_ext->lock);
#endif
free(vbus_ext, M_DEVBUF);
KdPrint(("hpt_shutdown_vbus done"));
}
@ -437,10 +440,12 @@ static void os_cmddone(PCOMMAND pCmd)
POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
union ccb *ccb = ext->ccb;
KdPrint(("os_cmddone(%p, %d)", pCmd, pCmd->Result));
KdPrint(("<8>os_cmddone(%p, %d)", pCmd, pCmd->Result));
#if (__FreeBSD_version >= 1000510)
callout_stop(&ext->timeout);
#else
untimeout(hpt_timeout, pCmd, ccb->ccb_h.timeout_ch);
#endif
switch(pCmd->Result) {
case RETURN_SUCCESS:
ccb->ccb_h.status = CAM_REQ_CMP;
@ -483,14 +488,39 @@ static int os_buildsgl(PCOMMAND pCmd, PSG pSg, int logical)
{
POS_CMDEXT ext = (POS_CMDEXT)pCmd->priv;
union ccb *ccb = ext->ccb;
if (logical) {
#if (__FreeBSD_version >= 1000510)
if(logical) {
os_set_sgptr(pSg, (HPT_U8 *)ccb->csio.data_ptr);
pSg->size = ccb->csio.dxfer_len;
pSg->eot = 1;
return TRUE;
}
#else
bus_dma_segment_t *sgList = (bus_dma_segment_t *)ccb->csio.data_ptr;
int idx;
if(logical) {
if (ccb->ccb_h.flags & CAM_DATA_PHYS)
panic("physical address unsupported");
if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
if (ccb->ccb_h.flags & CAM_SG_LIST_PHYS)
panic("physical address unsupported");
for (idx = 0; idx < ccb->csio.sglist_cnt; idx++) {
os_set_sgptr(&pSg[idx], (HPT_U8 *)(HPT_UPTR)sgList[idx].ds_addr);
pSg[idx].size = sgList[idx].ds_len;
pSg[idx].eot = (idx==ccb->csio.sglist_cnt-1)? 1 : 0;
}
}
else {
os_set_sgptr(pSg, (HPT_U8 *)ccb->csio.data_ptr);
pSg->size = ccb->csio.dxfer_len;
pSg->eot = 1;
}
return TRUE;
}
#endif
/* since we have provided physical sg, nobody will ask us to build physical sg */
HPT_ASSERT(0);
return FALSE;
@ -527,7 +557,11 @@ static void hpt_io_dmamap_callback(void *arg, bus_dma_segment_t *segs, int nsegs
BUS_DMASYNC_PREWRITE);
}
}
#if (__FreeBSD_version >= 1000510)
callout_reset(&ext->timeout, HPT_OSM_TIMEOUT, hpt_timeout, pCmd);
#else
ext->ccb->ccb_h.timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT);
#endif
ldm_queue_cmd(pCmd);
}
@ -544,7 +578,7 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
else
cdb = ccb->csio.cdb_io.cdb_bytes;
KdPrint(("hpt_scsi_io: ccb %x id %d lun %d cdb %x-%x-%x",
KdPrint(("<8>hpt_scsi_io: ccb %x id %d lun %d cdb %x-%x-%x",
ccb,
ccb->ccb_h.target_id, ccb->ccb_h.target_lun,
*(HPT_U32 *)&cdb[0], *(HPT_U32 *)&cdb[4], *(HPT_U32 *)&cdb[8]
@ -603,30 +637,78 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
{
HPT_U8 *rbuf = ccb->csio.data_ptr;
HPT_U32 cap;
HPT_U8 sector_size_shift = 0;
HPT_U64 new_cap;
HPT_U32 sector_size = 0;
if (mIsArray(vd->type))
sector_size_shift = vd->u.array.sector_size_shift;
else{
if(vd->type == VD_RAW){
sector_size = vd->u.raw.logical_sector_size;
}
if (vd->capacity>0xfffffffful)
cap = 0xfffffffful;
switch (sector_size) {
case 0x1000:
KdPrint(("set 4k setctor size in READ_CAPACITY"));
sector_size_shift = 3;
break;
default:
break;
}
}
new_cap = vd->capacity >> sector_size_shift;
if (new_cap > 0xfffffffful)
cap = 0xffffffff;
else
cap = vd->capacity - 1;
cap = new_cap - 1;
rbuf[0] = (HPT_U8)(cap>>24);
rbuf[1] = (HPT_U8)(cap>>16);
rbuf[2] = (HPT_U8)(cap>>8);
rbuf[3] = (HPT_U8)cap;
rbuf[4] = 0;
rbuf[5] = 0;
rbuf[6] = 2;
rbuf[6] = 2 << sector_size_shift;
rbuf[7] = 0;
ccb->ccb_h.status = CAM_REQ_CMP;
break;
}
case REPORT_LUNS:
{
HPT_U8 *rbuf = ccb->csio.data_ptr;
memset(rbuf, 0, 16);
rbuf[3] = 8;
ccb->ccb_h.status = CAM_REQ_CMP;
break;
}
case SERVICE_ACTION_IN:
{
HPT_U8 *rbuf = ccb->csio.data_ptr;
HPT_U64 cap = vd->capacity - 1;
HPT_U64 cap = 0;
HPT_U8 sector_size_shift = 0;
HPT_U32 sector_size = 0;
if(mIsArray(vd->type))
sector_size_shift = vd->u.array.sector_size_shift;
else{
if(vd->type == VD_RAW){
sector_size = vd->u.raw.logical_sector_size;
}
switch (sector_size) {
case 0x1000:
KdPrint(("set 4k setctor size in SERVICE_ACTION_IN"));
sector_size_shift = 3;
break;
default:
break;
}
}
cap = (vd->capacity >> sector_size_shift) - 1;
rbuf[0] = (HPT_U8)(cap>>56);
rbuf[1] = (HPT_U8)(cap>>48);
rbuf[2] = (HPT_U8)(cap>>40);
@ -637,7 +719,7 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
rbuf[7] = (HPT_U8)cap;
rbuf[8] = 0;
rbuf[9] = 0;
rbuf[10] = 2;
rbuf[10] = 2 << sector_size_shift;
rbuf[11] = 0;
ccb->ccb_h.status = CAM_REQ_CMP;
@ -654,7 +736,8 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
case 0x2f:
case 0x8f: /* VERIFY_16 */
{
int error;
HPT_U8 sector_size_shift = 0;
HPT_U32 sector_size = 0;
pCmd = ldm_alloc_cmds(vbus, vd->cmds_per_request);
if(!pCmd){
KdPrint(("Failed to allocate command!"));
@ -692,6 +775,27 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
pCmd->uCmd.Ide.nSectors = (HPT_U16) cdb[8] | ((HPT_U16)cdb[7]<<8);
break;
}
if(mIsArray(vd->type)) {
sector_size_shift = vd->u.array.sector_size_shift;
}
else{
if(vd->type == VD_RAW){
sector_size = vd->u.raw.logical_sector_size;
}
switch (sector_size) {
case 0x1000:
KdPrint(("<8>resize sector size from 4k to 512"));
sector_size_shift = 3;
break;
default:
break;
}
}
pCmd->uCmd.Ide.Lba <<= sector_size_shift;
pCmd->uCmd.Ide.nSectors <<= sector_size_shift;
switch (cdb[0]) {
case READ_6:
@ -711,20 +815,52 @@ static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
pCmd->target = vd;
pCmd->done = os_cmddone;
pCmd->buildsgl = os_buildsgl;
pCmd->psg = ext->psg;
pCmd->flags.physical_sg = 1;
error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
ext->dma_map, ccb,
hpt_io_dmamap_callback, pCmd,
#if (__FreeBSD_version < 1000510)
if (ccb->ccb_h.flags & CAM_SCATTER_VALID) {
int idx;
bus_dma_segment_t *sgList = (bus_dma_segment_t *)ccb->csio.data_ptr;
if (ccb->ccb_h.flags & CAM_SG_LIST_PHYS)
pCmd->flags.physical_sg = 1;
for (idx = 0; idx < ccb->csio.sglist_cnt; idx++) {
pCmd->psg[idx].addr.bus = sgList[idx].ds_addr;
pCmd->psg[idx].size = sgList[idx].ds_len;
pCmd->psg[idx].eot = (idx==ccb->csio.sglist_cnt-1)? 1 : 0;
}
ccb->ccb_h.timeout_ch = timeout(hpt_timeout, pCmd, HPT_OSM_TIMEOUT);
ldm_queue_cmd(pCmd);
}
else
#endif
{
int error;
pCmd->flags.physical_sg = 1;
#if (__FreeBSD_version >= 1000510)
error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
ext->dma_map, ccb,
hpt_io_dmamap_callback, pCmd,
BUS_DMA_WAITOK
);
#else
error = bus_dmamap_load(vbus_ext->io_dmat,
ext->dma_map,
ccb->csio.data_ptr, ccb->csio.dxfer_len,
hpt_io_dmamap_callback, pCmd,
BUS_DMA_WAITOK
);
KdPrint(("bus_dmamap_load return %d", error));
if (error && error!=EINPROGRESS) {
os_printk("bus_dmamap_load error %d", error);
cmdext_put(ext);
ldm_free_cmds(pCmd);
ccb->ccb_h.status = CAM_REQ_CMP_ERR;
xpt_done(ccb);
#endif
KdPrint(("<8>bus_dmamap_load return %d", error));
if (error && error!=EINPROGRESS) {
os_printk("bus_dmamap_load error %d", error);
cmdext_put(ext);
ldm_free_cmds(pCmd);
ccb->ccb_h.status = CAM_REQ_CMP_ERR;
xpt_done(ccb);
}
}
return;
}
@ -742,11 +878,26 @@ static void hpt_action(struct cam_sim *sim, union ccb *ccb)
{
PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
KdPrint(("hpt_action(fn=%d, id=%d)", ccb->ccb_h.func_code, ccb->ccb_h.target_id));
KdPrint(("<8>hpt_action(fn=%d, id=%d)", ccb->ccb_h.func_code, ccb->ccb_h.target_id));
#if (__FreeBSD_version >= 1000510)
hpt_assert_vbus_locked(vbus_ext);
#endif
switch (ccb->ccb_h.func_code) {
#if (__FreeBSD_version < 1000510)
case XPT_SCSI_IO:
hpt_lock_vbus(vbus_ext);
hpt_scsi_io(vbus_ext, ccb);
hpt_unlock_vbus(vbus_ext);
return;
case XPT_RESET_BUS:
hpt_lock_vbus(vbus_ext);
ldm_reset_vbus((PVBUS)vbus_ext->vbus);
hpt_unlock_vbus(vbus_ext);
break;
#else
case XPT_SCSI_IO:
hpt_scsi_io(vbus_ext, ccb);
return;
@ -754,7 +905,7 @@ static void hpt_action(struct cam_sim *sim, union ccb *ccb)
case XPT_RESET_BUS:
ldm_reset_vbus((PVBUS)vbus_ext->vbus);
break;
#endif
case XPT_GET_TRAN_SETTINGS:
case XPT_SET_TRAN_SETTINGS:
ccb->ccb_h.status = CAM_FUNC_NOTAVAIL;
@ -813,15 +964,19 @@ static void hpt_pci_intr(void *arg)
static void hpt_poll(struct cam_sim *sim)
{
#if (__FreeBSD_version < 1000510)
hpt_pci_intr(cam_sim_softc(sim));
#else
PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
hpt_assert_vbus_locked(vbus_ext);
ldm_intr((PVBUS)vbus_ext->vbus);
#endif
}
static void hpt_async(void * callback_arg, u_int32_t code, struct cam_path * path, void * arg)
{
KdPrint(("hpt_async"));
KdPrint(("<8>hpt_async"));
}
static int hpt_shutdown(device_t dev)
@ -867,7 +1022,7 @@ static void hpt_do_ioctl(IOCTL_ARG *ioctl_args)
{
PVBUS vbus;
PVBUS_EXT vbus_ext;
ldm_for_each_vbus(vbus, vbus_ext) {
__hpt_do_ioctl(vbus_ext, ioctl_args);
if (ioctl_args->result!=HPT_IOCTL_RESULT_WRONG_VBUS)
@ -1003,7 +1158,11 @@ static void hpt_final_init(void *dummy)
ldm_for_each_vbus(vbus, vbus_ext) {
/* make timer available here */
mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
#if (__FreeBSD_version < 1000510)
callout_handle_init(&vbus_ext->timer);
#else
callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
#endif
if (hpt_init_vbus(vbus_ext)) {
os_printk("fail to initialize hardware");
break; /* FIXME */
@ -1046,16 +1205,23 @@ static void hpt_final_init(void *dummy)
os_printk("Can't create dma map(%d)", i);
return ;
}
#if (__FreeBSD_version >= 1000510)
callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
#endif
}
if ((devq = cam_simq_alloc(os_max_queue_comm)) == NULL) {
os_printk("cam_simq_alloc failed");
return ;
}
#if (__FreeBSD_version >= 1000510)
vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
vbus_ext, unit_number, &vbus_ext->lock, os_max_queue_comm, /*tagged*/8, devq);
#else
vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
vbus_ext, unit_number, &Giant, os_max_queue_comm, /*tagged*/8, devq);
#endif
unit_number++;
if (!vbus_ext->sim) {
os_printk("cam_sim_alloc failed");
@ -1100,8 +1266,11 @@ static void hpt_final_init(void *dummy)
os_printk("can't allocate interrupt");
return ;
}
#if (__FreeBSD_version >= 1000510)
if (bus_setup_intr(hba->pcidev, hba->irq_res, INTR_TYPE_CAM | INTR_MPSAFE,
#else
if (bus_setup_intr(hba->pcidev, hba->irq_res, INTR_TYPE_CAM,
#endif
NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
{
os_printk("can't set up interrupt");
@ -1239,7 +1408,7 @@ static int hpt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, stru
case HPT_DO_IOCONTROL:
{
if (piop->Magic == HPT_IOCTL_MAGIC || piop->Magic == HPT_IOCTL_MAGIC32) {
KdPrint(("ioctl=%x in=%p len=%d out=%p len=%d\n",
KdPrint(("<8>ioctl=%x in=%p len=%d out=%p len=%d\n",
piop->dwIoControlCode,
piop->lpInBuffer,
piop->nInBufferSize,
@ -1268,8 +1437,16 @@ static int hpt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, stru
goto invalid;
}
#if __FreeBSD_version < 1000510
mtx_lock(&Giant);
#endif
hpt_do_ioctl(&ioctl_args);
#if __FreeBSD_version < 1000510
mtx_unlock(&Giant);
#endif
if (ioctl_args.result==HPT_IOCTL_RESULT_OK) {
if (piop->nOutBufferSize) {
if (copyout(ioctl_args.lpOutBuffer,
@ -1309,13 +1486,19 @@ static int hpt_rescan_bus(void)
union ccb *ccb;
PVBUS vbus;
PVBUS_EXT vbus_ext;
#if (__FreeBSD_version < 1000510)
mtx_lock(&Giant);
#endif
ldm_for_each_vbus(vbus, vbus_ext) {
if ((ccb = xpt_alloc_ccb()) == NULL)
{
return(ENOMEM);
}
#if (__FreeBSD_version < 1000510)
if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(vbus_ext->sim),
#else
if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),
#endif
CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP)
{
xpt_free_ccb(ccb);
@ -1323,6 +1506,9 @@ static int hpt_rescan_bus(void)
}
xpt_rescan(ccb);
}
return(0);
#if (__FreeBSD_version < 1000510)
mtx_unlock(&Giant);
#endif
return(0);
}

View File

@ -28,6 +28,7 @@
#include <dev/hpt27xx/hpt27xx_config.h>
#ifndef HPT_INTF_H
#define HPT_INTF_H
@ -111,6 +112,7 @@ typedef HPT_U32 DEVICEID;
#define PDT_HARDDISK 1
#define PDT_CDROM 2
#define PDT_TAPE 3
#define PDT_CHANGER 4
/*
* Some constants.
@ -158,6 +160,9 @@ typedef HPT_U32 DEVICEID;
#define ARRAY_FLAG_NEEDINITIALIZING 0x00001000 /* the array's initialization hasn't finished*/
#define ARRAY_FLAG_BROKEN_REDUNDANT 0x00002000 /* broken but redundant (raid6) */
#define ARRAY_FLAG_RAID15PLUS 0x80000000 /* display this RAID 1 as RAID 1.5 */
#define ARRAY_FLAG_ZERO_STARTING 0x40000000 /* start lba of all members of this array is 0 */
/*
* device flags
*/
@ -169,11 +174,20 @@ typedef HPT_U32 DEVICEID;
#define DEVICE_FLAG_ON_PM_PORT 0x00000020 /* PM port */
#define DEVICE_FLAG_SAS 0x00000040 /* SAS device */
#define DEVICE_FLAG_IN_ENCLOSURE 0x00000080 /* PathId is enclosure# */
#define DEVICE_FLAG_TAPE 0x00000200 /* SAS Tape device */
#define DEVICE_FLAG_CHANGER 0x00000400 /* SAS Changer device */
#define DEVICE_FLAG_UNINITIALIZED 0x00010000 /* device is not initialized, can't be used to create array */
#define DEVICE_FLAG_LEGACY 0x00020000 /* single disk & mbr contains at least one partition */
#define DEVICE_FLAG_BAD_SECTOR_FOUND 0x00040000 /* found bad sector on target disk, set and clear by GUI */
#define DEVICE_FLAG_IS_SPARE 0x80000000 /* is a spare disk */
#define DEVICE_FLAG_SSD 0x00000100 /* SSD device */
#define DEVICE_FLAG_3G 0x10000000
#define DEVICE_FLAG_6G 0x20000000
/*
* array states used by hpt_set_array_state()
*/
@ -288,8 +302,15 @@ typedef HPT_U32 DEVICEID;
#define HPT_IOCTL_SET_PERFMON_STATUS HPT_CTL_CODE(64)
#define HPT_IOCTL_GET_PERFMON_DATA HPT_CTL_CODE(65)
#define HPT_IOCTL_IDE_PASS_THROUGH_V2 HPT_CTL_CODE(66)
#define HPT_IOCTL_GET_ENCLOSURE_INFO_V2 HPT_CTL_CODE(67)
#define HPT_IOCTL_GET_ENCLOSURE_INFO_V3 HPT_CTL_CODE(68)
#define HPT_IOCTL_GET_ENCLOSURE_INFO_V2 HPT_CTL_CODE(67)
#define HPT_IOCTL_GET_ENCLOSURE_INFO_V3 HPT_CTL_CODE(68)
#define HPT_IOCTL_ACCESS_CONFIG_REG HPT_CTL_CODE(69)
#define HPT_IOCTL_GET_ENCLOSURE_INFO_V4 HPT_CTL_CODE(70)
#define HPT_IOCTL_GET_ENCLOSURE_ELEMENT_INFO HPT_CTL_CODE(71)
#define HPT_IOCTL_DUMP_METADATA HPT_CTL_CODE(72)
#define HPT_IOCTL_GET_CONTROLLER_INFO_V2_EXT HPT_CTL_CODE(73)
#define HPT_IOCTL_GET_CONTROLLER_IDS HPT_CTL_CODE(100)
#define HPT_IOCTL_GET_DCB HPT_CTL_CODE(101)
@ -297,6 +318,13 @@ typedef HPT_U32 DEVICEID;
#define HPT_IOCTL_EPROM_IO HPT_CTL_CODE(102)
#define HPT_IOCTL_GET_CONTROLLER_VENID HPT_CTL_CODE(103)
#define HPT_IOCTL_GET_DRIVER_CAPABILITIES_CC HPT_CTL_CODE(200)
#define HPT_IOCTL_GET_CCS_INFO HPT_CTL_CODE(201)
#define HPT_IOCTL_CREATE_CC HPT_CTL_CODE(202)
#define HPT_IOCTL_DELETE_CC HPT_CTL_CODE(203)
#define HPT_IOCTL_REENABLE_ARRAY HPT_CTL_CODE(204)
/************************************************************************
* shared data structures
************************************************************************/
@ -345,6 +373,10 @@ typedef HPT_U32 DEVICEID;
#define HPT_SPIN_UP_MODE_FULL 1
#define HPT_SPIN_UP_MODE_STANDBY 2
#define HPT_CAP_DUMP_METADATA 0x1
#define HPT_CAP_DISK_CHECKING 0x2
#define HPT_CAP_REPORT_SECTOR_SIZE 0x10
typedef struct _DRIVER_CAPABILITIES {
HPT_U32 dwSize;
@ -385,7 +417,10 @@ DRIVER_CAPABILITIES, *PDRIVER_CAPABILITIES;
typedef struct _DRIVER_CAPABILITIES_V2 {
DRIVER_CAPABILITIES v1;
HPT_U8 SupportedCachePolicies[16];
HPT_U32 reserved[17];
HPT_U32 ConfigRegSize; /* max sectors */
HPT_U32 SupportDiskCachePolicy; /* disable/enable disk cache policy */
HPT_U32 Flags;
HPT_U32 reserved[14];
}
DRIVER_CAPABILITIES_V2, *PDRIVER_CAPABILITIES_V2;
@ -423,6 +458,14 @@ typedef struct _CONTROLLER_INFO_V2 {
HPT_U32 ExFlags;
} CONTROLLER_INFO_V2, *PCONTROLLER_INFO_V2;
typedef struct _CONTROLLER_INFO_V2_EXT {
HPT_U8 MaxWidth;
HPT_U8 CurrentWidth;
HPT_U8 MaxSpeed;
HPT_U8 CurrentSpeed;
HPT_U8 reserve[64];
} CONTROLLER_INFO_V2_EXT, *PCONTROLLER_INFO_V2_EXT;
#define CEXF_IOPModel 1
#define CEXF_SDRAMSize 2
@ -447,6 +490,9 @@ typedef struct _CONTROLLER_INFO_V2 {
#define CEXF_FanSpeed 0x100000
#define CEXF_Core1p0v 0x200000
#define CEXF_Fan2Speed 0x400000
#define CEXF_Power1p0v 0x800000
#define CEXF_Power1p5v 0x1000000
#define CEXF_SASAddress 0x2000000
typedef struct _CONTROLLER_INFO_V3 {
HPT_U8 ChipType;
@ -485,7 +531,10 @@ typedef struct _CONTROLLER_INFO_V3 {
HPT_U16 DDR1p8vRef;
HPT_U16 Core1p0v;
HPT_U16 Fan2Speed;
HPT_U8 reserve[60];
HPT_U16 Power1p0v;
HPT_U16 Power1p5v;
HPT_U8 SASAddress[8];
HPT_U8 reserve[48];
}
CONTROLLER_INFO_V3, *PCONTROLLER_INFO_V3;
typedef char check_CONTROLLER_INFO_V3[sizeof(CONTROLLER_INFO_V3)==256? 1:-1];
@ -566,8 +615,8 @@ typedef struct _SES_ELEMENT_STATUS {
#define SES_STATUS_UNRECOVERABLE 0x04
#define SES_STATUS_NOTINSTALLED 0x05
#define SES_STATUS_UNKNOWN 0x06
#define SES_STATUS_NOTAVAILABLE 0x06
#define SES_STATUS_RESERVED 0x07
#define SES_STATUS_NOTAVAILABLE 0x07
#define SES_STATUS_RESERVED 0x08
typedef struct _ENCLOSURE_INFO_V2 {
@ -596,6 +645,20 @@ typedef struct _ENCLOSURE_INFO_V3 {
SES_ELEMENT_STATUS ElementStatus[MAX_ELEMENT_COUNT];
} ENCLOSURE_INFO_V3, *PENCLOSURE_INFO_V3;
typedef struct _ENCLOSURE_INFO_V4 {
HPT_U8 EnclosureType;
HPT_U8 NumberOfPhys;
HPT_U8 AttachedTo;
HPT_U8 Status;
HPT_U8 VendorId[8];
HPT_U8 ProductId[16];
HPT_U8 ProductRevisionLevel[4];
HPT_U32 PortPhyMap;
HPT_U32 UnitId; /*272x card has two Cores, unitId is used to distinguish them */
HPT_U32 ElementCount;
HPT_U32 reserved[32];
} ENCLOSURE_INFO_V4, *PENCLOSURE_INFO_V4;
#define ENCLOSURE_STATUS_OFFLINE 1
#define ENCLOSURE_TYPE_INTERNAL 0
@ -759,7 +822,7 @@ typedef struct _IDENTIFY_DATA2 {
HPT_U16 NumberOfCurrentCylinders;
HPT_U16 NumberOfCurrentHeads;
HPT_U16 CurrentSectorsPerTrack;
HPT_U32 CurrentSectorCapacity;
HPT_U32 CurrentSectorCapacity; /*word58,59 the value indecate the logical sector size. */
HPT_U16 CurrentMultiSectorSetting;
HPT_U32 UserAddressableSectors;
HPT_U8 SingleWordDMASupport;
@ -1022,6 +1085,7 @@ __attribute__((packed)) LOGICAL_DEVICE_INFO_V4, *PLOGICAL_DEVICE_INFO_V4;
#define ADIF_WRITE_CACHE 8
#define ADIF_READ_AHEAD 0x10
#define ADIF_SPIN_UP_MODE 0x20
#define ADIF_SET_BAD 0x40
typedef struct _ALTERABLE_ARRAY_INFO {
HPT_U32 ValidFields; /* mark valid fields below */
@ -1042,7 +1106,8 @@ typedef struct _ALTERABLE_DEVICE_INFO_V2 {
HPT_U8 WriteCacheEnabled;
HPT_U8 ReadAheadEnabled;
HPT_U8 SpinUpMode;
HPT_U8 reserve[2];
HPT_U8 SetBadSector;
HPT_U8 reserve[1];
HPT_U32 reserve2[13]; /* pad to 64 bytes */
}__attribute__((packed))ALTERABLE_DEVICE_INFO_V2, *PALTERABLE_DEVICE_INFO_V2;
@ -1064,6 +1129,10 @@ typedef struct _ALTERABLE_DEVICE_INFO_V2 {
#define DIT_NCQ 4
#define DIT_IDENTIFY 5
#define DISK_CACHE_POLICY_UNCHANGE 0
#define DISK_CACHE_POLICY_ENABLE 1
#define DISK_CACHE_POLICY_DISABLE 2
/* param type is determined by target_type and info_type*/
typedef struct _SET_DEV_INFO
{
@ -1121,7 +1190,8 @@ typedef struct _CREATE_ARRAY_PARAMS_V2 {
typedef struct _CREATE_ARRAY_PARAMS_V3 {
HPT_U32 dwSize;
HPT_U8 revision; /*CREATE_ARRAY_PARAMS_V3_REVISION*/
HPT_U8 reserved[5];
HPT_U8 diskCachePolicy; /*unchange:0 enable:1 disable:2*/
HPT_U8 reserved[4];
HPT_U8 subDisks; /* RAIDn0 sub array */
HPT_U8 SectorSizeShift; /*sector size = 512B<<SectorSizeShift*/
HPT_U8 ArrayType; /* 1-level array type */
@ -1359,6 +1429,29 @@ typedef struct _HPT_PM_IOSTAT {
}
HPT_PM_IOSTAT, *PHPT_PM_IOSTAT;
/*
* disk config region
*/
typedef struct _ACCESS_CONFIG_REG {
DEVICEID id;
HPT_U16 start;
HPT_U8 sectors;
HPT_U8 read;
HPT_U32 Reserved;
#define ACCESS_CONFIG_REG_buffer(p) ((HPT_U8 *)(p) + sizeof(ACCESS_CONFIG_REG_PARAMS))
} __attribute__((packed))ACCESS_CONFIG_REG_PARAMS, *PACCESS_CONFIG_REG_PARAMS;
/*
* dump meta data
*/
typedef struct _DUMP_METADATA {
DEVICEID id;
HPT_U8 sectors;
HPT_U8 backsectors;
HPT_U8 offset;
HPT_U8 backoffset;
} __attribute__((packed))DUMP_METADATA_PARAMS, *PDUMP_METADATA_PARAMS;
/*
@ -1461,6 +1554,16 @@ int hpt_get_controller_info(int id, PCONTROLLER_INFO pInfo);
*/
int hpt_get_controller_info_v2(int id, PCONTROLLER_INFO_V2 pInfo);
/* hpt_get_controller_info_v2_ext
* Version compatibility: v2.0.0.0 or later
* Parameters:
* id Controller id
* pInfo pointer to CONTROLLER_INFO_V2_EXT buffer
* Returns:
* 0 Success, controller info is put into (*pInfo ).
*/
int hpt_get_controller_info_v2_ext(int id, PCONTROLLER_INFO_V2_EXT pInfo);
/* hpt_get_controller_info_v3
* Version compatibility: v2.0.0.0 or later
* Parameters:
@ -2090,6 +2193,9 @@ int hpt_get_enclosure_info_v2(int ctlr_id, int enc_id, PENCLOSURE_INFO_V2 pInfo)
int hpt_get_enclosure_info_v3(int ctlr_id, int enc_id, PENCLOSURE_INFO_V3 pInfo);
int hpt_get_enclosure_info_v4(int ctlr_id, int enc_id, PENCLOSURE_INFO_V4 pInfo);
int hpt_get_enclosure_element_info(int ctlr_id, int enc_id, int ele_id, PSES_ELEMENT_STATUS pInfo);
/* performance monitor interface
* Version compatibility: v2.1.0.0 or later
*/
@ -2102,6 +2208,24 @@ int hpt_get_perfmon_data(DEVICEID id, PHPT_PM_IOSTAT iostat);
*/
int hpt_get_controller_venid(int ctlr_id, HPT_U32 *venid);
/* hpt_access_config_reg
* access the reserved config space on disk
* Parameters:
* p - ACCESS_CONFIG_REG_PARAMS header pointer
* Returns:
* 0 Success
*/
int hpt_access_config_reg(PACCESS_CONFIG_REG_PARAMS p);
/* hpt_dump_metadata
* dump internal metadata
* Parameters:
* p - PDUMP_METADATA_PARAMS header pointer
* Returns:
* 0 Success
*/
int hpt_dump_metadata(PDUMP_METADATA_PARAMS p);
#endif
#pragma pack()

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2005-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -244,6 +244,7 @@ typedef struct hpt_raw_disk
#endif
__HPT_RAW_LBA real_capacity;
__HPT_RAW_LBA head_position;
HPT_U32 logical_sector_size;
HPT_U16 max_sectors_per_cmd;
HPT_U8 max_queue_depth;
@ -267,6 +268,11 @@ typedef struct hpt_raw_disk
HPT_UINT df_ncq_set: 1;
HPT_UINT enable_ncq : 1;
HPT_UINT bad_sector : 1;
HPT_UINT df_sas : 1;
HPT_UINT df_tape : 1;
HPT_UINT df_changer : 1;
HIM * him;
int index;
PLDM_ADAPTER adapter;
@ -494,8 +500,8 @@ void ldm_finish_cmd(PCOMMAND cmd);
int ldm_acquire_lock(PVDEV vd, struct lock_request *req);
void ldm_release_lock(PVDEV vd, struct lock_request *req);
void ldm_queue_task(struct task_queue *tq, struct tq_item *t);
void ldm_queue_vbus_dpc(PVBUS vbus, struct tq_item *t);
void ldm_queue_vbus_idle(PVBUS vbus, struct tq_item *t);
HPT_BOOL ldm_intr(PVBUS vbus);
void ldm_run(PVBUS vbus);
@ -507,6 +513,7 @@ int ldm_reset_vbus(PVBUS vbus);
void ldm_suspend(PVBUS vbus);
void ldm_resume(PVBUS vbus);
LDM_ADAPTER *ldm_resume_adapter(PVBUS vbus, PLDM_ADAPTER ldm_adapter);
void ldm_shutdown(PVBUS vbus);/*shutdown all the controllers*/

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2005-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2005-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -153,7 +153,9 @@ typedef struct _os_cmdext {
struct _os_cmdext *next;
union ccb *ccb;
bus_dmamap_t dma_map;
#if (__FreeBSD_version >= 1000510)
struct callout timeout;
#endif
SG psg[os_max_sg_descriptors];
}
OS_CMDEXT, *POS_CMDEXT;
@ -174,9 +176,11 @@ typedef struct _vbus_ext {
OSM_TASK *tasks;
struct task worker;
#if (__FreeBSD_version >= 1000510)
struct callout timer;
#else
struct callout_handle timer;
#endif
eventhandler_tag shutdown_eh;
/* the LDM vbus instance continues */
@ -195,9 +199,14 @@ VBUS_EXT, *PVBUS_EXT;
#define HPT_SCAN_BUS _IO('H', 1)
#if __FreeBSD_version < 1000510
#define TASK_ENQUEUE(task) taskqueue_enqueue(taskqueue_swi_giant,(task));
#else
#define TASK_ENQUEUE(task) taskqueue_enqueue(taskqueue_swi,(task));
#endif
static __inline int hpt_sleep(PVBUS_EXT vbus_ext, void *ident, int priority, const char *wmesg, int timo)
{
return msleep(ident, &vbus_ext->lock, priority, wmesg, timo);
}

View File

@ -1,5 +1,5 @@
/*-
* Copyright (c) 2011 HighPoint Technologies, Inc.
* Copyright (c) 2005-2011 HighPoint Technologies, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@ -53,6 +53,7 @@ typedef unsigned short HPT_U16;
typedef unsigned char HPT_U8;
typedef unsigned long HPT_TIME;
typedef unsigned long long HPT_U64;
typedef long long HPT_64;
#define CPU_TO_LE64(x) (x)
#define CPU_TO_LE32(x) (x)
@ -223,7 +224,20 @@ int os_printk(char *fmt, ...);
#if DBG
extern int hpt_dbg_level;
#define KdPrint(x) do { if (hpt_dbg_level) os_printk x; } while (0)
#define dbg_printk(fmt, args...) \
do {\
char *__p = fmt;\
int __level;\
if (__p[0]=='<' && __p[2]=='>') {\
__level = __p[1] - '0';\
__p += 3;\
} else\
__level = 7;\
if (hpt_dbg_level >= __level)\
os_printk(__p, ##args);\
} while (0)
#define KdPrint(x) do { dbg_printk x; } while (0)
void __os_dbgbreak(const char *file, int line);
#define os_dbgbreak() __os_dbgbreak(__FILE__, __LINE__)
#define HPT_ASSERT(x) do { if (!(x)) os_dbgbreak(); } while (0)

View File

@ -2182,6 +2182,11 @@ isp_fibre_init_2400(ispsoftc_t *isp)
isp_put_vp_port_info(isp, &pi, pdst);
amt += ICB2400_VPOPT_WRITE_SIZE;
}
if (isp->isp_dblev & ISP_LOGDEBUG1) {
isp_print_bytes(isp, "isp_fibre_init_2400",
amt - ICB2400_VPINFO_OFF,
(char *)fcp->isp_scratch + ICB2400_VPINFO_OFF);
}
}
/*
@ -7344,6 +7349,7 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp)
isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);
return;
}
cname = fc_mbcmd_names[opcode];
ibits = ISP_FC_IBITS(opcode);
obits = ISP_FC_OBITS(opcode);
} else {
@ -7352,9 +7358,15 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp)
isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);
return;
}
cname = scsi_mbcmd_names[opcode];
ibits = ISP_SCSI_IBITS(opcode);
obits = ISP_SCSI_OBITS(opcode);
}
if (cname == NULL) {
cname = tname;
ISP_SNPRINTF(tname, sizeof tname, "opcode %x", opcode);
}
isp_prt(isp, ISP_LOGDEBUG3, "Mailbox Command '%s'", cname);
/*
* Pick up any additional bits that the caller might have set.
@ -7440,11 +7452,6 @@ isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp)
if (mbp->logval == 0 || opcode == MBOX_EXEC_FIRMWARE) {
return;
}
cname = (IS_FC(isp))? fc_mbcmd_names[opcode] : scsi_mbcmd_names[opcode];
if (cname == NULL) {
cname = tname;
ISP_SNPRINTF(tname, sizeof tname, "opcode %x", opcode);
}
/*
* Just to be chatty here...

View File

@ -83,6 +83,43 @@ static struct cdevsw isp_cdevsw = {
.d_name = "isp",
};
static int
isp_role_sysctl(SYSCTL_HANDLER_ARGS)
{
ispsoftc_t *isp = (ispsoftc_t *)arg1;
int chan = arg2;
int error, old, value;
value = FCPARAM(isp, chan)->role;
error = sysctl_handle_int(oidp, &value, 0, req);
if ((error != 0) || (req->newptr == NULL))
return (error);
if (value < ISP_ROLE_NONE || value > ISP_ROLE_BOTH)
return (EINVAL);
ISP_LOCK(isp);
old = FCPARAM(isp, chan)->role;
/* If nothing has changed -- we are done. */
if (value == old) {
ISP_UNLOCK(isp);
return (0);
}
/* We don't allow target mode switch from here. */
if ((value ^ old) & ISP_ROLE_TARGET) {
ISP_UNLOCK(isp);
return (EPERM);
}
/* Actually change the role. */
error = isp_fc_change_role(isp, chan, value);
ISP_UNLOCK(isp);
return (error);
}
static int
isp_attach_chan(ispsoftc_t *isp, struct cam_devq *devq, int chan)
{
@ -138,6 +175,9 @@ isp_attach_chan(ispsoftc_t *isp, struct cam_devq *devq, int chan)
} else {
fcparam *fcp = FCPARAM(isp, chan);
struct isp_fc *fc = ISP_FC_PC(isp, chan);
struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(isp->isp_osinfo.dev);
struct sysctl_oid *tree = device_get_sysctl_tree(isp->isp_osinfo.dev);
char name[16];
ISP_LOCK(isp);
fc->sim = sim;
@ -178,17 +218,21 @@ isp_attach_chan(ispsoftc_t *isp, struct cam_devq *devq, int chan)
}
ISP_FC_PC(isp, chan)->num_threads += 1;
#endif
if (chan == 0) {
struct sysctl_ctx_list *ctx = device_get_sysctl_ctx(isp->isp_osinfo.dev);
struct sysctl_oid *tree = device_get_sysctl_tree(isp->isp_osinfo.dev);
SYSCTL_ADD_QUAD(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "wwnn", CTLFLAG_RD, &FCPARAM(isp, 0)->isp_wwnn, "World Wide Node Name");
SYSCTL_ADD_QUAD(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "wwpn", CTLFLAG_RD, &FCPARAM(isp, 0)->isp_wwpn, "World Wide Port Name");
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "loop_down_limit", CTLFLAG_RW, &ISP_FC_PC(isp, 0)->loop_down_limit, 0, "Loop Down Limit");
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "gone_device_time", CTLFLAG_RW, &ISP_FC_PC(isp, 0)->gone_device_time, 0, "Gone Device Time");
#if defined(ISP_TARGET_MODE) && defined(DEBUG)
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "inject_lost_data_frame", CTLFLAG_RW, &ISP_FC_PC(isp, 0)->inject_lost_data_frame, 0, "Cause a Lost Frame on a Read");
#endif
if (chan > 0) {
snprintf(name, sizeof(name), "chan%d", chan);
tree = SYSCTL_ADD_NODE(ctx, SYSCTL_CHILDREN(tree),
OID_AUTO, name, CTLFLAG_RW, 0, "Virtual channel");
}
SYSCTL_ADD_QUAD(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "wwnn", CTLFLAG_RD, &FCPARAM(isp, chan)->isp_wwnn, "World Wide Node Name");
SYSCTL_ADD_QUAD(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "wwpn", CTLFLAG_RD, &FCPARAM(isp, chan)->isp_wwpn, "World Wide Port Name");
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "loop_down_limit", CTLFLAG_RW, &ISP_FC_PC(isp, chan)->loop_down_limit, 0, "Loop Down Limit");
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "gone_device_time", CTLFLAG_RW, &ISP_FC_PC(isp, chan)->gone_device_time, 0, "Gone Device Time");
#if defined(ISP_TARGET_MODE) && defined(DEBUG)
SYSCTL_ADD_UINT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "inject_lost_data_frame", CTLFLAG_RW, &ISP_FC_PC(isp, chan)->inject_lost_data_frame, 0, "Cause a Lost Frame on a Read");
#endif
SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
"role", CTLTYPE_INT | CTLFLAG_RW, isp, chan,
isp_role_sysctl, "I", "Current role");
}
return (0);
}
@ -2452,18 +2496,11 @@ isp_handle_platform_atio2(ispsoftc_t *isp, at2_entry_t *aep)
* If we're not in the port database, add ourselves.
*/
if (!IS_2100(isp) && isp_find_pdb_by_loopid(isp, 0, atiop->init_id, &lp) == 0) {
uint64_t iid =
uint64_t iid =
(((uint64_t) aep->at_wwpn[0]) << 48) |
(((uint64_t) aep->at_wwpn[1]) << 32) |
(((uint64_t) aep->at_wwpn[2]) << 16) |
(((uint64_t) aep->at_wwpn[3]) << 0);
/*
* However, make sure we delete ourselves if otherwise
* we were there but at a different loop id.
*/
if (isp_find_pdb_by_wwn(isp, 0, iid, &lp)) {
isp_del_wwn_entry(isp, 0, iid, lp->handle, lp->portid);
}
isp_add_wwn_entry(isp, 0, iid, atiop->init_id, PORT_ANY, 0);
}
atiop->cdb_len = ATIO2_CDBLEN;

View File

@ -2367,18 +2367,17 @@ isp_find_pdb_by_wwn(ispsoftc_t *isp, int chan, uint64_t wwn, fcportdb_t **lptr)
fcparam *fcp;
int i;
if (chan < isp->isp_nchan) {
fcp = FCPARAM(isp, chan);
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
fcportdb_t *lp = &fcp->portdb[i];
if (chan >= isp->isp_nchan)
return (0);
fcp = FCPARAM(isp, chan);
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
fcportdb_t *lp = &fcp->portdb[i];
if (lp->target_mode == 0) {
continue;
}
if (lp->port_wwn == wwn) {
*lptr = lp;
return (1);
}
if (lp->target_mode == 0)
continue;
if (lp->port_wwn == wwn) {
*lptr = lp;
return (1);
}
}
return (0);
@ -2390,19 +2389,12 @@ isp_find_pdb_by_loopid(ispsoftc_t *isp, int chan, uint32_t loopid, fcportdb_t **
fcparam *fcp;
int i;
if (chan < isp->isp_nchan) {
fcp = FCPARAM(isp, chan);
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
fcportdb_t *lp = &fcp->portdb[i];
if (lp->target_mode == 0) {
continue;
}
if (lp->handle == loopid) {
*lptr = lp;
return (1);
}
}
if (chan >= isp->isp_nchan)
return (0);
fcp = FCPARAM(isp, chan);
if ((i = fcp->isp_tgt_map[loopid]) > 0) {
*lptr = &fcp->portdb[i - 1];
return (1);
}
return (0);
}
@ -2413,17 +2405,14 @@ isp_find_pdb_by_sid(ispsoftc_t *isp, int chan, uint32_t sid, fcportdb_t **lptr)
fcparam *fcp;
int i;
if (chan >= isp->isp_nchan) {
if (chan >= isp->isp_nchan)
return (0);
}
fcp = FCPARAM(isp, chan);
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
fcportdb_t *lp = &fcp->portdb[i];
if (lp->target_mode == 0) {
if (lp->target_mode == 0)
continue;
}
if (lp->portid == sid) {
*lptr = lp;
return (1);
@ -2460,125 +2449,151 @@ isp_add_wwn_entry(ispsoftc_t *isp, int chan, uint64_t ini, uint16_t nphdl, uint3
fcparam *fcp;
fcportdb_t *lp;
isp_notify_t nt;
int i;
int i, something, take, taken;
fcp = FCPARAM(isp, chan);
if (nphdl >= MAX_NPORT_HANDLE) {
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx bad N-Port handle 0x%04x Port ID 0x%06x",
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx "
"N-Port handle 0x%04x Port ID 0x%06x -- bad handle",
chan, (unsigned long long) ini, nphdl, s_id);
return;
}
lp = NULL;
if (fcp->isp_tgt_map[nphdl]) {
i = fcp->isp_tgt_map[nphdl] - 1;
lp = &fcp->portdb[i];
} else {
/*
* Make sure the addition of a new target mode entry doesn't duplicate entries
* with the same N-Port handles, the same portids or the same Port WWN.
*/
for (i = 0; i < MAX_FC_TARG; i++) {
lp = &fcp->portdb[i];
if (lp->target_mode == 0) {
lp = NULL;
continue;
}
if (lp->handle == nphdl) {
break;
}
if (s_id != PORT_ANY && lp->portid == s_id) {
break;
}
if (VALID_INI(ini) && lp->port_wwn == ini) {
break;
}
lp = NULL;
}
}
if (lp) {
int something = 0;
if (lp->handle != nphdl) {
isp_prt(isp, ISP_LOGWARN, "Chan %d attempt to re-enter N-port handle 0x%04x IID 0x%016llx Port ID 0x%06x finds IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x",
chan, nphdl, (unsigned long long)ini, s_id, (unsigned long long) lp->port_wwn, lp->handle, lp->portid);
isp_dump_portdb(isp, chan);
return;
}
if (s_id != PORT_NONE) {
if (lp->portid == PORT_NONE) {
lp->portid = s_id;
isp_prt(isp, ISP_LOGTINFO, "Chan %d N-port handle 0x%04x gets Port ID 0x%06x", chan, nphdl, s_id);
something++;
} else if (lp->portid != s_id) {
isp_prt(isp, ISP_LOGTINFO, "Chan %d N-port handle 0x%04x tries to change Port ID 0x%06x to 0x%06x", chan, nphdl, lp->portid, s_id);
isp_dump_portdb(isp, chan);
return;
}
}
if (VALID_INI(ini)) {
if (!VALID_INI(lp->port_wwn)) {
lp->port_wwn = ini;
isp_prt(isp, ISP_LOGTINFO, "Chan %d N-port handle 0x%04x gets WWN 0x%016llxx", chan, nphdl, (unsigned long long) ini);
something++;
} else if (lp->port_wwn != ini) {
isp_prt(isp, ISP_LOGWARN, "Chan %d N-port handle 0x%04x tries to change WWN 0x%016llx to 0x%016llx", chan, nphdl,
(unsigned long long) lp->port_wwn, (unsigned long long) ini);
isp_dump_portdb(isp, chan);
return;
}
}
if (prli_params != lp->prli_word3) {
lp->prli_word3 = prli_params;
isp_gen_role_str(buf, sizeof (buf), lp->prli_word3);
isp_prt(isp, ISP_LOGTINFO|ISP_LOGCONFIG, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x new PRLI Word 3 params %s", chan,
(unsigned long long) lp->port_wwn, lp->handle, lp->portid, buf);
something++;
}
if (!something) {
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x reentered", chan,
(unsigned long long) lp->port_wwn, lp->handle, lp->portid);
}
if (fcp->isp_tgt_map[nphdl] == 0) {
fcp->isp_tgt_map[nphdl] = i + 1;
goto notify;
}
return;
}
/*
* Find a new spot
* If valid record for requested handle already exists, update it
* with new parameters. Some cases of update can be suspicious,
* so log them verbosely and dump the whole port database.
*/
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
if (fcp->portdb[i].target_mode == 1) {
continue;
if ((i = fcp->isp_tgt_map[nphdl]) > 0) {
take = taken = i - 1;
lp = &fcp->portdb[taken];
something = 0;
if (s_id != PORT_NONE && lp->portid != s_id) {
if (lp->portid == PORT_NONE) {
isp_prt(isp, ISP_LOGTINFO,
"Chan %d IID 0x%016llx N-port handle 0x%04x "
"gets Port ID 0x%06x",
chan, (unsigned long long) lp->port_wwn,
nphdl, s_id);
} else {
isp_prt(isp, ISP_LOGTINFO|ISP_LOGWARN,
"Chan %d IID 0x%016llx N-port handle 0x%04x "
"changes Port ID 0x%06x to 0x%06x",
chan, (unsigned long long) lp->port_wwn,
nphdl, lp->portid, s_id);
if (isp->isp_dblev & (ISP_LOGTINFO|ISP_LOGWARN))
isp_dump_portdb(isp, chan);
}
lp->portid = s_id;
something++;
}
if (fcp->portdb[i].state == FC_PORTDB_STATE_NIL) {
break;
if (VALID_INI(ini) && lp->port_wwn != ini) {
if (!VALID_INI(lp->port_wwn)) {
isp_prt(isp, ISP_LOGTINFO,
"Chan %d N-port handle 0x%04x Port ID "
"0x%06x gets WWN 0x%016llxx",
chan, nphdl, lp->portid,
(unsigned long long) ini);
} else if (lp->port_wwn != ini) {
isp_prt(isp, ISP_LOGTINFO|ISP_LOGWARN,
"Chan %d N-port handle 0x%04x Port ID "
"0x%06x changes WWN 0x%016llx to 0x%016llx",
chan, nphdl, lp->portid,
(unsigned long long) lp->port_wwn,
(unsigned long long) ini);
if (isp->isp_dblev & (ISP_LOGTINFO|ISP_LOGWARN))
isp_dump_portdb(isp, chan);
}
lp->port_wwn = ini;
something++;
}
if (lp->prli_word3 != prli_params) {
lp->prli_word3 = prli_params;
isp_gen_role_str(buf, sizeof (buf), lp->prli_word3);
isp_prt(isp, ISP_LOGTINFO|ISP_LOGCONFIG,
"Chan %d IID 0x%016llx N-Port Handle 0x%04x "
"Port ID 0x%06x changes PRLI Word 3 %s",
chan, (unsigned long long) lp->port_wwn,
lp->handle, lp->portid, buf);
something++;
}
if (!something) {
isp_prt(isp, ISP_LOGTINFO,
"Chan %d IID 0x%016llx N-Port Handle 0x%04x "
"Port ID 0x%06x reentered",
chan, (unsigned long long) lp->port_wwn,
lp->handle, lp->portid);
}
} else
take = taken = -1;
/*
* Search for records colliding on handler, Port ID or WWN.
* Remove any found collisions, logging suspicious cases of
* still valid records.
*/
for (i = 0; i < MAX_FC_TARG; i++) {
lp = &fcp->portdb[i];
if (lp->target_mode == 0 || i == take)
continue;
if (lp->handle != nphdl && lp->portid != s_id &&
lp->port_wwn != ini)
continue;
if (lp->state == FC_PORTDB_STATE_VALID) {
isp_prt(isp, ISP_LOGTINFO|ISP_LOGWARN,
"Chan %d IID 0x%016llx N-Port Handle 0x%04x "
"Port ID 0x%06x is conflicting",
chan, (unsigned long long) lp->port_wwn,
lp->handle, lp->portid);
if (isp->isp_dblev & (ISP_LOGTINFO|ISP_LOGWARN))
isp_dump_portdb(isp, chan);
isp_del_wwn_entry(isp, chan,
lp->port_wwn, lp->handle, lp->portid);
}
ISP_MEMZERO(lp, sizeof (fcportdb_t));
take = i;
}
/* If valid record already exists -- we are done. */
if (taken >= 0)
return;
/* Search for room to insert new record. */
if (take < 0) {
for (i = MAX_FC_TARG - 1; i >= 0; i--) {
if (fcp->portdb[i].state == FC_PORTDB_STATE_NIL) {
take = i;
break;
}
}
}
if (i < 0) {
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x- no room in port database",
if (take < 0) {
isp_prt(isp, ISP_LOGTINFO|ISP_LOGWARN,
"Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x "
"-- no room in port database",
chan, (unsigned long long) ini, nphdl, s_id);
if (isp->isp_dblev & (ISP_LOGTINFO|ISP_LOGWARN))
isp_dump_portdb(isp, chan);
return;
}
lp = &fcp->portdb[i];
/* Insert new record and mark it valid. */
lp = &fcp->portdb[take];
ISP_MEMZERO(lp, sizeof (fcportdb_t));
lp->target_mode = 1;
lp->handle = nphdl;
lp->portid = s_id;
lp->port_wwn = ini;
lp->prli_word3 = prli_params;
lp->state = FC_PORTDB_STATE_VALID;
fcp->isp_tgt_map[nphdl] = take + 1;
isp_gen_role_str(buf, sizeof (buf), lp->prli_word3);
fcp->isp_tgt_map[nphdl] = i + 1;
isp_prt(isp, ISP_LOGTINFO, "Chan %d IID 0x%016llx N-Port Handle 0x%04x"
" Port ID 0x%06x vtgt %d %s added", chan,
(unsigned long long) ini, nphdl, s_id, take, buf);
isp_prt(isp, ISP_LOGTINFO, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x vtgt %d %s added", chan,
(unsigned long long) ini, nphdl, s_id, fcp->isp_tgt_map[nphdl] - 1, buf);
notify:
/* Notify above levels about new initiator arrival. */
ISP_MEMZERO(&nt, sizeof (nt));
nt.nt_hba = isp;
nt.nt_wwn = ini;
@ -2617,14 +2632,15 @@ isp_del_wwn_entry(ispsoftc_t *isp, int chan, uint64_t ini, uint16_t nphdl, uint3
}
}
if (lp == NULL) {
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x cannot be found to be cleared",
isp_prt(isp, ISP_LOGWARN, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x cannot be found to be deleted",
chan, (unsigned long long) ini, nphdl, s_id);
isp_dump_portdb(isp, chan);
return;
}
isp_prt(isp, ISP_LOGTINFO, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x vtgt %d cleared",
isp_prt(isp, ISP_LOGTINFO, "Chan %d IID 0x%016llx N-Port Handle 0x%04x Port ID 0x%06x vtgt %d deleted",
chan, (unsigned long long) lp->port_wwn, nphdl, lp->portid, fcp->isp_tgt_map[nphdl] - 1);
fcp->isp_tgt_map[nphdl] = 0;
lp->state = FC_PORTDB_STATE_DEAD;
ISP_MEMZERO(&nt, sizeof (nt));
nt.nt_hba = isp;

View File

@ -527,8 +527,15 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
{
const char *sptr;
int tval = 0;
char prefix[12], name[16];
if (resource_int_value(device_get_name(dev), device_get_unit(dev), "iid", &tval)) {
if (chan == 0)
prefix[0] = 0;
else
snprintf(prefix, sizeof(prefix), "chan%d.", chan);
snprintf(name, sizeof(name), "%siid", prefix);
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval)) {
if (IS_FC(isp)) {
ISP_FC_PC(isp, chan)->default_id = 109 - chan;
} else {
@ -548,13 +555,15 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
tval = -1;
if (resource_int_value(device_get_name(dev), device_get_unit(dev), "role", &tval) == 0) {
snprintf(name, sizeof(name), "%srole", prefix);
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval) == 0) {
switch (tval) {
case ISP_ROLE_NONE:
case ISP_ROLE_INITIATOR:
case ISP_ROLE_TARGET:
case ISP_ROLE_INITIATOR|ISP_ROLE_TARGET:
device_printf(dev, "setting role to 0x%x\n", tval);
case ISP_ROLE_BOTH:
device_printf(dev, "Chan %d setting role to 0x%x\n", chan, tval);
break;
default:
tval = -1;
@ -572,11 +581,15 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
ISP_FC_PC(isp, chan)->def_role = tval;
tval = 0;
if (resource_int_value(device_get_name(dev), device_get_unit(dev), "fullduplex", &tval) == 0 && tval != 0) {
snprintf(name, sizeof(name), "%sfullduplex", prefix);
if (resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval) == 0 && tval != 0) {
isp->isp_confopts |= ISP_CFG_FULL_DUPLEX;
}
sptr = 0;
if (resource_string_value(device_get_name(dev), device_get_unit(dev), "topology", (const char **) &sptr) == 0 && sptr != 0) {
snprintf(name, sizeof(name), "%stopology", prefix);
if (resource_string_value(device_get_name(dev), device_get_unit(dev),
name, (const char **) &sptr) == 0 && sptr != 0) {
if (strcmp(sptr, "lport") == 0) {
isp->isp_confopts |= ISP_CFG_LPORT;
} else if (strcmp(sptr, "nport") == 0) {
@ -589,13 +602,17 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
tval = 0;
(void) resource_int_value(device_get_name(dev), device_get_unit(dev), "nofctape", &tval);
snprintf(name, sizeof(name), "%snofctape", prefix);
(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval);
if (tval) {
isp->isp_confopts |= ISP_CFG_NOFCTAPE;
}
tval = 0;
(void) resource_int_value(device_get_name(dev), device_get_unit(dev), "fctape", &tval);
snprintf(name, sizeof(name), "%sfctape", prefix);
(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval);
if (tval) {
isp->isp_confopts &= ~ISP_CFG_NOFCTAPE;
isp->isp_confopts |= ISP_CFG_FCTAPE;
@ -611,7 +628,9 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
* 'w' (e..g w50000000aaaa0001). Sigh.
*/
sptr = 0;
tval = resource_string_value(device_get_name(dev), device_get_unit(dev), "portwwn", (const char **) &sptr);
snprintf(name, sizeof(name), "%sportwwn", prefix);
tval = resource_string_value(device_get_name(dev), device_get_unit(dev),
name, (const char **) &sptr);
if (tval == 0 && sptr != 0 && *sptr++ == 'w') {
char *eptr = 0;
ISP_FC_PC(isp, chan)->def_wwpn = strtouq(sptr, &eptr, 16);
@ -622,7 +641,9 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
sptr = 0;
tval = resource_string_value(device_get_name(dev), device_get_unit(dev), "nodewwn", (const char **) &sptr);
snprintf(name, sizeof(name), "%snodewwn", prefix);
tval = resource_string_value(device_get_name(dev), device_get_unit(dev),
name, (const char **) &sptr);
if (tval == 0 && sptr != 0 && *sptr++ == 'w') {
char *eptr = 0;
ISP_FC_PC(isp, chan)->def_wwnn = strtouq(sptr, &eptr, 16);
@ -633,7 +654,9 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
tval = 0;
(void) resource_int_value(device_get_name(dev), device_get_unit(dev), "hysteresis", &tval);
snprintf(name, sizeof(name), "%shysteresis", prefix);
(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
"name", &tval);
if (tval >= 0 && tval < 256) {
ISP_FC_PC(isp, chan)->hysteresis = tval;
} else {
@ -641,7 +664,9 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
tval = -1;
(void) resource_int_value(device_get_name(dev), device_get_unit(dev), "loop_down_limit", &tval);
snprintf(name, sizeof(name), "%sloop_down_limit", prefix);
(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval);
if (tval >= 0 && tval < 0xffff) {
ISP_FC_PC(isp, chan)->loop_down_limit = tval;
} else {
@ -649,7 +674,9 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
}
tval = -1;
(void) resource_int_value(device_get_name(dev), device_get_unit(dev), "gone_device_time", &tval);
snprintf(name, sizeof(name), "%sgone_device_time", prefix);
(void) resource_int_value(device_get_name(dev), device_get_unit(dev),
name, &tval);
if (tval >= 0 && tval < 0xffff) {
ISP_FC_PC(isp, chan)->gone_device_time = tval;
} else {

View File

@ -64,8 +64,7 @@ proto_pci_probe(device_t dev)
{
struct sbuf *sb;
/* For now we only attach to function 0 devices. */
if (pci_get_function(dev) != 0)
if ((pci_read_config(dev, PCIR_HDRTYPE, 1) & PCIM_HDRTYPE) != 0)
return (ENXIO);
sb = sbuf_new_auto();

View File

@ -3350,7 +3350,7 @@ ti_ifmedia_upd(struct ifnet *ifp)
sc = ifp->if_softc;
TI_LOCK(sc);
error = ti_ifmedia_upd(ifp);
error = ti_ifmedia_upd_locked(sc);
TI_UNLOCK(sc);
return (error);

View File

@ -136,6 +136,7 @@ static const struct pci_id pci_ns8250_ids[] = {
{ 0x8086, 0x8814, 0xffff, 0, "Intel EG20T Serial Port 3", 0x10 },
{ 0x8086, 0x8c3d, 0xffff, 0, "Intel Lynx Point KT Controller", 0x10 },
{ 0x8086, 0x8cbd, 0xffff, 0, "Intel Wildcat Point KT Controller", 0x10 },
{ 0x8086, 0x9c3d, 0xffff, 0, "Intel Lynx Point-LP HECI KT", 0x10 },
{ 0x9710, 0x9820, 0x1000, 1, "NetMos NM9820 Serial Port", 0x10 },
{ 0x9710, 0x9835, 0x1000, 1, "NetMos NM9835 Serial Port", 0x10 },
{ 0x9710, 0x9865, 0xa000, 0x1000, "NetMos NM9865 Serial Port", 0x10 },

View File

@ -156,7 +156,7 @@ xbd_free_command(struct xbd_command *cm)
}
static void
mksegarray(bus_dma_segment_t *segs, int nsegs,
xbd_mksegarray(bus_dma_segment_t *segs, int nsegs,
grant_ref_t * gref_head, int otherend_id, int readonly,
grant_ref_t * sg_ref, blkif_request_segment_t * sg)
{
@ -230,7 +230,7 @@ xbd_queue_cb(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
ring_req->handle = (blkif_vdev_t)(uintptr_t)sc->xbd_disk;
ring_req->nr_segments = nsegs;
cm->cm_nseg = nsegs;
mksegarray(segs, nsegs, &cm->cm_gref_head,
xbd_mksegarray(segs, nsegs, &cm->cm_gref_head,
xenbus_get_otherend_id(sc->xbd_dev),
cm->cm_operation == BLKIF_OP_WRITE,
cm->cm_sg_refs, ring_req->seg);
@ -1039,7 +1039,6 @@ xbd_initialize(struct xbd_softc *sc)
const char *node_path;
uint32_t max_ring_page_order;
int error;
int i;
if (xenbus_get_state(sc->xbd_dev) != XenbusStateInitialising) {
/* Initialization has already been performed. */
@ -1110,53 +1109,6 @@ xbd_initialize(struct xbd_softc *sc)
sc->xbd_max_requests = XBD_MAX_REQUESTS;
}
/* Allocate datastructures based on negotiated values. */
error = bus_dma_tag_create(
bus_get_dma_tag(sc->xbd_dev), /* parent */
512, PAGE_SIZE, /* algnmnt, boundary */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
sc->xbd_max_request_size,
sc->xbd_max_request_segments,
PAGE_SIZE, /* maxsegsize */
BUS_DMA_ALLOCNOW, /* flags */
busdma_lock_mutex, /* lockfunc */
&sc->xbd_io_lock, /* lockarg */
&sc->xbd_io_dmat);
if (error != 0) {
xenbus_dev_fatal(sc->xbd_dev, error,
"Cannot allocate parent DMA tag\n");
return;
}
/* Per-transaction data allocation. */
sc->xbd_shadow = malloc(sizeof(*sc->xbd_shadow) * sc->xbd_max_requests,
M_XENBLOCKFRONT, M_NOWAIT|M_ZERO);
if (sc->xbd_shadow == NULL) {
bus_dma_tag_destroy(sc->xbd_io_dmat);
xenbus_dev_fatal(sc->xbd_dev, error,
"Cannot allocate request structures\n");
return;
}
for (i = 0; i < sc->xbd_max_requests; i++) {
struct xbd_command *cm;
cm = &sc->xbd_shadow[i];
cm->cm_sg_refs = malloc(
sizeof(grant_ref_t) * sc->xbd_max_request_segments,
M_XENBLOCKFRONT, M_NOWAIT);
if (cm->cm_sg_refs == NULL)
break;
cm->cm_id = i;
cm->cm_flags = XBDCF_INITIALIZER;
cm->cm_sc = sc;
if (bus_dmamap_create(sc->xbd_io_dmat, 0, &cm->cm_map) != 0)
break;
xbd_free_command(cm);
}
if (xbd_alloc_ring(sc) != 0)
return;
@ -1215,6 +1167,7 @@ xbd_connect(struct xbd_softc *sc)
unsigned long sectors, sector_size;
unsigned int binfo;
int err, feature_barrier, feature_flush;
int i;
if (sc->xbd_state == XBD_STATE_CONNECTED ||
sc->xbd_state == XBD_STATE_SUSPENDED)
@ -1245,6 +1198,53 @@ xbd_connect(struct xbd_softc *sc)
if (err == 0 && feature_flush != 0)
sc->xbd_flags |= XBDF_FLUSH;
/* Allocate datastructures based on negotiated values. */
err = bus_dma_tag_create(
bus_get_dma_tag(sc->xbd_dev), /* parent */
512, PAGE_SIZE, /* algnmnt, boundary */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
sc->xbd_max_request_size,
sc->xbd_max_request_segments,
PAGE_SIZE, /* maxsegsize */
BUS_DMA_ALLOCNOW, /* flags */
busdma_lock_mutex, /* lockfunc */
&sc->xbd_io_lock, /* lockarg */
&sc->xbd_io_dmat);
if (err != 0) {
xenbus_dev_fatal(sc->xbd_dev, err,
"Cannot allocate parent DMA tag\n");
return;
}
/* Per-transaction data allocation. */
sc->xbd_shadow = malloc(sizeof(*sc->xbd_shadow) * sc->xbd_max_requests,
M_XENBLOCKFRONT, M_NOWAIT|M_ZERO);
if (sc->xbd_shadow == NULL) {
bus_dma_tag_destroy(sc->xbd_io_dmat);
xenbus_dev_fatal(sc->xbd_dev, ENOMEM,
"Cannot allocate request structures\n");
return;
}
for (i = 0; i < sc->xbd_max_requests; i++) {
struct xbd_command *cm;
cm = &sc->xbd_shadow[i];
cm->cm_sg_refs = malloc(
sizeof(grant_ref_t) * sc->xbd_max_request_segments,
M_XENBLOCKFRONT, M_NOWAIT);
if (cm->cm_sg_refs == NULL)
break;
cm->cm_id = i;
cm->cm_flags = XBDCF_INITIALIZER;
cm->cm_sc = sc;
if (bus_dmamap_create(sc->xbd_io_dmat, 0, &cm->cm_map) != 0)
break;
xbd_free_command(cm);
}
if (sc->xbd_disk == NULL) {
device_printf(dev, "%juMB <%s> at %s",
(uintmax_t) sectors / (1048576 / sector_size),

View File

@ -68,9 +68,8 @@
#define XBD_MAX_RING_PAGES 32
/**
* The maximum number of outstanding requests blocks (request headers plus
* additional segment blocks) we will allow in a negotiated block-front/back
* communication channel.
* The maximum number of outstanding requests we will allow in a negotiated
* block-front/back communication channel.
*/
#define XBD_MAX_REQUESTS \
__CONST_RING_SIZE(blkif, PAGE_SIZE * XBD_MAX_RING_PAGES)
@ -82,15 +81,6 @@
#define XBD_MAX_REQUEST_SIZE \
MIN(MAXPHYS, XBD_SEGS_TO_SIZE(BLKIF_MAX_SEGMENTS_PER_REQUEST))
/**
* The maximum number of segments (within a request header and accompanying
* segment blocks) per request we will allow in a negotiated block-front/back
* communication channel.
*/
#define XBD_MAX_SEGMENTS_PER_REQUEST \
(MIN(BLKIF_MAX_SEGMENTS_PER_REQUEST, \
XBD_SIZE_TO_SEGS(XBD_MAX_REQUEST_SIZE)))
typedef enum {
XBDCF_Q_MASK = 0xFF,
/* This command has contributed to xbd_qfrozen_cnt. */

View File

@ -101,9 +101,6 @@ static int interp_list_entry_count = 0;
static struct sx interp_list_sx;
int imgact_binmisc_exec(struct image_params *imgp);
/*
* Populate the entry with the information about the interpreter.
*/
@ -576,7 +573,7 @@ imgact_binmisc_find_interpreter(const char *image_header)
return (NULL);
}
int
static int
imgact_binmisc_exec(struct image_params *imgp)
{
const char *image_header = imgp->image_header;

View File

@ -994,21 +994,23 @@ binsfree(struct buf *bp, int qindex)
BUF_ASSERT_XLOCKED(bp);
olock = bqlock(bp->b_qindex);
nlock = bqlock(qindex);
mtx_lock(olock);
/* Handle delayed bremfree() processing. */
if (bp->b_flags & B_REMFREE)
if (bp->b_flags & B_REMFREE) {
olock = bqlock(bp->b_qindex);
mtx_lock(olock);
bremfreel(bp);
if (olock != nlock) {
mtx_unlock(olock);
mtx_lock(nlock);
}
} else
mtx_lock(nlock);
if (bp->b_qindex != QUEUE_NONE)
panic("binsfree: free buffer onto another queue???");
bp->b_qindex = qindex;
if (olock != nlock) {
mtx_unlock(olock);
mtx_lock(nlock);
}
if (bp->b_flags & B_AGE)
TAILQ_INSERT_HEAD(&bufqueues[bp->b_qindex], bp, b_freelist);
else

View File

@ -3602,7 +3602,7 @@ v_addpollinfo(struct vnode *vp)
if (vp->v_pollinfo != NULL)
return;
vi = uma_zalloc(vnodepoll_zone, M_WAITOK);
vi = uma_zalloc(vnodepoll_zone, M_WAITOK | M_ZERO);
mtx_init(&vi->vpi_lock, "vnode pollinfo", NULL, MTX_DEF);
knlist_init(&vi->vpi_selinfo.si_note, vp, vfs_knllock,
vfs_knlunlock, vfs_knl_assert_locked, vfs_knl_assert_unlocked);

View File

@ -4005,7 +4005,7 @@ if_setgetcounterfn(if_t ifp, if_get_counter_t fn)
int
drbr_inuse_drv(if_t ifh, struct buf_ring *br)
{
return drbr_inuse_drv(ifh, br);
return drbr_inuse(ifh, br);
}
struct mbuf*

View File

@ -1226,9 +1226,11 @@ vm_pageout_scan(struct vm_domain *vmd, int pass)
* then the page may still be modified until the last of those
* mappings are removed.
*/
vm_page_test_dirty(m);
if (m->dirty == 0 && object->ref_count != 0)
pmap_remove_all(m);
if (object->ref_count != 0) {
vm_page_test_dirty(m);
if (m->dirty == 0)
pmap_remove_all(m);
}
if (m->dirty == 0) {
/*

View File

@ -145,32 +145,6 @@
* The maximum supported size of the request ring buffer in units of
* machine pages. The value must be a power of 2.
*
* max-requests <uint32_t>
* Default Value: BLKIF_MAX_RING_REQUESTS(PAGE_SIZE)
* Maximum Value: BLKIF_MAX_RING_REQUESTS(PAGE_SIZE * max-ring-pages)
*
* The maximum number of concurrent, logical requests supported by
* the backend.
*
* Note: A logical request may span multiple ring entries.
*
* max-request-segments
* Values: <uint8_t>
* Default Value: BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK
* Maximum Value: BLKIF_MAX_SEGMENTS_PER_REQUEST
*
* The maximum value of blkif_request.nr_segments supported by
* the backend.
*
* max-request-size
* Values: <uint32_t>
* Default Value: BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK * PAGE_SIZE
* Maximum Value: BLKIF_MAX_SEGMENTS_PER_REQUEST * PAGE_SIZE
*
* The maximum amount of data, in bytes, that can be referenced by a
* request type that accesses frontend memory (currently BLKIF_OP_READ,
* BLKIF_OP_WRITE, or BLKIF_OP_WRITE_BARRIER).
*
*------------------------- Backend Device Properties -------------------------
*
* discard-alignment
@ -269,33 +243,6 @@
* The size of the frontend allocated request ring buffer in units of
* machine pages. The value must be a power of 2.
*
* max-requests
* Values: <uint32_t>
* Default Value: BLKIF_MAX_RING_REQUESTS(PAGE_SIZE)
* Maximum Value: BLKIF_MAX_RING_REQUESTS(PAGE_SIZE * max-ring-pages)
*
* The maximum number of concurrent, logical requests that will be
* issued by the frontend.
*
* Note: A logical request may span multiple ring entries.
*
* max-request-segments
* Values: <uint8_t>
* Default Value: BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK
* Maximum Value: MIN(255, backend/max-request-segments)
*
* The maximum value the frontend will set in the
* blkif_request.nr_segments field.
*
* max-request-size
* Values: <uint32_t>
* Default Value: BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK * PAGE_SIZE
* Maximum Value: max-request-segments * PAGE_SIZE
*
* The maximum amount of data, in bytes, that can be referenced by
* a request type that accesses frontend memory (currently BLKIF_OP_READ,
* BLKIF_OP_WRITE, or BLKIF_OP_WRITE_BARRIER).
*
*------------------------- Virtual Device Properties -------------------------
*
* device-type
@ -457,7 +404,9 @@
#define BLKIF_OP_DISCARD 5
/*
* Maximum scatter/gather segments per request (header + segment blocks).
* Maximum scatter/gather segments per request.
* This is carefully chosen so that sizeof(blkif_ring_t) <= PAGE_SIZE.
* NB. This could be 12 if the ring indexes weren't stored in the same page.
*/
#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
@ -478,21 +427,6 @@ typedef struct blkif_request_segment blkif_request_segment_t;
/*
* Starting ring element for any I/O request.
*
* One or more segment blocks can be inserted into the request ring
* just after a blkif_request_t, allowing requests to operate on
* up to BLKIF_MAX_SEGMENTS_PER_REQUEST.
*
* BLKIF_SEGS_TO_BLOCKS() can be used on blkif_requst.nr_segments
* to determine the number of contiguous ring entries associated
* with this request.
*
* Note: Due to the way Xen request rings operate, the producer and
* consumer indices of the ring must be incremented by the
* BLKIF_SEGS_TO_BLOCKS() value of the associated request.
* (e.g. a response to a 3 ring entry request must also consume
* 3 entries in the ring, even though only the first ring entry
* in the response has any data.)
*/
struct blkif_request {
uint8_t operation; /* BLKIF_OP_??? */

View File

@ -0,0 +1,2 @@
.\" $FreeBSD$
Enable automatic creation of objdirs.

View File

@ -0,0 +1,5 @@
.\" $FreeBSD$
Cache result of dirdeps.mk which can save significant time
for subsequent builds.
Depends on
.Va WITH_META_MODE .

View File

@ -0,0 +1,3 @@
.\" $FreeBSD$
Create meta files during non META_MODE build.
The meta files can be useful for debugging.

View File

@ -0,0 +1,20 @@
.\" $FreeBSD$
Enable building in meta mode.
.Pp
The build is driven by dirdeps.mk using DIRDEPS stored in
Makefile.depend files found in each directory.
.Pp
The build can be started from anywhere, and behaves the same.
The initial instance of make recursively reads DIRDEPS from Makefile.depend
computing a graph of tree dependencies from the current origin.
See http://www.crufty.net/help/sjg/dirdeps.htm
.Pp
As each target is made
.Xr make 1
produces a meta file which is used to capture (and compare)
the command line,
as well as any command output.
If
.Xr filemon 4
is available the meta file will also capture a record of syscalls
used to produce the target.

View File

@ -0,0 +1,7 @@
.\" $FreeBSD$
Enable staging of files to a stage tree.
This can be best thought of as auto-install to
.Va DESTDIR
with some extra meta data to ensure dependencies can be tracked.
Depends on
.Va WITH_META_MODE .

View File

@ -0,0 +1,2 @@
.\" $FreeBSD$
Enable staging of MAN pages to stage tree.

View File

@ -0,0 +1,2 @@
.\" $FreeBSD$
Enable staging of PROGs to stage tree.

View File

@ -0,0 +1,2 @@
.\" $FreeBSD$
Check staged files are not stale.

View File

@ -0,0 +1,4 @@
.\" $FreeBSD$
Enable use of sysroot during build.
Depends on
.Va WITH_META_MODE .

View File

@ -46,7 +46,7 @@ show_options()
echo ${opt}
;;
*)
echo 'make showconfig broken' >&2
echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
exit 1
;;
esac
@ -96,7 +96,7 @@ show()
exit 1
;;
esac
${make} "$@" showconfig __MAKE_CONF=/dev/null |
${make} .MAKE.MODE=normal "$@" showconfig __MAKE_CONF=/dev/null |
while read var _ val ; do
opt=${var#MK_}
case ${val} in
@ -107,7 +107,7 @@ show()
echo ${no_prefix}_${opt}
;;
*)
echo 'make showconfig broken' >&2
echo "make showconfig broken: ${var} ${_} ${val} (not yes or no)" >&2
exit 1
;;
esac

View File

@ -6,7 +6,7 @@ PROG= mkimg
SRCS= format.c image.c mkimg.c scheme.c
MAN= mkimg.1
MKIMG_VERSION=20150222
MKIMG_VERSION=20150620
mkimg.o: Makefile
CFLAGS+=-DMKIMG_VERSION=${MKIMG_VERSION}

View File

@ -78,14 +78,10 @@ format_selected(void)
int
format_write(int fd)
{
lba_t size;
int error;
if (format == NULL)
return (ENOSYS);
size = image_get_size();
error = format->resize(size);
if (!error)
error = format->write(fd);
error = format->write(fd);
return (error);
}

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-4096-apm.vhd.gz
M'XL(".W%'50``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD+F]U=`"M5EUOVR`4?<^O
MN-+>*BT"#+A[7-7F;5*U:L\M<W`5:6VC)M+ZD!\_+A\!V^`F&0Y!6/@>#N=^
M`"'N`9`-R!ZD!BEPW'*0WZ"]!C"3OC';4_\*A^[M57?[S<?2/X>%`Z,DM1J:
MHSUK@)M%6F`*%Y%K',,AP"R_W#U?;5Z>`QSS<&%A+H$S$`:$3]:1Y,@.D58W
M#[<6\BFR:Z;LHI7Y_^9`.%":?-$$=D]'CD<X;JSZWK86E+(T0QN\#";B9D=P
M@HRL$IHY49/-YN#DG-4Y<%<+[PL7*B8P6M,;Z2BT#,<F;((.DV9"Y6.W5>\[
M/>+'"J$BC_SH9*XI;Y?Y4&'A8\^`8SC/;1<LRGX,EPF5_U)/#NVX'Q@1B`@3
MS&Y_J%Z$@I2?I&1&\[(SBOP4\C.I*5A(=MN:SS9\]Q-AR-@=JN#=B_7K<-ID
M"%_GHB*^C'/W_D<V7#KDQRF&,49RAS%\"K_OV^T?G8%CM;;KX)HI.]'[G+-)
MYTJT[5WI%GU@]VBR;;_9;]Y>'P,<%BHLM1;Q='8O:IME)RK[5I_HV^LD3\C$
MMQ#XZ=JQIZT[)`J/)Z2(9Q!;&^("Y\S[!'#UKK4YA;[^6CVD^FE>EQ\E)^C'
M$OU<DJ3ZI;6%E@[QR_G-ZH>'29N)S:C?[J\+Q,"OMG[*ZT=4IB]/'.Z7PY\#
M9+Z85JO.+%:_.@RY!ZS&D,<<KL60ZEEGGNMEZ1E6NNK*<I6YY*J+<!6ONM*7
CK*(5.>NJ*WW)JG351;B*5UV$JWK5E;:@+OX!7ZN]MA\-````
M'XL("'`EAE4``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD+F]U=`"M5EUOVR`4?<^O
MN-+>*LV":\#=XZ:U;Y.J5=,>6]?!E=6UC9I(ZT-^_+A\Q-C&;I+A$`3"]_AP
M[@<PYAX`58)J06E0DL:5`/4%JDL`L^@;VI[[*>R;UQ?=[+KWPC_[E0/C++8:
MFI,]EB#,1RK`FCZBUC2&?8`I/ET]7G3/CP$./1QZ(%F158F@'B;?4>S`CI!^
M=_AD(>][=N6476]E_@\"F`#.HS?*P.[^P/$`)XQ5V]I6$2/2)[3!9+!`<$]%
M,863;&05T4R)&FTV!:>6K$Z!NUAY7[A0,8%1F=Y(QZ%"&INP"3I,F@F5]^VF
M?MOJ$3^<"15UX,<G:^7\=M&'"H:7/0-!X;RT7;`HNS%<(E3^2STUM!-^8$1@
M,BR@W?Y0O1X*8GZ*LP7-YYTQRZ\F?B8U)?;99EKYT8:O?A(,&[NCGO'NV?HU
MM&PR1*Q34=%/QKE[\R,9+@WQ$YS"F"*YH1@^AM_7S>:/3L!AKNTZN'+*3K8^
MYVS2N1)M>U>Z91O8W9ELVW6[[O7E+L!1H:)2:Q&/9_=<;Y+L9&;?ZB-]>QGE
M"9OX%@(_G3OVM'6'(N'IA)0@$*0YR`3@VA"7M&;F$\#K-ZV_W7[__.OZ-M9/
MB[S\.#M"/XST<TD2ZQ?7%CYWB)_/;U$_.DRJ1&SV^FW_ND`,_'+K5WO]6)WH
MYQ?V-\7PYP#1%]-LU1G[ZI>'H?"`V1B*/H=S,>1ZT9FG>EEYAIFNNFJ^RIQS
KU26XC%==Y4O6K!4[Z:JK?,G*=-4EN(Q778++>M55MJ"N_@%!NLDU'PT`````
`
end

View File

@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-4096-apm.vhdf.gz
M'XL("+F;>54``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD9BYO=70`K57+:L,P$+SG
M*[;T%JC18R6YQX8FMT)H*/163&RGAB8Q::`]N/]>R9)B^9&0%LL;8['6>'9F
MI1!B!P`*$`R(#N*"4>`(S;P34,V?(SUN,'*CFE@P2BZL.@\7=48UF5I`9M*"
M`*:]=3P$I.U$M7SJ`EHXPP\I*&)"KD&*J_@]E.5'-@#'QBK7PO$^.Y'7SQ1`
M,5`(\M[=90XR,VG'[JU,#L?B6.QW;QX.-9Q,S6+U%W;;I!QD)T;V%J_T-O9-
MZ0#;WH+GAV/W'M9V2".\-D(',A`<$(&EFK@P.3WO`2X.639;/=Z]+%:A?H@C
M\Y-7Z,<"_>PF"?6#D)\<6S]Y43_%0:F!WFST^_RRC>CYC:P?)4X_D@S<SR>J
M9=2^+"`ZP-$8(I.Q24ON]KH1D?LS(`X!66-O#;C>[[+UL?@.=["!,P[G^7"8
M]8R;_P*I@"7U$9.:YX#?[7PS+;8;#^=//_]A[?7)XFZ5.B'CIMR%-KB&G+V?
MV/&^2,TJ_5.ZSQ$H;17NV&F8Z*==+)Z*S7(0<4W31VO22ABXU[89%JX^_<*7
4_^NMA9,CMTI"R.076*/W'M('````
M'XL("'`EAE4``VEM9RTQ>#$M-#`Y-BUA<&TN=FAD9BYO=70`K551:\(P$'[W
M5QSL90@K:7))]'%C^C8HD[%'J;:5LJG%"=M#?_R2)EE36T5'XA$:SOOX[KO+
MA1"S`)`#IT"4$6MTHO?V?&)0SUXCM>XCM^J1`8LO19V'BTY6/1H;0*K=G`!F
MO3CF`\9=1YV\G`(:.,T/8Y!$FUB#X%?Q>ZRJSWP`CH9*U\"Q/CM>--\Q@*0@
M$<34[J(`D6NW9;>LTL.Q/);[W=+!H8(3F0Z6M[#;IM4@.QZXMGAE;2>N*2U@
MM[;@^&'HWL.F'$(+KPJA#"EP!HA`,T6<:Y\Z]P#GASQ_6CP_O,T7OGZ(@?F)
M*_2CGG[FDOCZ@<]/A-9/7-1/,I!RH#=;_;Z^32,Z?H'UBXG5CZ0#^WE'G43=
MGP%$"QB,(;?363![U[6(S,V`B0](V_(V@.O]+E\?RQ__!G,[G8MBV'0\9?HM
M$!)HVHR83'][_.YFFW&YW3@X-_W<P\&ECF*JW*M>NKR;[GM)/QK(I&7'^B)Q
M7[VI`((0QYW$+;O$5\_`X5^R>0$K;/1QUCET'(.S6<,UT\__\W]K:^!$X%91
,#^7H%Z>,MH[2!P``
`
end

View File

@ -1,17 +1,17 @@
# $FreeBSD$
begin 644 img-1x1-4096-bsd.vhd.gz
M'XL(".[%'50``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD+F]U=`"MESUOPR`0AO?\
MBI.Z98C@C+&[1DWG2I7:-8YC1QGZH29#!O_X<C;88(R3M-@$8<$]O'<<B##6
M/0`R`5F#K$"FU,X$R$?(<@#5J0NV-=>?T)1?GU5Y/EY6^FD6'8PSV\HU)WM,
M0*A),L"")I%[:D-C,*N'S6%Y_#@8'&J<F5A($`BI@@AO'LEZ=41Z7K\^M<CM
MH"[QU0U6ZK<3P`1P;HU(C+IMK[''"655UVW)H"A:F:8X'T['X.P(E[*1E25S
M*JB6LU,X.6=U#VZYT&O1I8I*C$S5*G0<,J2V2AL3!Z^H5+F<OHN?4S72AX%4
MD;T^[O4E87=1IPJ:P5J!H'2><Q=:RGF,FTB5?T5/NG9"-U006&HZL'7?C=Z`
M`EN?Y&PFYN'%".HK2)_:6ZR8J,,=S7KEOCVP)&":T79/)>1X:P3?-V]3ZUL&
MTN6/NZ/$:[A>,+\%E^B]:U&2`1?JZ'!,L]B`$W/J*&>JNYQ-(R=SF8_L['4&
M7@/?`\NMK+:`_?K"H._1EX&.NS/ZP'>W(%SFCN<6#J^X"RYN-[NV\^J8KZZ,
MO!C[\<ZX<><2Q-VY'0[C'@38GBPJ`]4HOPYW-"\K]^V`J(^J:&<?FJ,JED*A
M@=$4*F`562%6L\EV;Q9*K3#219)P$2^2A(MXD21<Q(LDX2)>)`D7\2))N*@7
02:G^(C"V^`74/'YQ?0P`````
M'XL("',EAE4``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD+F]U=`"METV/@C`0AN_^
MBDGVYH&T0REXW<3[GM:KB&B,V8^L'CSPXW<&"K044'<+V)2T\_#.=*:I0C07
M@(Y!'T"7H!/NIPKT"M(,@`;-@W4KS2M4Q==G65Q/M\A<U:*!26%;N>9LCS$H
M^D@*F/-'])[[4+68Z&5]7)X^CBT.#0X-*$G9*D;0.^\[6G3JF+0YX;E&;GMU
ML:^NMZ+?3H%0(*4U(V[5;3N-'4Z1U>%0/RDKXOBTC_/B###N'$4^+A$#*TOF
M6%`M9\=P>L[J&=QR8=:B215*C)1:"IV$%+E/:=/&P7LH56Z7[_SG4@[TX42J
MZ$Z?],;B:7?1I`JVDXT"Q>D\YR[4E.L0-Y(J_XJ>=NV4Z5`01-(.8.V^&[T>
M!;8^+<5,S*<78U)?SOH4U5D^TDX/5*^1>W?`@H%4KU3NB88,'XW@9OT^MK[%
M1+K\L3H*O(?K!,M'<+&I78L2][BI@08G#$OT.#6GCG.F?,K9)'`R%]G`SEYG
MD`>0>Q"9E=46L%M?Z/6M?!GHN#NC#WQW<\:E[GQIX?".N^#B=K-K.Z].^.J*
MP(NQ'U;&@Y7+$+=R&QR&W0BPWEDH`VF6WTX/5&^1>S=`-%M5L+T/VZTJE$)E
M@,$4$K`,K!#+V61[-@NU41CH(,FX@`=)Q@4\2#(NX$&2<0$/DHP+>)!D7-"#
0I*:_"$(L?@%=YQ4O?0P`````
`
end

View File

@ -1,14 +1,13 @@
# $FreeBSD$
begin 644 img-1x1-4096-bsd.vhdf.gz
M'XL("+R;>54``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD9BYO=70`K93!3H0P$(;O
M/,48;VM"VJ$MW2MQ/9N8J%>6A74/ZL6#!WQW.T"A`PN[&DJ!DNE\_#/35HBV
M`2@$D9]YSAOJ+.97'6VBAH8$U"DH#=J`==/%T-D',]0ON^<X;'6'DTM>\[AX
MU#P.+^%ZP?(:7$)>P<Q$`<H>-V=H<.JF1=';X]22.I<)4?XI6+U6[GQM[<@O
MK#/@'D0!PG8VY$"J[QT-8-"WG<I`%NZ"/IB&FQ,NY?-E@,,+X0+'[1=KNZC.
MUS;$%2L7(QGOC"MW+D'XSFUQN.Y!@,W)XE:@FS5]SAOJQYA?+5!UP-4RJ-!8
M,IL$3`6F!*-IG"HP6TAM"$2^DNKB\Z,LOD[?884)1P6IJO.=_#&AW6)2P)Q^
M8@XT#O3=[HZ;T_O1X_Q1Y7^L#"5=.XB:A.L,Q@[A/F1/]PTR>^O5)=,D#5[N
M3@\@%$C)`N_4.4S\PX-5?;!E!=HV,GUG'\Q`N-?Q444X+49>_ZUMBS,K+Y5<
+B.@7"Y_:'#`'````
M'XL("',EAE4``VEM9RTQ>#$M-#`Y-BUB<V0N=FAD9BYO=70`K90[;X0P#(!W
M?H6E+N@&E)@DP%KI=J9V!@HG5+5=.G3@QS<&`C&ONU:$*`(Y_O!;B&$!*`11
M;)S[@NXYXD\77(*>A@34"2@-VD!JKXMYLP\FZ%ZO+Y&_NA$GC[3V<=%B.1S>
MPTT&RT=P,6E)1L%TPNT)!EPXLL(9IXZLLY$0]9^<U6?%SN4V7>CY>0;9@-`@
MG)?(@5-^8;8O6YN!S-T#^V#M;D&XA-^7'@[ON`L<5Q[F]MBZ<&U==7(RXF5G
M/-BY!.&=.^#PW$&`_62Q%6AOK<]]09='_!F`:@2>%D$]SCX3@VG`U&`TO2<*
M3`9)Z@.15U)7?7W6U7?[XV>8<)20IMG>I(\Q=8M)``OZB7FC=\^^I^OMTG[<
M',Z-*C>1;+-9K1C!E"MW]:+96GSOD?EL7;P.DO:CEQD0"J1DCH_6Y;R<":<F
F9^L&2M7'QVWVP02;HXIP6BRT_IO;`6=.+A5;?,$O]2/CMC`'````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-4096-ebr.vhd.gz
M'XL("._%'50``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD+F]U=`"METU3PR`0AN_]
M%>MX\]"!#6S:JZ.>G7'4JVE,'`]^C'KPD!\O!$@@"=@H34J3@7WR[K)L*&/F
M`T`%4`O4`$E]70J@/90[`-5I3^Q;;F^AJ]]>F_KK^7MK/]W&P#CSK4)S;8\%
M"/60$K#2#Z%'?0V=PVQ/+Y_.GE^>'`XMSCU8$`@$J2!B]AQB@SI-NCJ_N>B1
M#Z.Z8JYNM%+?@P`F@'-O1.'4/0P:!YQ05FW;GR5452_3G<%-T#$Z.\%)-K'R
M9"X%U7-V"4<IJS6XLXV="Y,J*C%*U:K0<2A17ZNT<7&8G2I5OC_?JX_/9J(/
M(ZE"@SX^ZROB[J)-%72#K0*ATSGE+O24KREN(57^%3T*[82]4$%@TG5@[WX8
MO1$%OC[B+!'S^&1$]55)O_[@\.&P&AA1:'#UX'`E1X],DHS!1![7=^+C'G.[
MVZX#2JDKQA1XZ_35VDJ5.E8MM/&.[GP;'H.^1@-EJ:NO)-CAL0[?7]XM34<3
M6;WKXV=P^!MN$,R/P16VE+J1?F;$.[HQ3<ROPXF4.KV$FU7.RLRYU^PF=OX\
M`U.KI`:VLWT8`H?YA5'??BX#`W<3^F#N;J5Q93B>>SC\Q5T(<8?DW*;5G<S5
MU9DGHYVNC"-7KH:$*]?@,&\AP+ZRJ`Q4H^9MO*.[WH:'`:)]<V1[%:&M?=D4
M"@O,IE"X8II/8<&2R;8V"\DJS+2OIWBY_\N^GKQRGV%?3Z[<QZS8JGT]V7*?
<:5]/KMSGV==K7-9]/:E_;(QM?@!J8S.+#`X`````
M'XL("'<EAE4``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD+F]U=`"METUSI"`0AN_S
M*SJUMQPL:*&=7+<J][WLYAHUFII*[4=M<LC!'[\@H"!"QBRCPVA!/[[=-"W#
MF/D`4`TT`@U`4E\W`N@.FC.`ZK0GSBVWMS#UOW\-_=OEO;*?Z61@G/E6H;FV
MQQJ$>D@#V.J'T).^ALEAJB_WS[>7G\\.AQ:'%B0;;54C4!<]A]BB3I,>+O@R
M(Q]7=76L;K52WTX`$\"Y-Z)VZAX7C0M.**MQG,]&*]+Q<6=P$W1HW$M5Q3C)
M-E:>S+V@>L[NX2AG=01W>[)S85)%)4:C6A4Z#@WJ:Y4V+@[1J5+E_?5/^_=U
MV.C#1*K0HH]'?77:7;2I@FZP52!T.N?<A9GRML7MI,I_18]".V$O5!"8=!TX
MNQ]&;T6!KX\XR\0\/1E)?6W6KT\XW'6'@0F%!M<O#K=R]<@DR1I,Y&E]-S[N
MJ;2[XS&@E-"V$?"[T]=K*Z'*7KO3ICNFKU5X+/H&#53E4U5?27#&:QU^N/^Q
M-QU#8O4>CY_!X4>X13"_!E?;4NI&^IF1[IC6-#&_#B=RZO02'@XY*POGWG#>
MV/GS#$RMDA[8V?9A"%SF%U9]=[$,#-S-Z(/8W5;CFG`\]W#X@;L0XKKLW.;5
MW<3J^L*3,6Y7QI4K5T/"E6MP6+80X%Q95`:J47&;[IB^5>%A@&C?',5>16AK
M7S&%P@*+*12NF)936+-LLAW-0K(*"^WK*5WN/[.O)Z_<%]C7DROW*2MV:%]/
>MMP7VM>3*_=E]O4:5W1?3^H?&V.G?Q5QFYT,#@``
`
end

View File

@ -1,15 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-ebr.vhdf.gz
M'XL("+^;>54``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD9BYO=70`K94]<X,P#(;W
M_`KENF7@;&$;9\TUG7O7Z\=*"*09VBX=.M#_7@OS86,@2<]@P)RLAU>6;!BS
M!X"Y)MN\H4Y&1[W:K!H:/]P,K*I)H,45QLL,,"V7;<<TQAT<9X!\7M_:Q1UC
MAUO=!I02\CP`/G?ZD+P$`LLG[O.&>I?X9Z]/$%!F("1(!1JO#?AU_S*5#L%C
MS9_%X25<+YA?@TO)RQGI5L:\H1[*Q#X[G%A29Q"LO"E8&;GVA![YN7D&9E9)
M`4RW-O2!?7YAT+<-9:`7[H(^",/-"9?YX[F#PPOA@H\[+.9V6=TZ5%=$3H8<
MKXPK5RY!_)5K<1AW(\!F9S$5:$:%]WE#_9CXIP6*%AAM!@4J36:5@JI`E:`D
M]3,!:@N9=H'H5U)=?'V6Q??YQ\TPX7C_YP@;^6-*JT5E@#E]1!VI[^B[VY\V
MYX]3A^NVJN[#0M&D2P,10;C&H/00[L/NZ;Y![MY[=6DX28.7N;(C,`&<>X&W
MZ@PF^?6#%7VP9052-S*[YKUX!L*]C;<JPDDV\OIO;BU.12Z5G+'5'\M!HE._
#"```
M'XL("'@EAE4``VEM9RTQ>#$M-#`Y-BUE8G(N=FAD9BYO=70`K96Q<H,P#(;W
M/(5RW3)PMK`,K+W+GJ7M#`1RN5[:I4,''KXVQL3&0$C/X!#G9'WY94F&,7,!
MJ,_L6#9TR>3J=H==3^/5T\"VG04:7*V\U`(U2AHF:C#NX#@#Y,OZ]B[N'#O<
M]CD@$91E`'RS^E!["016SCR7#=UKXM^C/J&!E($@(`DY;@WXX_@^EP[!8^V?
MP>$CW"B8;\&EVLM9Z5;&LJ&[EXGYMCBQIDXA6/-4L!2Y]D0^\7/S#$QU20TL
M'VSH`\?\PEU?$<I`+]P5?1"&6VI<YJ_G#@X?A`L^KEK-[;JZ?:BNCIP,FG;&
MQL[5$+]S#0[C'@38GRRJ`M6J\+ELZ$Z)?QN@&(#1=I"&5Y%,0;8@&Y"DYYD`
M64"6NT#T*ZFKO[^:^N?ZZV98X_CXY@B']L=4=XO,`$O])_*LYXZ^E^/E<+U=
M+,X>5?9$4LVFO%($607ATJ39KOC9(T]W=6FX2>3N7B&!">#<"WQ0=_++F?IS
HW@;;M%")?G_L\'YXAMFC2N.(3;S^FUN#DY%+1=7>[@^&L-RROP@`````
`
end

View File

@ -1,22 +1,22 @@
# $FreeBSD$
begin 644 img-1x1-4096-gpt.vhd.gz
M'XL("/'%'50``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD+F]U=`"MF$MOVS`,Q^_Y
M%!QVZS#7DB79N0Q8L1;8K7O==JCER$4/RQ[IH1C\X2?*\D.VY"$M$]5(H/#G
M/RF*8IWG_0M`%:!:4`:4Q,^E`+6'L@*PDWYP=V7^*W3-SZ-I'A^>,O_J=CV,
MY7.KT!SM>0'"WJ0$7N--U`$_0S=@LM?7]Q<//^X''/>XX<9"@>`@+42L[J/R
M41V2;JZ^?'#(NTE=L58W6=D_+2`7P-CL%\6@[F[4..*$M6I;-THH:[0=1_`E
MF$#<WRQ;XV2^L)K)C`5UYFP,I[:LSL%=[/Q:]*EB$Z.T5QLZ!B7'SS9MACBL
MADV5I].O^L_)+/3Q1*JH41];S15I=[E/%3[\V"L0F,Y;[H*C/"YQD51Y4?14
M:#>LK@U"+H<)[MP/HS>A8*Y/L7PCYNG%2.JK49_=6WD=N:8GNJLL?(]`K<\#
M#A$,<:/#NL'XN3IBS.11GR138(N-!<EG\=,'XO75[7E`*:&N5\!O@[[&+8=T
M!6^/B6&+@V`@;?&;TMGY+INYONN;CW#[_O-7A'V?W&TP70X<J@::/;1ZH6Z]
MT[9K2\/[[.-MU-DBB;N,XW"SM8<-7&RD<6++RA]E9S@K\]"JFEL5!G0!;0WU
M(8%[M\!1UV6#TUI!V>`1+ADT[BP_*#S(H++;I'(0#MQ*M`>[/84U`KOCI^S8
MP]YFO]]X?8;YC(B-]$0J>L;5Y2KE;CD5[(2[$.*HZ[*I,'J2+'I[GRRQD9Y(
M1J_NHQ</$D8OMG7'4RW+7H4X31L]YDX-NS]L_5Y?TQ/=;1:^>R#WQQ#9N<9]
M(253*#R03*'P^Y=0(3.;BWGN*BN_*$05!G&$%09QA!4&<:05!H&$%09QA!4&
M<805!G&D%4;1-D+*-T)%!8;A/RXZS)IT2]-5V:D7=AFXZQJA9/NTT0C%%X.R
M$5+_:X1:DW)VY"R<)6R$%'4CI'PA)7J6H89&:*WA.<\RU-`(S6[\@F<9*MX(
>/?=9!N((GV4@CO!9!N*(4X79WF7W#]HOQ!D`$P``
M'XL("'LEAE4``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD+F]U=`"MF$UOU#`0AN_]
M%8.X%9'&CNUDA80$4I&X%03JA4/CK%.M$,O']M!#?CP>Q_EP8@>VG5TWVI5W
MGKPS'H^GR?/^!:`*4"TH`TKBYU*`VD%9`=A)/[B[,O\5NN;GT30/A\?,O[J+
M'L;RN55HCO:\`&%O4@*O\29JCY^A&S#9R^O[R\./^P''/8Y[D"S1JN"@].H^
M*A_5(>GVP+\[Y-VDKEBKFZSLGQ:0"V!L]HMB4'<W:AQQPEJUK1LE%!IMQQ%\
M"280]R;+UCB9+ZQF,F-!G3D;PZDMJW-PEQ=^+?I4L8E1VJL-'8.2XV>;-D,<
M5L.FRN/I5_WG9!;Z>")5U*B/K>:*M+O<IPH??NP5"$SG+7?!41Z6N$BJ/"MZ
M*K0;5M<&(9?#!'?NA]&;4##7IUB^$?/T8B3UU:A/V'U61Z[IB>Y]%KY'H-;G
M`8<(AKC18=U@_%P=,&;RJ$^2*;#%QH+DL_CI/?'ZZO8\H)10URO@UT%?XY9#
M@E`@=I@8MC@(!I*#G-+9^2Z;N;[K#Q_AYMWG+PC[-KG;8+KL.50--#MH]4+=
M>J=MUY:&]]G'VZBS11)W%<?A9FOW&[C82./$EM5XEORWLS(/K:JY56%`%]#6
M4.\3N+<+''5=-CBM%90-'N&20>/.\KW"@PPJNTTJ!^'`K41[L-M36".P.W[*
MCCWL=?;[E==GF,^(V$A/I*)G7%VN4NZ64\%.N`LACKHNFPJC)\FBM_/)$AOI
MB63TZCYZ\2!A]&);=SS5LNQ%B-.TT6/NU+#[P];O]34]T=UDX;L'<G\,D9UK
MW!=2,H7"`\D4"K]_"14RL[F8YZZR\HM"5&$01UAA$$=881!'6F$02%AA$$=8
M81!'6&$01UIA%&TCI'PC5%1@&/[CHL.L2;<T796=>F%7@;NN$4JV3QN-4'PQ
M*!LA]:]&J#4I9T?.PEG"1DA1-T+*%U*B9QEJ:(36&I[R+$,-C5`^!?`9SS)4
@O!%ZZK,,Q!$^RT`<X;,,Q!&G"K.]R\5?C-I*)``3````
`
end

View File

@ -1,19 +1,19 @@
# $FreeBSD$
begin 644 img-1x1-4096-gpt.vhdf.gz
M'XL(",*;>54``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD9BYO=70`K98[;]M`#,=W
M?PH:78H4%>ZMTQ(@1F.@6_K:NDBRE&2(@P`=.JC?O>2=7B?KA+HX^2S(H/@3
M_SQ2-&/^`%`"6+ERCANZ0Q9^NMW-SM%X=1T0GT\A+(`9`CVN1B,3=$_30-OV
MBW'GY9VE`L'[ZP&7C8?:9S/<:?2Z7''##.>/26Y['5!K*,L+X(\A/N&V0X,R
MH`H0>#\#Q4$+T&K$.:VZGL=W?_P,#W=?OQ/LYR17<#36`NH<"@&\6$3'_UVN
MQV%`(.4RVP-.QG!ROXZ3A.,;N+4%'8_@U):7KZ%KQ&H6>MFYEVR@DM"64)XB
MN-L%SB2N/$7FRD!>@VE`<ZA;NC@9X!S`8IM8!Q$@,,0"<DQT1<#N_"4[>]C'
M[.U#'Y_B?46LK;@AECU%I<)L3&Y.M;TI%T*<3)T]2]G3R;)7],6RMN*&:/9*
MG[WU)%'V5ENF&[*6[4-<E39[W$T-[`]\?U^>XX;N(0L_'JAZ8+((E3`INX-P
M";N#<`F[@W!)NX.`";N#<`F[@W`)NX-P2;L#@8:E&^*$<T,<YP]F7Q(T"",Z
MCBF^(Z%D*->(K=$?'^*1S3`)ASCA-H>X%!MBW2$68A,.<<(E'>((M&0V$HSK
M+Z/I.E=@L*7L'"BFFG'`^O7<U+^>?R^R9ZE4QC_)BT7^0E)A&FR1DAYB3G0]
MB^_=_>/-\\OC@!.]JN'!5-%8Q0A1%W+18.PD]WCX]LDA#T]C="NOJ<D+OSEN
M@Z)7S%QX'QUBLC^A6#6*;5H0EGS'%?P(#(1[OU)YUI7*_.;_W5N/2UTJ)6.[
)OZ@^X(6S#0``
M'XL("'LEAE4``VEM9RTQ>#$M-#`Y-BUG<'0N=FAD9BYO=70`K9??B]0P$,??
M]Z\8\>'DQ)#?[;X("J?XMAX>OOC2'\FQB"N"B`_]X\TD[37I)H63=$/I,IW/
MSG<ZT\E2&@X`R8%VF7/9,+TGZ6<ZW!X\C?7/`[K?QQ`V0.*``3<X(^5XCS%@
M[;PH\U[!V2W>KM<>1];C%8EP8^RU665#C",!M\BUSP,J!5UW!7Q8XN/^<2B0
M&N01N+N?@F2@."CYA//:U1#'=_?A$YS>W7]!V+=5+F?..`A@'&2#E#0Z5I;[
M\3Z5&W`N(,P^;[)B11%WL\U>P`G$C3NXW"KCY)X7Y66Q>9RBJ5<;>PD#O0#;
M03<6<&\W.%VY\B2:>PW-`-J`8C!8O!@U,`;0NC8)/<&!NQ"/T##@/0*GRV=R
M";`WY-?K.3[)YHK(K;*AE#V)I4+;DMP&:WM7+J0X43M[+69/5<O><2Z6W"H;
MBMGK0O;R2<+LY5K7X>:LD1<IKJ^;/>:GANL/]_Z^/I<-TXFDGP"4,[!:A-+:
MH6)W(*YB=R"N8G<@KFIW(+!B=R"N8G<@KF)W(*YJ=SB@H?6&..*P]@R%1H-M
M<`.1A%$<QQ/YX_85>-PD<@W?&_T[0SS_,$S%(8ZXW2%N35'L<FS$5ASBB*LZ
MQ-6\_=8"M.\OK?"ZD:!=2[4QD*\UXX'#SXL9?I__QME3_LT,ZR9YL]"?"RQ,
M[5JDPQ_1(UY'\;V\>[P]_WA<<'Q6M210->@E..C^2JY*Y7X]\^\>>5JCR[RF
M5)R]HP8J\143"Y^C.Z6EHOP.:!%K++02?9]6\B4Q9`L9<;Y4XIO_]]D&7.U2
.<7\-#O\`_#?S";,-````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-4096-mbr.vhd.gz
M'XL("/+%'50``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD+F]U=`"METU3@S`0AN_]
M%>MX\]!)EF2A5T<].^.H5P'!\>#'J`</_'@32$("!(NFI10FV8=W/[)-&1M>
M`)0!M4`-D-37N0`Z0%X`J$%S8'_FYA:Z^NVUJ;^>O_?FU>T&&&>^56BN[3$#
MH1Z2`Y;Z(?2HKZ&SF/WIY=/9\\N3Q:'!V0<+`H$@%43,GD/,J=.DJ_.;BQ[Y
M,*K+YNI&*_6I!#`!G'LS,JONP6ET.*&LVK8_<BC+7J8]@IM@8'1V@I-L8N7)
M7`JJY^P2CM:LMN#.=B870ZFHPLC5686.0X[Z6I6-C</L4*7R_?E>?GPV$WT8
M*15R^OAL+(N[BZ94T$XV"H0NYS5WH:=\37$+I?*OZ%%H)\R%"@*3=@![]\/H
MC2CP]1%G*S&/)R.JK]3ZU-IBY<(Y/M"=[\.W`U;5-F#!!H4ASCE<U<[A4HX>
M#44R!A-Y/"$G7ORJQ\3YK=IM0"EUQY@";ZV^.G4Z&@V4N>Z^DJ#`8QV^O[Q;
M6FY-9/7^L5DU^!O.">;'X#+32NU,OS+B`]U8)L.WQ8DU=7H)-YN<E8EKKRDF
M=GZ>@:E54@,KO";C`5U^8=1WF,O`P-T5?3!WM]2X/)S//1S^XBZ$N&HUM^OJ
M3N;JZL3):*<KX\B5JR'ARAUPF+818-]95`6J6?-S?*"[WH?O`8CFER/93Q&:
MWI=,H3#`9`J%;:;I%&9LM=BV5B$9A8GV]11O]W_9UY/7[A/LZ\FV^Y@5V[2O
?)]/N$^WKR;;[-/MZC4NZKR?UCXVQW0]_N`=E#`X`````
M'XL("'\EAE4``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD+F]U=`"MESUOI#`0AOO]
M%1-=EP+9@SV0]J3TUUS2!@A$JRBYTR5%"G[\V6`;&V.R)-YE69`]#^]\>-;+
MV/P"H!)H`.J!I+ZN!-`-5#6`&C0'3F=N;F'L_KSVW?OYHS"O\33#./.M0G-M
MCR4(]9`*L-$/H4=]#:/%%#]NGZ[/+T\6AP:'!B0K;54B4!L]AYA3ITGW9WR>
MD`^+NC)6MUBI3RN`">#<FU%:=0].H\,)934,TU%I13H^]@AN@@&->RZ*&"?9
MRLJ3N154S]DM'.U9'<%=GTPNYE)1A5&ILPH=APKUM2H;&X?H4*7R\?:W^??6
MK_1AHE3(Z>/16)EV%TVIH)UL%`A=SGONPD1Y7^,V2N5;T:/03I@+%00F[0!.
M[H?16U#@ZR/.=F*>3D927Z/U";7.FHUS>F#\681O!VS;8\":S0I#G'.X[9S#
MC5P\FHMD"2;R=$*NO/BUCYGSVP['@%)"TT3`WU9?ESL=O0:J]JFZKR2H\5*'
M[V_OMI9;GUB]7VQ6/7Z&<X+Y);C2M%([TZ^,],"XE,G\;7%B3YU>POTA9V7F
MVNOKE9V?9V!JE73`:J_)>$"77UCTW<0R,'!W1Q_$[C8:5X7SN8?#3]R%$-?N
MYG9?W56LKLN<C&&],BY<N1H2KMP9AWD;`4Z=156@FA6?TP/CKR)\ST`TOQS9
M?HK0]+YL"H4!9E,H;#/-I[!DN\5VM`K)*,RTKZ=TN__*OIZ\=I]A7T^VW:>L
CV*%]/9EVGVE?3[;=Y]G7:US6?3VI?VR,G?X#`*JO<PP.````
`
end

View File

@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-4096-mbr.vhdf.gz
M'XL(",:;>54``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD9BYO=70`K94]<\,@#(;W
M_`KUNF7P`09,UES3N7>]?JS$L=,,;9<.'=S_7LGX`TSM)#UBV2$G]/@5$H0Q
M]P&0`IC]XSGO:+99>#6K]:JE\?UU0,.@KB-@AD"'*Q&'$]"LZ@9HC`,)QQN-
M,Q"\&SN#)AL_-YF'.PQ1L<T[?%SF<'VZ]75`I<#:"/C4ZQ.IRR$)J`J0"I0&
M(RY-^&7W/$G8X7BJ]7,X<0XW".:7X'**\F;ZG3'O:,8V<=\]3BZI0P2KKDI6
M)>X]:29Q?IV!X2XI@9G.)T+@4%\8]6UB&2)(=T$?Q.E:PA7A?.[AQ)ET(<3M
M%VN[K.XF5E<F+H::[HP+=RY!PIWK<"+M02#:DP4[$&?%SWE'\Y"%EP/*#IAL
M!:70AMPZ!UV#KD`K&A<2]`8*XP-%V$E-^?E1E5^G;[_"A./#/T=L%"]RVBVZ
M`&'I)?I`8T_?[>ZX/KT?>UQ_5/4OEIH672%$1NFB0YLQW?OMXUV+W+X-ZO)X
MD<8HO(L#,`F<!XEWZA"3_83)RB'9J@9E6IF]!3\"!^%>IT<5X12;1/VWM@ZG
/$[>*96SU"XRD3B>_"```
M'XL("(`EAE4``VEM9RTQ>#$M-#`Y-BUM8G(N=FAD9BYO=70`K96]<H,P#(#W
M/(5RW3)PMK`,67N7/4O;&0CD<KVT2X<./'QEC,'&@20]0"'.R?HB63\(82\`
MA2"*&\]Y1?N:A'>[V6TZFBR?`^8"FB8")@RTN(IQO(&EH'[!(B08Q_G#(@6@
M[-=6H$W&:YMXN--@%<N\PL<E%N?";9X#$D%11,`WYQ^NG0YE@)2!(B`-.3X:
M\,?A?1*PQ<FUSL_B\!YN<%@^@DN-E;?3KXQY13N6B?UV.+7D'2-$_52PM'+M
MJ7QBY^<9!'=)!2+O=1@"A_S"Z-\^=@.#<!?\@SC<PN"R<+_T<'@G7`AQY6)N
ME[W;QMY5*R>#IIWQ8.<:2-BY%H?K#@+L)@M7(.^*G_.*]IB$MP6J'KC:"5+_
M*M(IZ`9T#9K,.E.@]Y#E/A##2FJK[Z^Z^KG\^ADV.#F\.6(Q]IB:;M$98&'^
M1)_,VO/OY7#>7:YGAW.CRDTD;C:V2A%T&85+DV:[X&>'/([>I?$AD7]Z>PU"
M@91!X+UWQ["<J9OS+MBZ@5)UY^,D^!$H;HXJ@R,QL?IO;BU.KUPJ7'N;/\%5
&,,:_"```
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-4096-pc98.vhd.gz
M'XL("//%'50``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9"YO=70`K9=-;X,P#(;O
M_16N=NNA2HP3VNNT[CQIVG8M9;3:81]:>^B!'[\8$DCX6KL%*`H*?O+:<4PJ
M1'T`Z`3T'G0!6G$[)=!K2%<`IM->6-VE?80R__PH\M/;>6F/<E;#I/"M0G.V
MQP3(#)("9CR(?N4VE`ZSO-D<%F_O!X=#BW,#DP9"4`9"O7&T:-0QZ?[V\:Y"
M;EMU25]=:V5^.P)!(*7W1N+4;1N-#8Z,U7Y?72ED62737<%#T-$ZV\$IT;'R
M9`X%U7-V"*>GK*[!+69V+NI4,8F1FKL)G804N6W2QL6A=YE4.1^_LN]CT=&'
M(ZFB&WVRUY>,NXLV5="];!40I_.4NU!13EW<0*K\*WHZM"/;,$$0RG5@Y7X8
MO18%OCXMQ43,QR=C5%_&^LS:$MG`?;RCO%V&9P/<[:\#*L5+J`M\<@[GK&]-
MD--0W'TG+UH=^4CV_7E^B\CQP\IAE7*Y5!I6>*G"E\WS@,,8S^$:A[_A&L'R
M$EQB:Y][TZC%YFLSVE'CYI8U;W$TI8[77'&5LRINLF"^ZMCY\PS"Y'`.8N55
M!0_8S"^T^M9]&1BX.Z$/^NYFC$O#]Z6'PU_<A1"WFYS;:77SOKH\\F2\=E?&
MA2N7(>'*K7$8MQ!059E-!G*-[-W'.\J'97C60+2E/MJW`VUMCJ:0+#":0K+5
M.:)"*B:3[=HLU%9AI(TXXR)NQ!D7<2/.N(@;<<9%W(@S+N)&G'%1-^+:_,42
+8O8#/[LV_KT-````
M'XL("(,EAE4``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9"YO=70`K9=-;X,P#(;O
M_16N=NL!)2:$]CII]UVV74<IG:II'UI[Z($?/QL22`C0=@ND*"CXX;7CF%2(
M]@#0*>@]Z`ITQOU<@=Y`O@:@0=.PN4IS"W7Y]5F5I\,Y,4>]:&%2N%:^.=MC
M"HI>D@,6_!*]XS[4%I/</;RM#A]O%H<&AP:4Y6R5(NAM\!XM.G5,>CG@>X-\
M[=6EH;K>BGY;!4*!E,X3J57WVFGL<(JL]ONFY:R(XV.;=^,-,.X]24)<)@96
MCLRQH#K.CN'TG-4MN-7"S$6;*I08.5TI=!)RY#ZEC8U#T"A5SL?OXN=8#?3A
M1*KH3I\,QM)I=]&D"MJ'C0+%Z3SG+C24TQ`WDBK_BI[V[93I4!!$9@>P<=^/
M7H\"5Y^68B;FTY,QJ:]@?8K663%RG1ZH[Q/_[(#;_6W`+(,B!#Y9ATO6MU%0
MJK&XNTY>M3K*B>S[\_Q6D>.'C<-4[ZA<9AK6>*W"EX?G$8<QGL,M#B_A.L'R
M&EQJ:I]]DM1B][69'&AQ2\-:]C@UIX[77'63LUG<9,%R/;!SYQD$Y7`)8NU4
M!0?8S2_T^C:A#/3<G=$'H;L%XW+_>>G@\(*[X..VLW,[KVX9JBLC3\9NN#*N
M7+D,\5=NB\.XA4`UE9DRD&MD<)T>J!\3_VR!:$I]M&\'FMH<3:$RP&@*E:G.
M$16J:C;9;LU";11&VH@S+N)&G'$1-^*,B[@19US$C3CC(F[$&1=U(Z[I+Y80
*BU\\?ZUPO0T`````
`
end

View File

@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-pc98.vhdf.gz
M'XL(",F;>54``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9&8N;W5T`*V4/4_#,!"&
M]_Z*J]@Z1/;E[+AK19F1$!]K"$GI`"P,#.&_X\NG'3=IBYRXD:O+/7E?GWU"
MM!<`(8C\Q',^4.\2_ZY7FU5#D]5U0*4@#X&/%MC@D/5M"0H".YL,J*IQ>($Z
MF5P]3MI@".JR9@,G<)U=BKQ^V!A6&9`"I<'@I0J?]T\G#&,\PRT.S^$&P?(2
M7,I9SIM6+<H!-Q=H<>N.M1YQM*3.(D1YE5D5=[,@FDF>6V<0=@\7($P70Q\X
MU!=&?=M0!GIV%_1!:#=G7.:_+QT<GK$+/NYUL;;+ZM:ANB)R,=+IR;CPY#+$
M/[DM#N,V`FHZL]V!W".#YWR@OD_\NP52!XRV@H3:<%BGH"O0)6C%\XQ`;R$S
M+A#]G5077Y]E\7W\<2O,.#GIZ.[@?$SYM.@,,.>/Z#>>._IN]H?-\>/0X_I6
MU7^8-"^ZLA`*[-J`-J/=N]W#;8/<O0_JTG"1QBS[R]Y`$$CI&>_464SRZYNE
IP6Q9@3*-S'YX?[P`XUZFK8IQ2DRR_EO;%J<C;Y5<B-4?7X$:67`(````
M'XL("(0EAE4``VEM9RTQ>#$M-#`Y-BUP8SDX+G9H9&8N;W5T`*V5/6^#,!"&
M]_R*B[IEB.S#-K!6RIZE[0P4HJAJNW3HP(^O;4SPV4!(9;"0H^.>O.?[@+'A
M`A`(K)IY+AOZYR.]^]UA9VF\>PPH)50Q\$4#+0Z-OE)`(T#O@@5=-RUBZ(_!
M->*X-L8@Y[5HF,&Y<$7B\T,;L,Q!2)`*"MRJ\.WT.A,PI@MXP.$]W$TPWX++
MC)?WIE:+_(9;,@RXO6/M)YQ84Z<1K'TH6)FV6!"+P,_/,S!=PPVPPMF0`F_Y
MA4E?&<M`$NZ*/HC#K0PNI^]S#X=WP@6*JU=SNZYN'ZMK$B<C"SMC8^<:".W<
M`8=I!X&PDUE7H)F1T7/9T)^/]!Z`P@&3G:!TWPZ5@>I`M:"DV><"5`EYX0.1
M5E+??'^US<_UU\^PP?%@HOO+^&-FND7E@)7Y$_5N]IZ^I]/E</V\C+AQ5(T3
M23>;]LH05!V%*X-FN^*'19XG=5E\2-(_O5(!$\`Y"=RI.]-REC:_8[!M![6P
BYS,N\H,89D>5P4D6>/TWMP-.)2X5_57;_0$2<&2X<`@`````
`
end

View File

@ -1,17 +1,17 @@
# $FreeBSD$
begin 644 img-1x1-4096-vtoc8.vhd.gz
M'XL("/3%'50``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&0N;W5T`*V6R6[",!"&
M[SS%2+UQ0-[BP+5JN56JU!?`21S40Q<!!PX\?&<29W$2!R@.QC)RYO,_X[$9
MQNH'0$O0)6@+.J%QJD!O(%T#X*1KHNJY^PF7_.?;YJ?/\\H]ET4-XZQOY9N3
MO9"@<)$4A*%%=$%CN#28U=/K?OGYM6]PPN&:A94&)2!!B!JMHUFKCDC;YX^7
M"KGKU,FQNLX*OYD"IH#SWANR4;=K-;8XA59E6;44C*ED-LW[X4UTS@YP"1M8
M]61.!;7G[!1.SUG=@ULNW%[4J8*)D6*/H>.0"AICVC1Q&#5,E?/QUQR.=J!/
M!%)%M_KX:$Z&W14N543SLE.@*)WGW(6*<AKB)E+EH>AIWTZY`0:!)<V$J-SW
MH]>AH*]/<S83\_!F!/49TH?'"W>4;H&D.V=2XT01<GA[L!9/FG[SXV<"N_OO
M^)FU9W?E=*R!;>C6"::+V716F\</FS&QW*UQV:TXNKX**"Q8.\#M>K@\\F9D
M(W<M9;*\#<B&[F;DKAR\SUT?P-%%RD;Z:ESGKNB9"`\WNEQ(';3'K(\K6MQ0
MXQ5GV:0Z&S55LO)67&$@LR`ER&2$DXG#Y62%?T3,3/3AB<O[RO_4J2+<O1+M
MHA*Q%2H'C*80@3:R0LYF,^/>\ZN=PDA5'^$B5GV$BUCU$2YBU4>XB%4?X2)6
2?82+6O7I*O<6?^^O%OLJ#```
M'XL("(<EAE4``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&0N;W5T`*V636_C(!"&
M[_D5(_76@P4#'B?7JMW;2BOUT&MP3*JHVFW5Y-!#?OPR-O[`F#1M<3#"PO/X
MG6&8($1W`9`"V@-9H)+'E0;:0+4&<).^8=M+_PCGW>L_NSL=/@I_G5<=3(JI
M56C.]JA`NX]4@(8_0@V/X=QCBIN'Y]O#W^<>AQZ''E16;*40J(Z^0V)0QZ2G
M`[ZTR.VH3L7J1BMWUQJ$!BDG;ZA>W7;0.."TL]KOVU:Q(HY/WX*'8()Q+T41
MXTHQLYK(7`KJQ-DE'%VR^@KN=N77HDL5EQB5ZUWH)%3(8Y<V?1RBYE+EX_AF
MWH]VI@\3J4*#/AG-J;2[Z%,%^Y>]`LWI?,E=:"FG.6XA57X4/0KMM!^X((BR
MG\#6_3!Z(PJF^DB*"S%/+T92GV%]FGA%N0J4H!%*MUDU*'(33<KA7^_6WCW>
MT^\P?B:QNM^.GUD'=I_LCC6(#5>-9+J8S6BU^?EF,R:7NQVNOA;'Y:N!QH*U
M,]QV@MME7HPZ<M=R)JOK@&+N;LWNJMG[TO<)'!=2$>GK<*.[.#'!`!<5%U8'
MPS:;XIH!-]?XB;-B49W-FBKU_EI<8Z"VH!2H,L*ITN-V;.7^B(19Z-,3YS]%
M^.M2!7U=R5:H,+="[8'9%#J@S:Q0BHN9\=7]2UYAIE,?XS*>^AB7\=3'N(RG
;/L9E//4Q+N.ICW%93WW4YM[J/Q`EJ(,J#```
`
end

View File

@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-4096-vtoc8.vhdf.gz
M'XL(",R;>54``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME$]/A#`0
MQ>_[*9YZVP-IAU+@NM&]F9AX\2@+9=V#FA@/'O"[.Z6PT,+^B:$4`GG,K_/:
MR0CA!J`T4H).[%2$)(92B!4+%5B?3C3;+V,VS_?J,7*C63F89'$V1)P3FB@8
MS6K=`3,O3IX'9A`Y!,T"'2X?HO*+N'/Y.5RQE%V'VUV+T_RL4!D8$^!>1[AR
MX<.0$[L&?.`DVV*Y!+Q1@5UI[;K@\(3E*1P+S0#R<8-=&H60AY-SV2%RMX^K
M!ER0XX7=\_/K<6;14I'UM;BJP,Z`""*>X&Y['-FHA/\O9IZGA>8I\B]7*JH#
M+E9[BG1F91U#U]"F[54Q4@6=(\W&0/*.&4WY^6'*[\//>/\LSC:JNIZ?-IZX
M"?(B*:BPB^C*OH_RNWO8KP_O^QY'G:M^86ZIQTX:NF1!9X/=+??1%KEY.V87
M3S=IB.([Y<:L(*5GO,N.,=&O;U8=S9H:2=:FV4_OPQ,L[B6L/8M+1!#U_U*V
1.+UPJ11"K/X`5,-&%]T&````
M'XL("(@EAE4``VEM9RTQ>#$M-#`Y-BUV=&]C."YV:&1F+F]U=`"ME$]+PS`8
MQN_[%`]X&1-*_K>]BGH3!AZ\VJ[I&$,%\>`A']YDR6S39'5(T[2TO'U^>9_D
MY27$#T`HE`Q*NBD8)(<0X-(&.MAX.F$>/[6^>[Z73X4?9N5AU`:S$C(7,,5D
MF-4F`*M(1^>!%4@-PK)`CZL'5?TG;BX_CVN6LNMQ[;4X99\=.@VM)[C7$6ZW
M\&'0Q*Z&/7!6705<3^U29]>+IR=,+^%LP*R3_#QNL,M&$A;A:"X[%/Z.<=V`
MJQ+5G-EU-CN]:*G0_EI<UZ#58"VX2G"W*N"84TG[?Y-Y7@Z8;1%?OE1$`"Y6
M>S(T*L6A>BA]ZE4<I8"J459C((N.&6;W\:YW7X?O\?[)T*CZ/C^=GMDF:!<I
MP1JWB.K<^RB_FX?]YO"V/^-8<,7"PK)T*FZ[:IO8E;'=EP,[GI#;(3N>;I(<
M[UZM0`0HC8R'[+9QL3B<^#6K>[3BM#_G&7U$@6SM.9PD$]7_2]GAU,*E8FMO
*]0/Z[P?!W08`````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-512-apm.vhd.gz
M'XL(".7%'50``VEM9RTQ>#$M-3$R+6%P;2YV:&0N;W5T`*U6RVX;(13=^RNN
ME%VD6L#`G739JO&N4I2HZV0Z9B)+36+%EIJ%/SY<'H9Y,+5=QA@Q8N[A<.X#
M&',/`%:`':`&5#2N)>!7J&\`S*1OPO;<O\*A?7O5[7[SL?3/8>'`.$NM^N9D
M+RJ09I$:1$.+X)K&<`@PRZO;Y^O-RW.`$QXN+"P1I`!E0.1H'61'=H2T^O[P
MPT(^17;5F%VT,O_?$I@$SI,OJL#NZ<CQ"">-5=?95D/36)JA]5YZ$W&S`SC%
M!E8)S2E1D\U.P>&<U3EPUPOO"Q<J)C!JTQOI.-2"QB9L@@ZC9D+E8[=MWG=Z
MP$]D0@6/_/AHKLIO5_A0$>%CST!2.,]M%RS*?@@W$2K_I1[V[:0?&!&8"A/"
M;K^O7H2"E!]R-J-YWAE9?@WQ,ZFI1$AVVZI_;?CVGF#8T!U-QKL7Z]?2M,D0
MN9Z*BO@RS-V[GY/ATA(_R2F,*9);BN%3^'W;;O_H"3A1:KL.KAJS4YW/.9MT
MKD3;WI5NU05VCR;;]IO]YNWU,<!1H:)2:Q%/9_?2;"?9J<*^U2?Z-B2-\(!]
MWT+@ITO'GK;N0!*>3D@5SR"Q-L05S9GW$>#J76MS"GWYM7I(]=.R+#_.3M!/
M)/JY)$GU2VL+SQWBE_.;U8\.DWHB-J-^N[\N$`._TOH)KQ]K)OK\Q.%NV?\Y
M0.&+:;'J+&+U*\-0>L!B#&7,X5(,.<XZ\UPOHV=8Z*J+^2ISR567X`I>==&7
BK*P5.^NJB[YD%;KJ$ES!JR[!%;WJHBVHBT^(Z?)+'PT`````
M'XL("%4EAE4``VEM9RTQ>#$M-3$R+6%P;2YV:&0N;W5T`*U6R6[;,!"]^RL&
MZ"U`!7)$CMIC@R:W`D&#HL=$D:E`R&;$!IJ#/[X<BK16JK9+F29(4//T^&8A
MA6@?`,J!:B`#I'E<**"O4'P!L(N^H>NEG\*^>GLUU:[YR/RS7[5@4O2MAN9L
MCSDH^Y$"L.2/T)K'L`\PV:>KQXOFY3'`H8=##Z0+MLH1Z&'R'1('=HSTN\$G
M!WG?L<NG[#HK^W]0(!1(V7LC#^SN#QP/<,I:U;5K!3-B?4(;3`8+#/>495,X
M+496/9ISHO8V.P='2U:GP%VLO"_:4+&!4=C>2B>A0![;L`DZ3)H-E8_MIGS?
MFA$_C(0*'?C)R5H>WR[Z4,'PLF>@.)R7M@L.93>&FPF5_U*/AG;*#ZP(0H<%
M=-L?JM=!09\?2;&@>=P947XE\[.IJ;'+-MOR?VWXZB?#B+$[RHAWS]:OXF6;
M(6H]%Q7=9)R[-S]FPZ5B?DIR&',D5QS#Q_#[MMD\FQDX3+7=%BZ?LM.USSF7
M=&V)=GU;NG4=V-W9;-LUN^;M]2[`<:'B4NL0CV?W4FYFV>G$OC5'^C8D#7K`
MH6\A\#.I8\\X=Q`+SR>D!H6@[4&F`->6N.8U.Y\`7K\;<WG[_?.OZ]N^?D:E
MY2?%$?IA3[\V2?KZ]6N+C!WBY_-;U(\/DV(F-CO]MG_:0`S\4NN'7C]1SO3Q
MA?U--ORU@.B+:;+JC%WU2\-0><!D#%67PZD82EITYJE>)L\PT567XE7FG*LN
IPR6\ZI(O65$K<=)5EWS)2G359;B$5UV&2WK5)5=05W\!EOB&R!\-````
`
end

View File

@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-512-apm.vhdf.gz
M'XL("*2;>54``VEM9RTQ>#$M-3$R+6%P;2YV:&1F+F]U=`"ME5UKPC`4AN_]
M%6?L3EA)DY.DNYQ,[P8R&>QN%-NZPM3BA.VB^^_+ITT_%#<:CZ7E-(]OWG,2
M";$#`#EP"D0%<4%C8`C-<R>@GC]':MQ@Y$8]L;"87)AU'A=U1CV96B#5:4X`
ML]X\%@+C=J)>/G6!%J?U80R2Z!!K$/PJ?0]5]9$/X.A8R[4XUE?'"W,?`T@*
M$D'<NZLH0.0Z[=2]5>GA6![+_>[-XU#A1*8GR[^HVZ;5H#H^<FWQRMJB;TH'
M;-<6O#X<N_?0E$-HXU4A5"`%S@`1:*:$<YU3SSW@XI#GL]7CW<MB%?J'.+(^
M<85_-/#/;I+0/PCUB;']$Q?]DPRD'.C-QK_/+]N(7M_8_B7./Y(.7,\GZF74
M_E@@.N!H"I$*`Q3,[75M(O-G0!(":5->`USO=_GZ6'Z'.UCC=(6+8CCT?,KT
M?X&00%-SQ&3Z/M!W.]],R^W&X_SIYW]8U?I4XNXJ54(DS7(7JL`&.7L_J6-]
MDYI9ZBLSW<MQW%JX4Z<PT4][L7A:;%X`3XQ,'ZV'5D+C7MO%L#AS^H4O_[>V
1%B=&;I64D,DOU%=49]('````
M'XL("%4EAE4``VEM9RTQ>#$M-3$R+6%P;2YV:&1F+F]U=`"M55%KPC`0?O=7
M'.QE""MM<DGT<6/Z-BB3L4=QMI6RJ<4)VT-__')-LJ:VBAN)1V@X[^.[[RZ7
M.#8+``4(!K&VV!J;T-Z>3PSJV7.DUVWD5CTR8,FEJ/-PT<FJ1V,#R,@M8L"L
M%\=]P*3KJ-.G4T`#1_PP`163R35(<16_^ZKZR`?@6*AT#1SOLQ-%\YT`*`8*
M04[M+@N0.;DMNV6U.AS+8[G?+1T<:CB94;#Z"[OMJAID)P+7%J^L+;JFM(#=
MVH+CAZ%[#YMR2!)>%T(;,A`<$(%EFK@@GS[W`.>'/']8/-Z]S!>^?HB!^<DK
M]&.>?N:2^/J!ST^&UD]>U$]Q4&J@-UO]/K],(SI^H?6;6/WBU<!^WE&G4?=G
M`-$"!F,H['26W-YU$I&[&3#Q`5E;W@9PO=_EZV/Y[=]@8:=S40P;Q3-.;X%4
MP%;-B,GHV^-W,]N,R^W&P;GIYQX.H2B*ZW*_]=(5W71?2_;>0*8M.]X72?CJ
M327U<I)T$K?L4E\]`X>_R>8%O&&CC[/.H>,8G,T$UTP__\__K:V!DX%;13^4
*HQ\K>!7WT@<`````
`
end

View File

@ -1,17 +1,17 @@
# $FreeBSD$
begin 644 img-1x1-512-bsd.vhd.gz
M'XL(".;%'50``VEM9RTQ>#$M-3$R+6)S9"YV:&0N;W5T`*V7/6_#(!"&]_R*
MD[IEB.",L;M&3>=*E=HUCF-'&?JA)D,&__AR-MA@C).TV`1AP3V\=QR(,-8]
M`#(!68.L0*;4S@3(1\AR`-6I"[8UUY_0E%^?57D^7E;Z:18=C#/;RC4G>TQ`
MJ$DRP((FD7MJ0V,PJX?-87G\.!@<:IR96$@0"*F""&\>R7IU1'I>OSZUR.V@
M+O'5#5;JMQ/`!'!NC4B,NFVOL<<)9577;<F@*%J9IC@?3L?@[`B7LI&5)7,J
MJ):S4S@Y9W4/;KG0:]&EBDJ,3-4J=!PRI+9*&Q,'KZA4N9R^BY]3-=*'@521
MO3[N]25A=U&G"IK!6H&@=)YS%UK*>8R;2)5_14^Z=D(W5!!8:CJP==^-WH`"
M6Y_D;";FX<4(ZBM(G]I;K)BHPQW->N6^/;`D8)K1=D\EY'AK!-\W;U/K6P;2
MY8^[H\1KN%XPOP67Z+UK49(!%^KH<$RSV(`3<^HH9ZJ[G$TC)W.9C^SL=09>
M`]\#RZVLMH#]^L*@[]&7@8Z[,_K`=[<@7.:.YQ8.K[@++FXWN[;SZIBOKHR\
M&/OQSKAQYQ+$W;D=#N,>!-B>+"H#U2B_#G<T+ROW[8"HCZIH9Q^:HRJ60J&!
MT10J8!59(5:SR79O%DJM,-)%DG`1+Y*$BWB1)%S$BR3A(EXD"1?Q(DFXJ!=)
/J?XB,+;X!=0\?G%]#```
M'XL("%@EAE4``VEM9RTQ>#$M-3$R+6)S9"YV:&0N;W5T`*V738^",!"&[_Z*
M2?;F@;1#*7C=Q/N>UJN(:(S9CZP>//#C=P8*M!10=PO8E+3S\,YTIJE"-!>`
MCD$?0)>@$^ZG"O0*T@R`!LV#=2O-*U3%UV=97$^WR%S5HH%)85NYYFR/,2CZ
M2`J8\T?TGOM0M9CH97U<GCZ.+0X-#@TH2=DJ1M`[[SM:=.J8M#GAN49N>W6Q
MKZZWHM].@5`@I34C;M5M.XT=3I'5X5`_*2OB^+2/\^(,,.X<13XN$0,K2^98
M4"UGQW!ZSNH9W')AUJ))%4J,E%H*G804N4]IT\;!>RA5;I?O_.=2#O3A1*KH
M3I_TQN)I=]&D"K:3C0+%Z3SG+M24ZQ`WDBK_BIYV[93I4!!$T@Y@[;X;O1X%
MMCXMQ4S,IQ=C4E_.^A3563[23@]4KY%[=\""@52O5.Z)A@P?C>!F_3ZVOL5$
MNORQ.@J\A^L$RT=PL:E=BQ+WN*F!!B<,2_0X-:>.<Z9\RMDD<#(7V<#.7F>0
M!Y![$)F5U1:P6U_H]:U\&>BX.Z,/?'=SQJ7N?&GA\(Z[X.)VLVL[KT[XZHK`
MB[$?5L:#E<L0MW(;'(;="+#>62@#:9;?3@]4;Y%[-T`T6U6PO0_;K2J40F6`
MP102L`RL$,O99'LV"[51&.@@R;B`!TG&!3Q(,B[@09)Q`0^2C`MXD&1<T(.D
/IK\(0BQ^`5WG%2]]#```
`
end

View File

@ -1,14 +1,13 @@
# $FreeBSD$
begin 644 img-1x1-512-bsd.vhdf.gz
M'XL("*>;>54``VEM9RTQ>#$M-3$R+6)S9"YV:&1F+F]U=`"ME,%.A#`0AN\\
MQ1AO:T+:H2W=*W$]FYBH5Y:%=0_JQ8,'?'<[0*$#"[L:2H&2Z7S\,]-6B+8!
M*`21GWG.&^HLYE<=;:*&A@34*2@-VH!UT\70V0<SU"^[YSAL=8>32U[SN'C4
M/`XOX7K!\AI<0E[!S$0!RAXW9VAPZJ9%T=OCU)(ZEPE1_BE8O5;N?&WMR"^L
M,^`>1`'"=C;D0*KO'0U@T+>=RD`6[H(^F(:;$R[E\V6`PPOA`L?M%VN[J,[7
M-L05*Q<C&>^,*W<N0?C.;7&X[D&`S<GB5J";-7W.&^K'F%\M4'7`U3*HT%@R
MFP1,!:8$HVF<*C!;2&T(1+Z2ZN+SHRR^3M]AA0E'!:FJ\YW\,:'=8E+`G'YB
M#C0.]-WNCIO3^]'C_%'E?ZP,)5T[B)J$ZPS&#N$^9$_W#3)[Z]4ETR0-7NY.
M#R`42,D"[]0Y3/S#@U5]L&4%VC8R?6<?S$"XU_%113@M1E[_K6V+,RLOE5R(
*Z!<+G]H<,`<`````
M'XL("%DEAE4``VEM9RTQ>#$M-3$R+6)S9"YV:&1F+F]U=`"ME#MOA#`,@'=^
MA:4NZ`:4F"3`6NEVIG8&"B=4M5TZ=.#'-P8",:^[5H0H`CG^\%N(80$H!%%L
MG/N"[CGB3Q=<@IZ&!-0)*`W:0&JOBWFS#R;H7J\OD;^Z$2>/M/9QT6(Y'-[#
M30;+1W`Q:4E&P73"[0D&7#BRPAFGCJRSD1#UGYS59\7.Y39=Z/EY!MF`T""<
ME\B!4WYAMB];FX',W0/[8.UN0;B$WY<>#N^X"QQ7'N;VV+IP;5UU<C+B96<\
MV+D$X9T[X/#<08#]9+$5:&^MSWU!ET?\&8!J!)X603W./A.#:<#48#2])PI,
M!DGJ`Y%74E=]?=;5=_OC9YAPE)"FV=ZDCS%UBTD`"_J)>:-WS[ZGZ^W2?MP<
MSHTJ-Y%LLUFM&,&4*W?UHME:?.^1^6Q=O`Z2]J.7&1`*I&2.C];EO)P)IR9G
EZP9*U<?';?;!!)NCBG!:++3^F]L!9TXN%5M\P2_U(^.V,`<`````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-512-ebr.vhd.gz
M'XL(".?%'50``VEM9RTQ>#$M-3$R+65B<BYV:&0N;W5T`*V735/#(!"&[_T5
MZWCST($-;-JKHYZ=<=2K:4P<#WZ,>O"0'R\$2"`)V"A-2I.!??+NLFPH8^8#
M0`50"]0`27U="J`]E#L`U6E/[%MN;Z&KWUZ;^NOY>VL_W<;`./.M0G-MCP4(
M]9`2L-(/H4=]#9W#;$\OG\Z>7YX<#BW./5@0"`2I(&+V'&*#.DVZ.K^YZ)$/
MH[IBKFZT4M^#`":`<V]$X=0]#!H'G%!6;=N?)515+].=P4W0,3H[P4DVL?)D
M+@75<W8)1RFK-;BSC9T+DRHJ,4K5JM!Q*%%?J[1Q<9B=*E6^/]^KC\]FH@\C
MJ4*#/C[K*^+NHDT5=(.M`J'3.>4N])2O*6XA5?X5/0KMA+U006#2=6#O?AB]
M$06^/N(L$?/X9$3U54F__N#PX;`:&%%H</7@<"5'CTR2C,%$'M=WXN,><[O;
MK@-*J2O&%'CK]-7:2I4Z5BVT\8[N?!L>@[Y&`V6IJZ\DV.&Q#M]?WBU-1Q-9
MO>OC9W#X&VX0S(_!%;:4NI%^9L0[NC%-S*_#B90ZO82;5<[*S+G7["9V_CP#
M4ZND!K:S?1@"A_F%4=]^+@,#=Q/Z8.YNI7%E.)Y[./S%70AQA^3<IM6=S-75
MF2>CG:Z,(U>NAH0KU^`P;R'`OK*H#%2CYFV\H[O>AH<!HGUS9'L5H:U]V10*
M"\RF4+ABFD]AP9+)MC8+R2K,M*^G>+G_R[Z>O'*?85]/KMS'K-BJ?3W9<I]I
;7T^NW.?9UVM<UGT]J7]LC&U^`&IC,XL,#@``
M'XL("%PEAE4``VEM9RTQ>#$M-3$R+65B<BYV:&0N;W5T`*V737.D(!"&[_,K
M.K6W'"QHH9U<MRKWO>SF&C6:FDKM1VURR,$?OR"@($+&+*/#:$$_OMTT+<.8
M^0!0#30"#4!27S<"Z`Z:,X#JM"?.+;>W,/6_?PW]V^6]LI_I9&"<^5:AN;;'
M&H1Z2`/8ZH?0D[Z&R6&J+_?/MY>?SPZ'%H<6)!MM52-0%SV'V*).DQXN^#(C
M'U=U=:QNM5+?3@`3P+DWHG;J'A>-"TXHJW&<ST8KTO%Q9W`3=&C<2U7%.,DV
M5I[,O:!ZSN[A*&=U!'=[LG-A4D4E1J-:%3H.#>IKE38N#M&I4N7]]4_[]W78
MZ,-$JM"BCT=]==I=M*F";K!5('0ZY]R%F?*VQ>VDRG]%CT([82]4$)AT'3B[
M'T9O18&OCSC+Q#P]&4E];=:O3SC<=8>!"84&UR\.MW+UR"3)&DSD:7TW/NZI
MM+OC,:"4T+81\+O3UVLKH<I>N].F.Z:O57@L^@8-5.5355])<,9K'7ZX_[$W
M'4-B]1Z/G\'A1[A%,+\&5]M2ZD;ZF9'NF-8T,;\.)W+J]!(>#CDK"^?><-[8
M^?,,3*V2'MC9]F$(7.875GUWL0P,W,WH@]C=5N.:<#SW</B!NQ#BNNS<YM7=
MQ.KZPI,Q;E?&E2M70\*5:W!8MA#@7%E4!JI1<9ONF+Y5X6&`:-\<Q5Y%:&M?
M,87"`HLI%*Z8EE-8LVRR'<U"L@H+[>LI7>X_LZ\GK]P7V->3*_<I*W9H7T^V
=W!?:UY,K]V7V]1I7=%]/ZA\;8Z=_%7&;G0P.````
`
end

View File

@ -1,15 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-512-ebr.vhdf.gz
M'XL("*J;>54``VEM9RTQ>#$M-3$R+65B<BYV:&1F+F]U=`"ME3US@S`,AO?\
M"N6Z9>!L81MGS36=>]?KQTH(I!G:+ATZT/]>"_-A8R!)SV#`G*R'5Y9L&+,'
M@+DFV[RA3D9'O=JL&AH_W`RLJDF@Q17&RPPP+9=MQS3&'1QG@'Q>W]K%'6.'
M6]T&E!+R/``^=_J0O`0"RR?N\X9ZE_AGKT\04&8@)$@%&J\-^'7_,I4.P6/-
MG\7A)5POF%^#2\G+&>E6QKRA'LK$/CN<6%)G$*R\*5@9N?:$'OFY>09F5DD!
M3+<V](%]?F'0MPUEH!?N@CX(P\T)E_GCN8/#"^&"CSLLYG99W3I45T1.AARO
MC"M7+D'\E6MQ&'<CP&9G,15H1H7W>4/]F/BG!8H6&&T&!2I-9I6"JD"5H"3U
M,P%J"YEV@>A74EU\?9;%]_G'S3#A>/_G"!OY8TJK166`.7U$':GOZ+O;GS;G
MCU.'Z[:J[L-"T:1+`Q%!N,:@]!#NP^[IOD'NWGMU:3A)@Y>YLB,P`9Q[@;?J
M#";Y]8,5?;!E!5(W,KOFO7@&PKV-MRK"23;R^F]N+4Y%+I6<L=4?RT&B4[\(
"````
M'XL("%TEAE4``VEM9RTQ>#$M-3$R+65B<BYV:&1F+F]U=`"ME;%R@S`,AO<\
MA7+=,G"VL`RLO<N>I>T,!'*Y7MJE0P<>OC;&Q,9`2,_@$.=D??EE288Q<P&H
MS^Q8-G3)Y.IVAUU/X]73P+:=!1I<K;S4`C5*&B9J,.[@.`/DR_KV+NX<.]SV
M.2`1E&4`?+/Z4'L)!%;./)<-W6OBWZ,^H8&4@2`@"3EN#?CC^#Z7#L%C[9_!
MX2/<*)AOP:7:RUGI5L:RH;N7B?FV.+&F3B%8\U2P%+GV1#[Q<_,,3'5)#2P?
M;.@#Q_S"75\1RD`OW!5]$(9;:ESFK^<.#A^$"SZN6LWMNKI]J*Z.G`R:=L;&
MSM40OW,-#N,>!-B?+*H"U:KPN6SH3HE_&Z`8@-%VD(97D4Q!MB`;D*3GF0!9
M0):[0/0KJ:N_OYKZY_KK9ECC^/CF"(?VQU1WB\P`2_TG\JSGCKZ7X^5PO5TL
MSAY5]D12S::\4@19!>'2I-FN^-DC3W=U:;A)Y.Y>(8$)X-P+?%!W\LN9^G/>
G!MNT4(E^?^SP?GB&V:-*XXA-O/Z;6X.3D4M%U=[N#X:PW+*_"```
`
end

View File

@ -1,22 +1,22 @@
# $FreeBSD$
begin 644 img-1x1-512-gpt.vhd.gz
M'XL(".C%'50``VEM9RTQ>#$M-3$R+6=P="YV:&0N;W5T`*V82V^<,!"`[_D5
M4_66JA0;V[#'1DVDWM+7+8>`@6BE=OM(#E'%CZ_'V(`7FW238;V(E7<^YN7Q
MR'D^7@"J`-6#ZD!)?"X%J!V4%8"9=(/;.W,_8=`_#YU^V#]F[AK.1AC+EU*A
M.,KS`H1Y20F\QI>H%I]A\)CL]>7=^?['G<=QA_,O%@H$!VD@8O4>E4_:(>GJ
MXLL'B[R=M2O6VLU2YML(R`4PMOA'X;6[G72<<,)(];T=)90URDXC^!%,(.YO
MEJUQ,C^26J@9<^K"V!A.;4F=@CL_<[$84\4D1FGNQG4,2H[/)FV\'U;#I,KC
M_:_ZSWUWI!]/I(J:]&.KN2)M+G>IPOV?G08"TWG+7+"4AV-<)%5>Y#T5ROGH
M&B?DTD]P:W[HO1D%2_T4RS=\G@Y&4K\:]3-K*Z\C]_3$<)&%GPG8-*<!O0=#
MW&1PH]%_MHYTW6S1F"2S8XN-@.0+_S4M<7R;_C2@E%#7*^`WKY^VX9"VX.TP
M,4QQ$`RD*7YS.EO;I5[J=WGU$:[??_Z*L)O97(WITK6X@DS5[=LC[=8K;3)W
M'UMLFH_9Q_NHL442]RZZ=C4N-J-4&A<;:9S8DG);V?\74BWS4*I:2E42*@Y*
M0ULG<=\#''5=[G"Z45!JW,(E`VWW\E;A1@:562:5A7#@)NYF8S>[<(/`X?`I
M.XRPM]GO-TZ_CKF,B(WT1,I['=_*"%3J"7,AQ%'7Y:Y"[TDR[^U<LL1&>B+I
MO7KT7MQ)J%1LZ4Z[6I:]"G$-K?>8;1_-^C#U>WU/3PS76?@9@=QM0V3[&G>%
ME$Q#X8!D&@JW?@DU9&(SF*=&6;F@$%48Q!%6&,015AC$D588!!)6&,015AC$
M$588Q)%6&$7;""G7".6E#4`!31>JD6QI!A\(WW)X'-]JGS8:H7@P*!LA]50C
MU'=)8_UU9"QA(Z2H&R'E"BG168;RC=!:A^><92C?""U>_(*S#!5OA)Y[EH$X
8PK,,Q!&>92"..%6P;SG[!W<O66(`$P``
M'XL("&`EAE4``VEM9RTQ>#$M-3$R+6=P="YV:&0N;W5T`*V82V_4,!"`[_LK
M!G$K(CB.[63%":0B<2L(Q*6'YN%4*V!YM(<>\N/Q.'82;^R4;2?KC;+RSI=Y
M>3PR8^,%H`I0/2@-2N)S*4#MH:P`S*0;W-YS]Q.&]M=1M_>'A\Q=PVZ$Y6PI
M%8JC/"]`F)>4P&M\B>KP&0:/R5Y>WEX<?MYZ''<X[D"R1*F"@VI6[U%LT@Y)
MWP[\NT7>S-H5:^UF*?-M!#`!>;[X1^&UNYETG'#"2/6]'244#<I.(_@13"#N
M;9:M<9*=2"W4C#EU86P,I[:DSL%=[%PLQE0QB5&:NW%=#B7'9Y,VW@^K85+E
MX>YW_?=.G^C'$ZFB)OWRU5R1-I>[5.'^STX#@>F\92Y8ROTI+I(JS_*>"N5\
M=(T3F/03W)H?>F]&P5(_E;,-GZ>#D=2O1OV$66=UY)Z>&-YGX6<"-LUY0._!
M$#<9W+3H/UL'M)XM&I-D=FRQ$1"V\%_3$<>WZ<\#2@EUO0)^]?JU-AP2A`*Q
MQ\0PQ4'D(#G(.9VM[;)=ZG?YX2-<O?O\!6'7L[DMIHON<`69^MEW)]JM5]ID
M[B&VV%H^9A_OH\862=R;Z-IM<;$9I=*XV$CCQ);4M)?\1VQ'G&2A5+64JB14
M9CMJH:N3N!\!CKHN:YQN%)0M;N$RA];NY9W"C0PJLTPJ"^'`3=S-QFYVX0:!
MP_%3=AQAK[,_KYQ^.G<9$1OIB93W--_*"%3J$7,AQ%'795VA]R29]_8N66(C
M/9'T7CUZ+^XD5"JV=*==+<M>A+B&UGNY;1_-^C#U>WU/3PQ76?@9@=QM0V3[
M&G>%E$Q#X8!D&@JW?@DUS,5F,,^-LG)!(:HPB".L,(@CK#"((ZTP""2L,(@C
MK#"((ZPPB".M,(JV$5*N$6*E#4`!C0[52+8T@P^$;SD\CF^U3QN-4#P8E(V0
M>JP1ZG726'^=&$O8""GJ1DBY0DITEJ%\([36X2EG&<HW0FQVX#/.,E2\$7KJ
;60;B",\R$$=XEH$XXE3!OF7W#R':UU\`$P``
`
end

View File

@ -1,19 +1,19 @@
# $FreeBSD$
begin 644 img-1x1-512-gpt.vhdf.gz
M'XL("*V;>54``VEM9RTQ>#$M-3$R+6=P="YV:&1F+F]U=`"ME4N/U#`,@._S
M*SS:"UI$E3B/9FXP8E=P6V"Y<>ES60D&(7'@4/X[<9(^TFD&=I4T4V7D^*OM
MV#%C?@!(!%9MO-."X5C$S["[WCD:KY\&M-\G$U;`P@(]KK%"AK2GZZ#OPV3<
M:7EE(0%Y6(^X8AIR7RQP[:1U/M."!<Z/V=W^:4"EH*K.@)]'^]`=AP*I01X`
M[7X&DH-"4'+".5]5L[3OYO8]W+WY>$^P+[.[R*VP;T$:$`B\7UG'D^Z^PY6[
M'F<-`B'6T1YQ(H43^W7T/$X0CE_`;4T8>`(G+VGY'/J_L_4XQ6(ML]0R"@R"
M;J"MDKAO$4YGSCQ)XEI#V8#N0'%H>EJT&CBW]MDR,0Z"@"VP`Y0VT#4!A].'
MXN1AKXJ?+X-]DH>,V)II02IZ$B]E!!GU#W<AQHG<T3,4/94M>H>0+%LS+4A&
MK_+1VPX2&;59,L,8M6(?X^K,T=,DMO5A[^_S=UHPW!7QXX$R`+-9*%'GK`["
M9:P.PF6L#L)EK0X"9JP.PF6L#L)EK`["9:T."W3)G*F)$\XU\9[B7`N0*S.2
M[9CL>TTH$;NK\5+K3S?QQ&'HC$V<<!>;N$B?;1BX<C9C$R=<UB9N@8;$6H!V
M]:45K4L)VI:460)QSAD';'Z<NN;7X^]5]$Q(E<U)^B@H,74)6-%'=$OKA7U7
M-P_7C]\?1AP&K\8/4T;;++80>>:N%6@SNWM[_/36(8]?)^LVKJE9R_Y*>YE(
MNF*6C@?K+*;X$SLK)V>['M"0[C2C/Y&`<"\V,L^X5%EN?N[9>ESN5*D8V_T%
(**T"\+,-````
M'XL("&$EAE4``VEM9RTQ>#$M-3$R+6=P="YV:&1F+F]U=`"ME\V.U#`,@._S
M%$9[6+1HJR9-TO8(TB)Q&V#17KCT)UF-@$%('#C,PV,GZ3:92;HL2FM5&;G^
M:CMVW:EK=P`(#O60N.85IW=5?)YV-SM+8^/+@/A\<N$,6"'0X294UISNT1J,
M\5(S:^6,47BWKBVN6H_758";0ZLSR2M"7.5P2[CF94`I81@N@%\6_[C=#@E"
M@>B!X_TU"`:2@Q1/.!N[G$+_[MY_@/W;3_<$^[J&RQDJS03]#+HE1.P=VPCW
M/@[7X3CA#/`V&6R3Q5V?9\_A&L+-&[B4Y'%BR\K5T+_MK</).K;J0JM.0L=!
M33`/6=SW"*<*5YX@]:B@G4!ID`PF0XM9`6/H'[:)ZPD.?(:ZAY8!'PEX.GZL
MC@YV6_UZX_T3S%=$2O**7/8$WZH(<NJ9<"'&-:6SUU'V9+'L];Y84I)79+,W
MN.REDT1.I5H7<3YKU:L8-Q;.GB(U]@>^OR^O><5I7\6G`PH/+.:A,&8JV!V$
M*]@=A"O8'80KVAT$+-@=A"O8'80KV!V$*]H="-1UN2%..*J]&7/>@\0A'E=-
M?ARC?P^?K6/74;B:;XW^C2&>W@Q=<(@3;G.(&YT/UA]GP18<XH0K.L2E__Q6
M#2C;7TK2NA6@L*6Z$,C7FK'`Z>=13[\/?\+L$8ZYBD@*V?.&"E.UP`=ZB)II
M'?AW=?=X<_CQN."XCVI)(-8?6C68L_$B7!F'^W#@WRQROWJ7>$W),'N]@EK0
M*R8,W'NWCTM%VB^@)5AMH!-D^R31CTB1+&3"V5();_[?O76XTJ6"?PUV?P'7
':/,?LPT`````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-512-mbr.vhd.gz
M'XL(".K%'50``VEM9RTQ>#$M-3$R+6UB<BYV:&0N;W5T`*V735.#,!"&[_T5
MZWCST$F69*%71ST[XZA7`<'QX,>H!P_\>!-(0@($BZ:E%";9AW<_LDT9&UX`
ME`&U0`V0U->Y`#I`7@"H07-@?^;F%KKZ[;6IOYZ_]^;5[0889[Y5:*[M,0.A
M'I(#EOHA]*BOH;.8_>GET]GSRY/%H<'9!PL"@2`51,R>0\RITZ2K\YN+'ODP
MJLOFZD8K]:D$,`&<>S,RJ^[!:70XH:S:MC]R*,M>ICV"FV!@=':"DVQBY<E<
M"JKG[!*.UJRVX,YV)A=#J:C"R-59A8Y#COI:E8V-P^Q0I?+]^5Y^?#83?1@I
M%7+Z^&PLB[N+IE303C8*A"[G-7>AIWQ-<0NE\J_H46@GS(4*`I-V`'OWP^B-
M*/#U$6<K,8\G(ZJOU/K4VF+EPCD^T)WOP[<#5M4V8,$&A2'..5S5SN%2CAX-
M13(&$WD\(2=>_*K'Q/FMVFU`*77'F`)OK;XZ=3H:#92Y[KZ2H,!C';Z_O%M:
M;DUD]?ZQ637X&\X)YL?@,M-*[4R_,N(#W5@FP[?%B35U>@DWFYR5B6NO*29V
M?IZ!J552`RN\)N,!77YAU'>8R\#`W15],'>WU+@\G,\]'/[B+H2X:C6WZ^I.
MYNKJQ,EHIROCR)6K(>'*'7"8MA%@WUE4!:I9\W-\H+O>A^\!B.:7(]E/$9K>
METRA,,!D"H5MIND49FRUV+96(1F%B?;U%&_W?]G7D]?N$^SKR;;[F!7;M*\G
>T^X3[>O)MOLT^WJ-2[JO)_6/C;'=#W^X!V4,#@``
M'XL("&0EAE4``VEM9RTQ>#$M-3$R+6UB<BYV:&0N;W5T`*V7/6^D,!"&^_T5
M$UV7`MF#/9#VI/377-(&"$2K*+G3)44*?OS98!L;8[(DWF59D#T/[WQXULO8
M_`*@$F@`ZH&DOJX$T`U4-8`:-`=.9VYN8>S^O/;=^_FC,*_Q-,,X\ZU"<VV/
M)0CUD`JPT0^A1WT-H\44/VZ?KL\O3Q:'!H<&)"MM52)0&SV'F%.G2?=G?)Z0
M#XNZ,E:W6*E/*X`)X-R;45IU#TZCPPEE-0S346E%.C[V"&Z"`8U[+HH8)]G*
MRI.Y%53/V2T<[5D=P5V?3"[F4E&%4:FS"AV'"O6U*AL;A^A0I?+Q]K?Y]]:O
M]&&B5,CIX]%8F7873:F@G6P4"%W.>^["1'E?XS9*Y5O1H]!.F`L5!";M`$[N
MA]%;4.#K(\YV8IY.1E)?H_4)M<Z:C7-Z8/Q9A&\';-MCP)K-"D.<<[CMG,.-
M7#R:BV0))O)T0JZ\^+6/F?/;#L>`4D+31,#?5E^7.QV]!JKVJ;JO)*CQ4H?O
M;^^VEEN?6+U?;%8]?H9S@ODEN-*T4CO3KXSTP+B4R?QM<6)/G5["_2%G9>;:
MZ^N5G9]G8&J5=,!JK\EX0)=?6/3=Q#(P<'=''\3N-AI7A?.YA\-/W(40U^[F
M=E_=5:RNRYR,8;TR+ERY&A*NW!F'>1L!3IU%5:":%9_3`^.O(GS/0#2_'-E^
MBM#TOFP*A0%F4RAL,\VGL&2[Q7:T"LDHS+2OIW2[_\J^GKQVGV%?3[;=IZS8
BH7T]F7:?:5]/MMWGV==K7-9]/:E_;(R=_@,`JJ]S#`X`````
`
end

View File

@ -1,15 +1,15 @@
# $FreeBSD$
begin 644 img-1x1-512-mbr.vhdf.gz
M'XL("+";>54``VEM9RTQ>#$M-3$R+6UB<BYV:&1F+F]U=`"ME3USPR`,AO?\
M"O6Z9?`!!DS67-.Y=[U^K,2QTPQMEPX=W/]>R?@#3.TD/6+9(2?T^!42A#'W
M`9`"F/WC.>]HMEEX-:OUJJ7Q_75`PZ"N(V"&0(<K$8<3T*SJ!FB,`PG'&XTS
M$+P;.X,F&S\WF8<[#%&QS3M\7.9P?;KU=4"EP-H(^-3K$ZG+(0FH"I`*E`8C
M+DWX9?<\2=CA>*KU<SAQ#C<(YI?@<HKR9OJ=,>]HQC9QWSU.+JE#!*NN2E8E
M[CUI)G%^G8'A+BF!F<XG0N!07QCU;6(9(DAW01_$Z5K"%>%\[N'$F70AQ.T7
M:[NL[B965R8NAIKNC`MW+D'"G>MP(NU!(-J3!3L09\7/>4?SD(67`\H.F&P%
MI="&W#H'78.N0"L:%Q+T!@KC`T7824WY^5&57Z=OO\*$X\,_1VP4+W+:+;H`
M8>DE^D!C3]_M[K@^O1][7']4]2^6FA9=(41&Z:)#FS'=^^WC78O<O@WJ\GB1
MQBB\BP,P"9P'B7?J$)/]A,G*(=FJ!F5:F;T%/P('X5ZG1Q7A%)M$_;>V#J<3
.MXIE;/4+C*1.)[\(````
M'XL("&4EAE4``VEM9RTQ>#$M-3$R+6UB<BYV:&1F+F]U=`"ME;UR@S`,@/<\
MA7+=,G"VL`Q9>Y<]2]L9".1RO;1+APX\?&6,P<:!)#U`(<[)^B)9/PAA+P"%
M((H;SWE%^YJ$=[O9;3J:+)\#Y@*:)@(F#+2XBG&\@:6@?L$B)!C'^<,B!:#L
MUU:@3<9KFWBXTV`5R[S"QR46Y\)MG@,205%$P#?G'ZZ=#F6`E($B(`TY/AKP
MQ^%]$K#%R;7.S^+P'FYP6#Z"2XV5M].OC'E%.Y:)_78XM>0=(T3]5+"T<NVI
M?&+GYQD$=TD%(N]U&`*'_,+HWSYV`X-P%_R#.-S"X+)PO_1P>"=<"''E8FZ7
MO=O&WE4K)X.FG?%@YQI(V+D6A^L.`NPF"U<@[XJ?\XKVF(2W!:H>N-H)4O\J
MTBGH!G0-FLPZ4Z#WD.4^$,-*:JOOK[KZN?SZ&38X.;PY8C'VF)INT1E@8?Y$
MG\S:\^_E<-Y=KF>'<Z/*321N-K9*$709A4N39KO@9X<\CMZE\2&1?WI[#4*!
ME$'@O7?'L)RIF_,NV+J!4G7GXR3X$2ANCBJ#(S&Q^F]N+4ZO7"I<>YL_P54P
%QK\(````
`
end

View File

@ -1,18 +1,18 @@
# $FreeBSD$
begin 644 img-1x1-512-pc98.vhd.gz
M'XL(".O%'50``VEM9RTQ>#$M-3$R+7!C.3@N=FAD+F]U=`"METUO@S`,AN_]
M%:YVZZ%*C!/:Z[3N/&G:=BUEM-IA'UI[Z($?OQ@22/A:NP4H"@I^\MIQ3"I$
M?0#H!/0>=`%:<3LET&M(5P"FTUY8W:5]A#+__"CRT]MY:8]R5L.D\*U"<[;'
M!,@,D@)F/(A^Y3:4#K.\V1P6;^\'AT.+<P.3!D)0!D*]<;1HU#'I_O;QKD)N
M6W5)7UUK97X[`D$@I?=&XM1M&XT-CHS5?E]=*619)=-=P4/0T3K;P2G1L?)D
M#@75<W8(IZ>LKL$M9G8NZE0QB9&:NPF=A!2Y;=+&Q:%WF50Y'[^R[V/1T8<C
MJ:(;?;+7EXR[BS95T+UL%1"G\Y2[4%%.7=Q`JOPK>CJT(]LP01#*=6#E?AB]
M%@6^/BW%1,S')V-47\;ZS-H2V<!]O*.\789G`]SMKP,JQ4NH"WQR#N>L;TV0
MTU#<?2<O6AWY2/;]>7Z+R/'#RF&5<KE4&E9XJ<*7S?.`PQC/X1J'O^$:P?(2
M7&)KGWO3J,7F:S/:4>/FEC5O<32ECM=<<96S*FZR8+[JV/GS#,+D<`YBY54%
M#]C,+[3ZUGT9&+@[H0_Z[F:,2\/WI8?#7]R%$+>;G-MI=?.^NCSR9+QV5\:%
M*Y<AX<JM<1BW$%!5F4T&<HWLW<<[RH=E>-9`M*4^VK<#;6V.II`L,)I"LM4Y
MHD(J)I/MVBS45F&DC3CC(F[$&1=Q(\ZXB!MQQD7<B#,NXD:<<5$WXMK\Q1)B
*]@,_NS;^O0T`````
M'XL("&DEAE4``VEM9RTQ>#$M-3$R+7!C.3@N=FAD+F]U=`"METUO@S`,AN_]
M%:YVZP$E)H3V.FGW7;9=1RF=JFD?6GOH@1\_&Q)("-!V"Z0H*/CAM>.85(CV
M`-`IZ#WH"G3&_5R!WD"^!J!!T["Y2G,+=?GU696GPSDQ1[UH85*X5KXYVV,*
MBEZ2`Q;\$KWC/M06D]P]O*T.'V\6AP:'!I3E;)4BZ&WP'BTZ=4QZ.>![@WSM
MU:6ANMZ*?EL%0H&4SA.I5??::>QPBJSV^Z;EK(CC8YMWXPTP[CU)0EPF!E:.
MS+&@.LZ.X?2<U2VXU<+,19LJE!@Y72ET$G+D/J6-C4/0*%7.Q^_BYU@-].%$
MJNA.GPS&TFEWT:0*VH>-`L7I/.<N-)33$#>2*O^*GO;ME.E0$$1F![!QWX]>
MCP)7GY9B)N;3DS&IKV!]BM99,7*='JCO$__L@-O];<`L@R($/EF'2]:W45"J
ML;B[3EZU.LJ)[/OS_%:1XX>-PU3OJ%QF&M9XK<*7A^<1AS&>PRT.+^$ZP?(:
M7&IJGWV2U&+WM9D<:'%+PUKV.#6GCM=<=9.S6=QDP7(]L'/G&03E<`EB[50%
M!]C-+_3Z-J$,]-R=T0>ANP7C<O]YZ>#P@KO@X[:S<SNO;AFJ*R-/QFZX,JY<
MN0SQ5VZ+P[B%0#65F3*0:V1PG1ZH'Q/_;(%H2GVT;P>:VAQ-H3+`:`J5J<X1
M%:IJ-MENS4)M%$;:B#,NXD:<<1$WXHR+N!%G7,2-..,B;L09%W4CKNDOEA"+
)7SQ_K7"]#0``
`
end

View File

@ -1,14 +1,14 @@
# $FreeBSD$
begin 644 img-1x1-512-pc98.vhdf.gz
M'XL("+2;>54``VEM9RTQ>#$M-3$R+7!C.3@N=FAD9BYO=70`K90]3\,P$(;W
M_HJKV#I$]N7LN&M%F9$0'VL(2>D`+`P,X;_CRZ<=-VF+G+B1J\L]>5^??4*T
M%P`AB/S$<SY0[Q+_KE>;54.3U75`I2`/@8\6V."0]6T)"@([FPRHJG%X@3J9
M7#U.VF`(ZK)F`R=PG5V*O'[8&%89D`*EP>"E"I_W3R<,8SS#+0[/X0;!\A)<
MREG.FU8MR@$W%VAQZXZU'G&TI,XB1'F5615WLR":29Y;9Q!V#Q<@3!=#'SC4
M%T9]VU`&>G87]$%H-V=<YK\O'1R>L0L^[G6QMLOJUJ&Z(G(QTNG)N/#D,L0_
MN2T.XS8":CJSW8'<(X/G?*"^3_R[!5('C+:"A-IP6*>@*]`E:,7SC$!O(3,N
M$/V=5!=?GV7Q??QQ*\PX.>GH[N!\3/FTZ`PPYX_H-YX[^F[VA\WQX]#C^E;5
M?Y@T+[JR$`KLVH`VH]V[W<-M@]R]#^K2<)'&+/O+WD`02.D9[]193/+KFZ7!
H;%F!,HW,?GA_O`#C7J:MBG%*3++^6]L6IR-OE5R(U1]?@1I9<`@`````
M'XL("&HEAE4``VEM9RTQ>#$M-3$R+7!C.3@N=FAD9BYO=70`K94];X,P$(;W
M_(J+NF6([,,VL%;*GJ7M#!2BJ&J[=.C`CZ]M3/#90$AEL)"CXYZ\Y_N`L>$"
M$`BLFGDN&_KG([W[W6%G:;Q[#"@E5#'P10,M#HV^4D`C0.^"!5TW+6+HC\$U
MXK@VQB#GM6B8P;EP1>+S0QNPS$%(D`H*W*KP[?0Z$S"F"WC`X3W<33#?@LN,
ME_>F5HO\AELR#+B]8^TGG%A3IQ&L?2A8F;98$(O`S\\S,%W##;#"V9`";_F%
M25\9RT`2[HH^B,.M#"ZG[W,/AW?"!8JK5W.[KFX?JVL2)R,+.V-CYQH([=P!
MAVD'@;"365>@F9'1<]G0GX_T'H#"`9.=H'3?#I6!ZD"UH*39YP)4"7GA`Y%6
M4M]\?[7-S_77S[#!\6"B^\OX8V:Z1>6`E?D3]6[VGKZGT^5P_;R,N'%4C1-)
M-YOVRA!4'84K@V:[XH=%GB=U67Q(TC^]4@$3P#D)W*D[TW*6-K]CL&T'M;#G
A,R[R@QAF1Y7!219X_3>W`TXE+A7]5=O]`1)P9+AP"```
`
end

Some files were not shown because too many files have changed in this diff Show More