Merge ^/head r284644 through r284736.
This commit is contained in:
commit
94f6f93ac8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/projects/clang-trunk/; revision=284737
2
Makefile
2
Makefile
@ -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}}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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 ");
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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_ */
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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
@ -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*/
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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...
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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 },
|
||||
|
@ -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),
|
||||
|
@ -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. */
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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*
|
||||
|
@ -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) {
|
||||
/*
|
||||
|
@ -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_??? */
|
||||
|
2
tools/build/options/WITH_AUTO_OBJ
Normal file
2
tools/build/options/WITH_AUTO_OBJ
Normal file
@ -0,0 +1,2 @@
|
||||
.\" $FreeBSD$
|
||||
Enable automatic creation of objdirs.
|
5
tools/build/options/WITH_DIRDEPS_CACHE
Normal file
5
tools/build/options/WITH_DIRDEPS_CACHE
Normal 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 .
|
3
tools/build/options/WITH_META_FILES
Normal file
3
tools/build/options/WITH_META_FILES
Normal file
@ -0,0 +1,3 @@
|
||||
.\" $FreeBSD$
|
||||
Create meta files during non META_MODE build.
|
||||
The meta files can be useful for debugging.
|
20
tools/build/options/WITH_META_MODE
Normal file
20
tools/build/options/WITH_META_MODE
Normal 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.
|
7
tools/build/options/WITH_STAGING
Normal file
7
tools/build/options/WITH_STAGING
Normal 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 .
|
2
tools/build/options/WITH_STAGING_MAN
Normal file
2
tools/build/options/WITH_STAGING_MAN
Normal file
@ -0,0 +1,2 @@
|
||||
.\" $FreeBSD$
|
||||
Enable staging of MAN pages to stage tree.
|
2
tools/build/options/WITH_STAGING_PROG
Normal file
2
tools/build/options/WITH_STAGING_PROG
Normal file
@ -0,0 +1,2 @@
|
||||
.\" $FreeBSD$
|
||||
Enable staging of PROGs to stage tree.
|
2
tools/build/options/WITH_STALE_STAGED
Normal file
2
tools/build/options/WITH_STALE_STAGED
Normal file
@ -0,0 +1,2 @@
|
||||
.\" $FreeBSD$
|
||||
Check staged files are not stale.
|
4
tools/build/options/WITH_SYSROOT
Normal file
4
tools/build/options/WITH_SYSROOT
Normal file
@ -0,0 +1,4 @@
|
||||
.\" $FreeBSD$
|
||||
Enable use of sysroot during build.
|
||||
Depends on
|
||||
.Va WITH_META_MODE .
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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+/H5E4U5?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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user