mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 19:34:43 +01:00
Compare commits
36
Commits
stable/12
...
releng/8.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5381b89e04 | ||
|
|
3a68eb81a0 | ||
|
|
e811d1f0f6 | ||
|
|
a6b5951a11 | ||
|
|
2e7e77ff79 | ||
|
|
1cc4828b9a | ||
|
|
c08f10bc48 | ||
|
|
59dd044d1c | ||
|
|
fc8b5e644f | ||
|
|
93f0adb458 | ||
|
|
a3f27f9ed4 | ||
|
|
357894a88e | ||
|
|
17a789523f | ||
|
|
cb752cfcac | ||
|
|
9bcf40edac | ||
|
|
0a949f8099 | ||
|
|
e868427534 | ||
|
|
4df8d91866 | ||
|
|
cf79ed3803 | ||
|
|
34f914c8dc | ||
|
|
faf2e10bc0 | ||
|
|
65a1fd769a | ||
|
|
3092cfd15b | ||
|
|
21998cced7 | ||
|
|
09700a122a | ||
|
|
2b145d4338 | ||
|
|
92b18d813e | ||
|
|
0a43e0477c | ||
|
|
fd80572866 | ||
|
|
b9bd7bf678 | ||
|
|
08ff25d373 | ||
|
|
337287c2c8 | ||
|
|
9919881dba | ||
|
|
1ce9ab7f77 | ||
|
|
e104a03eb5 | ||
|
|
190f5f216b |
No files matched your search
+1
-1
@@ -93,7 +93,7 @@ CLEANDIR= cleandir
|
||||
.endif
|
||||
|
||||
CVS?= cvs
|
||||
CVSFLAGS?= -r RELENG_8 -P -d -I!
|
||||
CVSFLAGS?= -r RELENG_8_0 -P -d -I!
|
||||
SVN?= svn
|
||||
SVNFLAGS?= -r HEAD
|
||||
SUP?= /usr/bin/csup
|
||||
|
||||
@@ -15,6 +15,51 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
|
||||
debugging tools present in HEAD were left in place because
|
||||
sun4v support still needs work to become production ready.
|
||||
|
||||
20101129: p6 FreeBSD-SA-10:10.openssl
|
||||
Fix OpenSSL multiple vulnerabilities.
|
||||
|
||||
20100920: p5 FreeBSD-SA-10:08.bzip2
|
||||
Fix an integer overflow in RLE length parsing when decompressing
|
||||
corrupt bzip2 data.
|
||||
|
||||
20100713: p4 FreeBSD-SA-10:07.mbuf
|
||||
Correctly copy the M_RDONLY flag when duplicating a reference
|
||||
to an mbuf external buffer.
|
||||
|
||||
20100526: p3 FreeBSD-SA-10:04.jail, FreeBSD-SA-10:05.opie,
|
||||
FreeBSD-SA-10:06.nfsclient
|
||||
Change the current working directory to be inside the jail created by
|
||||
the jail(8) command. [10:04]
|
||||
|
||||
Fix a one-NUL-byte buffer overflow in libopie. [10:05]
|
||||
|
||||
Correctly sanity-check a buffer length in nfs mount. [10:06]
|
||||
|
||||
20100106: p2 FreeBSD-SA-10:01.bind, FreeBSD-SA-10:02.ntpd,
|
||||
FreeBSD-SA-10:03.zfs, FreeBSD-EN-10:01.freebsd
|
||||
Fix BIND named(8) cache poisoning with DNSSEC validation.
|
||||
[SA-10:01]
|
||||
|
||||
Fix ntpd mode 7 denial of service. [SA-10:02]
|
||||
|
||||
Fix ZFS ZIL playback with insecure permissions. [SA-10:03]
|
||||
|
||||
Various FreeBSD 8.0-RELEASE improvements. [EN-10:01]
|
||||
|
||||
20091203: p1 FreeBSD-SA-09:15.ssl, FreeBSD-SA-09:16.rtld,
|
||||
FreeBSD-SA-09:17.freebsd-update
|
||||
Disable SSL renegotiation in order to protect against a serious
|
||||
protocol flaw. [09:15]
|
||||
|
||||
Correctly handle failures from unsetenv resulting from a corrupt
|
||||
environment in rtld-elf. [09:16]
|
||||
|
||||
Fix permissions in freebsd-update in order to prevent leakage of
|
||||
sensitive files. [09:17]
|
||||
|
||||
20091125:
|
||||
8.0-RELEASE.
|
||||
|
||||
20090929:
|
||||
802.11s D3.03 support was committed. This is incompatible with
|
||||
the previous code, which was based on D3.0.
|
||||
@@ -566,6 +611,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
|
||||
userland (libpmc(3)) and the kernel module (hwpmc(4)) in
|
||||
sync.
|
||||
|
||||
20081009:
|
||||
atapci kernel module now includes only generic PCI ATA
|
||||
driver. AHCI driver moved to ataahci kernel module.
|
||||
All vendor-specific code moved into separate kernel modules:
|
||||
ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
|
||||
atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
|
||||
atamarvell, atamicron, atanational, atanetcell, atanvidia,
|
||||
atapromise, ataserverworks, atasiliconimage, atasis, atavia
|
||||
|
||||
20080820:
|
||||
The TTY subsystem of the kernel has been replaced by a new
|
||||
implementation, which provides better scalability and an
|
||||
|
||||
@@ -116,6 +116,8 @@
|
||||
#define DNS_GETDB_NOLOG 0x02U
|
||||
#define DNS_GETDB_PARTIAL 0x04U
|
||||
|
||||
#define PENDINGOK(x) (((x) & DNS_DBFIND_PENDINGOK) != 0)
|
||||
|
||||
typedef struct client_additionalctx {
|
||||
ns_client_t *client;
|
||||
dns_rdataset_t *rdataset;
|
||||
@@ -1761,8 +1763,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
*/
|
||||
if (result == ISC_R_SUCCESS &&
|
||||
additionaltype == dns_rdatasetadditional_fromcache &&
|
||||
(rdataset->trust == dns_trust_pending ||
|
||||
rdataset->trust == dns_trust_glue) &&
|
||||
(DNS_TRUST_PENDING(rdataset->trust) ||
|
||||
DNS_TRUST_GLUE(rdataset->trust)) &&
|
||||
!validate(client, db, fname, rdataset, sigrdataset)) {
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (dns_rdataset_isassociated(sigrdataset))
|
||||
@@ -1801,8 +1803,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
|
||||
*/
|
||||
if (result == ISC_R_SUCCESS &&
|
||||
additionaltype == dns_rdatasetadditional_fromcache &&
|
||||
(rdataset->trust == dns_trust_pending ||
|
||||
rdataset->trust == dns_trust_glue) &&
|
||||
(DNS_TRUST_PENDING(rdataset->trust) ||
|
||||
DNS_TRUST_GLUE(rdataset->trust)) &&
|
||||
!validate(client, db, fname, rdataset, sigrdataset)) {
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (dns_rdataset_isassociated(sigrdataset))
|
||||
@@ -2601,14 +2603,14 @@ query_addbestns(ns_client_t *client) {
|
||||
/*
|
||||
* Attempt to validate RRsets that are pending or that are glue.
|
||||
*/
|
||||
if ((rdataset->trust == dns_trust_pending ||
|
||||
(sigrdataset != NULL && sigrdataset->trust == dns_trust_pending))
|
||||
if ((DNS_TRUST_PENDING(rdataset->trust) ||
|
||||
(sigrdataset != NULL && DNS_TRUST_PENDING(sigrdataset->trust)))
|
||||
&& !validate(client, db, fname, rdataset, sigrdataset) &&
|
||||
(client->query.dboptions & DNS_DBFIND_PENDINGOK) == 0)
|
||||
!PENDINGOK(client->query.dboptions))
|
||||
goto cleanup;
|
||||
|
||||
if ((rdataset->trust == dns_trust_glue ||
|
||||
(sigrdataset != NULL && sigrdataset->trust == dns_trust_glue)) &&
|
||||
if ((DNS_TRUST_GLUE(rdataset->trust) ||
|
||||
(sigrdataset != NULL && DNS_TRUST_GLUE(sigrdataset->trust))) &&
|
||||
!validate(client, db, fname, rdataset, sigrdataset) &&
|
||||
SECURE(client) && WANTDNSSEC(client))
|
||||
goto cleanup;
|
||||
@@ -3716,6 +3718,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
dns_rdataset_t *noqname;
|
||||
isc_boolean_t resuming;
|
||||
int line = -1;
|
||||
dns_rdataset_t tmprdataset;
|
||||
unsigned int dboptions;
|
||||
|
||||
CTRACE("query_find");
|
||||
|
||||
@@ -3933,9 +3937,49 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
|
||||
/*
|
||||
* Now look for an answer in the database.
|
||||
*/
|
||||
dboptions = client->query.dboptions;
|
||||
if (sigrdataset == NULL && client->view->enablednssec) {
|
||||
/*
|
||||
* If the client doesn't want DNSSEC we still want to
|
||||
* look for any data pending validation to save a remote
|
||||
* lookup if possible.
|
||||
*/
|
||||
dns_rdataset_init(&tmprdataset);
|
||||
sigrdataset = &tmprdataset;
|
||||
dboptions |= DNS_DBFIND_PENDINGOK;
|
||||
}
|
||||
refind:
|
||||
result = dns_db_find(db, client->query.qname, version, type,
|
||||
client->query.dboptions, client->now,
|
||||
&node, fname, rdataset, sigrdataset);
|
||||
dboptions, client->now, &node, fname,
|
||||
rdataset, sigrdataset);
|
||||
/*
|
||||
* If we have found pending data try to validate it.
|
||||
* If the data does not validate as secure and we can't
|
||||
* use the unvalidated data requery the database with
|
||||
* pending disabled to prevent infinite looping.
|
||||
*/
|
||||
if (result != ISC_R_SUCCESS || !DNS_TRUST_PENDING(rdataset->trust))
|
||||
goto validation_done;
|
||||
if (validate(client, db, fname, rdataset, sigrdataset))
|
||||
goto validation_done;
|
||||
if (rdataset->trust != dns_trust_pending_answer ||
|
||||
!PENDINGOK(client->query.dboptions)) {
|
||||
dns_rdataset_disassociate(rdataset);
|
||||
if (sigrdataset != NULL &&
|
||||
dns_rdataset_isassociated(sigrdataset))
|
||||
dns_rdataset_disassociate(sigrdataset);
|
||||
if (sigrdataset == &tmprdataset)
|
||||
sigrdataset = NULL;
|
||||
dns_db_detachnode(db, &node);
|
||||
dboptions &= ~DNS_DBFIND_PENDINGOK;
|
||||
goto refind;
|
||||
}
|
||||
validation_done:
|
||||
if (sigrdataset == &tmprdataset) {
|
||||
if (dns_rdataset_isassociated(sigrdataset))
|
||||
dns_rdataset_disassociate(sigrdataset);
|
||||
sigrdataset = NULL;
|
||||
}
|
||||
|
||||
resume:
|
||||
CTRACE("query_find: resume");
|
||||
|
||||
@@ -258,40 +258,52 @@ enum {
|
||||
dns_trust_none = 0,
|
||||
#define dns_trust_none ((dns_trust_t)dns_trust_none)
|
||||
|
||||
/*% Subject to DNSSEC validation but has not yet been validated */
|
||||
dns_trust_pending = 1,
|
||||
#define dns_trust_pending ((dns_trust_t)dns_trust_pending)
|
||||
/*%
|
||||
* Subject to DNSSEC validation but has not yet been validated
|
||||
* dns_trust_pending_additional (from the additional section).
|
||||
*/
|
||||
dns_trust_pending_additional = 1,
|
||||
#define dns_trust_pending_additional \
|
||||
((dns_trust_t)dns_trust_pending_additional)
|
||||
|
||||
dns_trust_pending_answer = 2,
|
||||
#define dns_trust_pending_answer ((dns_trust_t)dns_trust_pending_answer)
|
||||
|
||||
/*% Received in the additional section of a response. */
|
||||
dns_trust_additional = 2,
|
||||
dns_trust_additional = 3,
|
||||
#define dns_trust_additional ((dns_trust_t)dns_trust_additional)
|
||||
|
||||
/* Received in a referral response. */
|
||||
dns_trust_glue = 3,
|
||||
dns_trust_glue = 4,
|
||||
#define dns_trust_glue ((dns_trust_t)dns_trust_glue)
|
||||
|
||||
/* Answer from a non-authoritative server */
|
||||
dns_trust_answer = 4,
|
||||
dns_trust_answer = 5,
|
||||
#define dns_trust_answer ((dns_trust_t)dns_trust_answer)
|
||||
|
||||
/* Received in the authority section as part of an
|
||||
authoritative response */
|
||||
dns_trust_authauthority = 5,
|
||||
dns_trust_authauthority = 6,
|
||||
#define dns_trust_authauthority ((dns_trust_t)dns_trust_authauthority)
|
||||
|
||||
/* Answer from an authoritative server */
|
||||
dns_trust_authanswer = 6,
|
||||
dns_trust_authanswer = 7,
|
||||
#define dns_trust_authanswer ((dns_trust_t)dns_trust_authanswer)
|
||||
|
||||
/* Successfully DNSSEC validated */
|
||||
dns_trust_secure = 7,
|
||||
dns_trust_secure = 8,
|
||||
#define dns_trust_secure ((dns_trust_t)dns_trust_secure)
|
||||
|
||||
/* This server is authoritative */
|
||||
dns_trust_ultimate = 8
|
||||
dns_trust_ultimate = 9
|
||||
#define dns_trust_ultimate ((dns_trust_t)dns_trust_ultimate)
|
||||
};
|
||||
|
||||
#define DNS_TRUST_PENDING(x) ((x) == dns_trust_pending_answer || \
|
||||
(x) == dns_trust_pending_additional)
|
||||
#define DNS_TRUST_GLUE(x) ((x) == dns_trust_glue)
|
||||
|
||||
|
||||
/*%
|
||||
* Name checking severities.
|
||||
*/
|
||||
|
||||
@@ -775,7 +775,8 @@ dump_order_compare(const void *a, const void *b) {
|
||||
|
||||
static const char *trustnames[] = {
|
||||
"none",
|
||||
"pending",
|
||||
"pending-additional",
|
||||
"pending-answer",
|
||||
"additional",
|
||||
"glue",
|
||||
"answer",
|
||||
|
||||
@@ -4005,7 +4005,7 @@ cache_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) {
|
||||
}
|
||||
|
||||
if (dname_header != NULL &&
|
||||
(dname_header->trust != dns_trust_pending ||
|
||||
(!DNS_TRUST_PENDING(dname_header->trust) ||
|
||||
(search->options & DNS_DBFIND_PENDINGOK) != 0)) {
|
||||
/*
|
||||
* We increment the reference count on node to ensure that
|
||||
@@ -4548,7 +4548,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
||||
if (found == NULL ||
|
||||
(found->trust == dns_trust_glue &&
|
||||
((options & DNS_DBFIND_GLUEOK) == 0)) ||
|
||||
(found->trust == dns_trust_pending &&
|
||||
(DNS_TRUST_PENDING(found->trust) &&
|
||||
((options & DNS_DBFIND_PENDINGOK) == 0))) {
|
||||
/*
|
||||
* If there is an NS rdataset at this node, then this is the
|
||||
|
||||
@@ -4293,6 +4293,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo,
|
||||
* for it, unless it is glue.
|
||||
*/
|
||||
if (secure_domain && rdataset->trust != dns_trust_glue) {
|
||||
dns_trust_t trust;
|
||||
/*
|
||||
* RRSIGs are validated as part of validating the
|
||||
* type they cover.
|
||||
@@ -4329,12 +4330,34 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo,
|
||||
}
|
||||
|
||||
/*
|
||||
* Cache this rdataset/sigrdataset pair as
|
||||
* pending data.
|
||||
* Reject out of bailiwick additional records
|
||||
* without RRSIGs as they can't possibly validate
|
||||
* as "secure" and as we will never never want to
|
||||
* store these as "answers" after validation.
|
||||
*/
|
||||
rdataset->trust = dns_trust_pending;
|
||||
if (rdataset->trust == dns_trust_additional &&
|
||||
sigrdataset == NULL && EXTERNAL(rdataset))
|
||||
continue;
|
||||
|
||||
/*
|
||||
* XXXMPA: If we store as "answer" after validating
|
||||
* then we need to do bailiwick processing and
|
||||
* also need to track whether RRsets are in or
|
||||
* out of bailiwick. This will require a another
|
||||
* pending trust level.
|
||||
*
|
||||
* Cache this rdataset/sigrdataset pair as
|
||||
* pending data. Track whether it was additional
|
||||
* or not.
|
||||
*/
|
||||
if (rdataset->trust == dns_trust_additional)
|
||||
trust = dns_trust_pending_additional;
|
||||
else
|
||||
trust = dns_trust_pending_answer;
|
||||
|
||||
rdataset->trust = trust;
|
||||
if (sigrdataset != NULL)
|
||||
sigrdataset->trust = dns_trust_pending;
|
||||
sigrdataset->trust = trust;
|
||||
if (!need_validation || !ANSWER(rdataset)) {
|
||||
addedrdataset = ardataset;
|
||||
result = dns_db_addrdataset(fctx->cache, node,
|
||||
@@ -4682,7 +4705,7 @@ ncache_message(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
|
||||
for (trdataset = ISC_LIST_HEAD(tname->list);
|
||||
trdataset != NULL;
|
||||
trdataset = ISC_LIST_NEXT(trdataset, link))
|
||||
trdataset->trust = dns_trust_pending;
|
||||
trdataset->trust = dns_trust_pending_answer;
|
||||
result = dns_message_nextname(fctx->rmessage,
|
||||
DNS_SECTION_AUTHORITY);
|
||||
}
|
||||
|
||||
@@ -1607,7 +1607,7 @@ get_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo) {
|
||||
* We have an rrset for the given keyname.
|
||||
*/
|
||||
val->keyset = &val->frdataset;
|
||||
if (val->frdataset.trust == dns_trust_pending &&
|
||||
if (DNS_TRUST_PENDING(val->frdataset.trust) &&
|
||||
dns_rdataset_isassociated(&val->fsigrdataset))
|
||||
{
|
||||
/*
|
||||
@@ -1622,7 +1622,7 @@ get_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo) {
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
return (DNS_R_WAIT);
|
||||
} else if (val->frdataset.trust == dns_trust_pending) {
|
||||
} else if (DNS_TRUST_PENDING(val->frdataset.trust)) {
|
||||
/*
|
||||
* Having a pending key with no signature means that
|
||||
* something is broken.
|
||||
@@ -2243,7 +2243,7 @@ validatezonekey(dns_validator_t *val) {
|
||||
* We have DS records.
|
||||
*/
|
||||
val->dsset = &val->frdataset;
|
||||
if (val->frdataset.trust == dns_trust_pending &&
|
||||
if (DNS_TRUST_PENDING(val->frdataset.trust) &&
|
||||
dns_rdataset_isassociated(&val->fsigrdataset))
|
||||
{
|
||||
result = create_validator(val,
|
||||
@@ -2256,7 +2256,7 @@ validatezonekey(dns_validator_t *val) {
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
return (DNS_R_WAIT);
|
||||
} else if (val->frdataset.trust == dns_trust_pending) {
|
||||
} else if (DNS_TRUST_PENDING(val->frdataset.trust)) {
|
||||
/*
|
||||
* There should never be an unsigned DS.
|
||||
*/
|
||||
@@ -3337,7 +3337,7 @@ proveunsecure(dns_validator_t *val, isc_boolean_t have_ds, isc_boolean_t resume)
|
||||
* There is no DS. If this is a delegation,
|
||||
* we maybe done.
|
||||
*/
|
||||
if (val->frdataset.trust == dns_trust_pending) {
|
||||
if (DNS_TRUST_PENDING(val->frdataset.trust)) {
|
||||
result = create_fetch(val, tname,
|
||||
dns_rdatatype_ds,
|
||||
dsfetched2,
|
||||
|
||||
@@ -381,6 +381,13 @@ Int32 BZ2_decompress ( DState* s )
|
||||
es = -1;
|
||||
N = 1;
|
||||
do {
|
||||
/* Check that N doesn't get too big, so that es doesn't
|
||||
go negative. The maximum value that can be
|
||||
RUNA/RUNB encoded is equal to the block size (post
|
||||
the initial RLE), viz, 900k, so bounding N at 2
|
||||
million should guard against overflow without
|
||||
rejecting any legitimate inputs. */
|
||||
if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
|
||||
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
|
||||
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
|
||||
N = N * 2;
|
||||
|
||||
@@ -476,6 +476,12 @@ _nc_wgetch(WINDOW *win,
|
||||
/* resizeterm can push KEY_RESIZE */
|
||||
if (cooked_key_in_fifo()) {
|
||||
*result = fifo_pull(sp);
|
||||
/*
|
||||
* Get the ERR from queue -- it is from WINCH,
|
||||
* so we should take it out, the "error" is handled.
|
||||
*/
|
||||
if (fifo_peek(sp) == -1)
|
||||
fifo_pull(sp);
|
||||
returnCode(*result >= KEY_MIN ? KEY_CODE_YES : OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -409,6 +409,7 @@ process_private(
|
||||
int mod_okay
|
||||
)
|
||||
{
|
||||
static u_long quiet_until;
|
||||
struct req_pkt *inpkt;
|
||||
struct req_pkt_tail *tailinpkt;
|
||||
struct sockaddr_storage *srcadr;
|
||||
@@ -444,8 +445,14 @@ process_private(
|
||||
|| (++ec, INFO_MBZ(inpkt->mbz_itemsize) != 0)
|
||||
|| (++ec, rbufp->recv_length < REQ_LEN_HDR)
|
||||
) {
|
||||
msyslog(LOG_ERR, "process_private: INFO_ERR_FMT: test %d failed, pkt from %s", ec, stoa(srcadr));
|
||||
req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
|
||||
NLOG(NLOG_SYSEVENT)
|
||||
if (current_time >= quiet_until) {
|
||||
msyslog(LOG_ERR,
|
||||
"process_private: drop test %d"
|
||||
" failed, pkt from %s",
|
||||
ec, stoa(srcadr));
|
||||
quiet_until = current_time + 60;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,10 +141,8 @@ int __opiereadrec FUNCTION((opie), struct opie *opie)
|
||||
|
||||
if (c = strchr(opie->opie_principal, ':'))
|
||||
*c = 0;
|
||||
if (strlen(opie->opie_principal) > OPIE_PRINCIPAL_MAX)
|
||||
(opie->opie_principal)[OPIE_PRINCIPAL_MAX] = 0;
|
||||
|
||||
strcpy(principal, opie->opie_principal);
|
||||
strlcpy(principal, opie->opie_principal, sizeof(principal));
|
||||
|
||||
do {
|
||||
if ((opie->opie_recstart = ftell(f)) < 0)
|
||||
|
||||
@@ -1378,6 +1378,7 @@ int ssl3_get_key_exchange(SSL *s)
|
||||
s->session->sess_cert->peer_ecdh_tmp=ecdh;
|
||||
ecdh=NULL;
|
||||
BN_CTX_free(bn_ctx);
|
||||
bn_ctx = NULL;
|
||||
EC_POINT_free(srvr_ecpoint);
|
||||
srvr_ecpoint = NULL;
|
||||
}
|
||||
|
||||
@@ -2592,6 +2592,9 @@ int ssl3_renegotiate(SSL *s)
|
||||
if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
|
||||
return(0);
|
||||
|
||||
if (1)
|
||||
return(0);
|
||||
|
||||
s->s3->renegotiate=1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -983,9 +983,7 @@ start:
|
||||
if (s->msg_callback)
|
||||
s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, s->s3->handshake_fragment, 4, s, s->msg_callback_arg);
|
||||
|
||||
if (SSL_is_init_finished(s) &&
|
||||
!(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) &&
|
||||
!s->s3->renegotiate)
|
||||
if (0)
|
||||
{
|
||||
ssl3_renegotiate(s);
|
||||
if (ssl3_renegotiate_check(s))
|
||||
@@ -1116,8 +1114,7 @@ start:
|
||||
/* Unexpected handshake message (Client Hello, or protocol violation) */
|
||||
if ((s->s3->handshake_fragment_len >= 4) && !s->in_handshake)
|
||||
{
|
||||
if (((s->state&SSL_ST_MASK) == SSL_ST_OK) &&
|
||||
!(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS))
|
||||
if (0)
|
||||
{
|
||||
#if 0 /* worked only because C operator preferences are not as expected (and
|
||||
* because this is not really needed for clients except for detecting
|
||||
|
||||
@@ -718,6 +718,13 @@ int ssl3_get_client_hello(SSL *s)
|
||||
#endif
|
||||
STACK_OF(SSL_CIPHER) *ciphers=NULL;
|
||||
|
||||
if (s->new_session)
|
||||
{
|
||||
al=SSL_AD_HANDSHAKE_FAILURE;
|
||||
SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
|
||||
goto f_err;
|
||||
}
|
||||
|
||||
/* We do this so that we will respond with our native type.
|
||||
* If we are TLSv1 and we get SSLv3, we will respond with TLSv1,
|
||||
* This down switching should be handled by a different method.
|
||||
|
||||
@@ -369,14 +369,23 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
|
||||
switch (servname_type)
|
||||
{
|
||||
case TLSEXT_NAMETYPE_host_name:
|
||||
if (s->session->tlsext_hostname == NULL)
|
||||
if (!s->hit)
|
||||
{
|
||||
if (len > TLSEXT_MAXLEN_host_name ||
|
||||
((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL))
|
||||
if(s->session->tlsext_hostname)
|
||||
{
|
||||
*al = SSL_AD_DECODE_ERROR;
|
||||
return 0;
|
||||
}
|
||||
if (len > TLSEXT_MAXLEN_host_name)
|
||||
{
|
||||
*al = TLS1_AD_UNRECOGNIZED_NAME;
|
||||
return 0;
|
||||
}
|
||||
if ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL)
|
||||
{
|
||||
*al = TLS1_AD_INTERNAL_ERROR;
|
||||
return 0;
|
||||
}
|
||||
memcpy(s->session->tlsext_hostname, sdata, len);
|
||||
s->session->tlsext_hostname[len]='\0';
|
||||
if (strlen(s->session->tlsext_hostname) != len) {
|
||||
@@ -389,7 +398,8 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
|
||||
|
||||
}
|
||||
else
|
||||
s->servername_done = strlen(s->session->tlsext_hostname) == len
|
||||
s->servername_done = s->session->tlsext_hostname
|
||||
&& strlen(s->session->tlsext_hostname) == len
|
||||
&& strncmp(s->session->tlsext_hostname, (char *)sdata, len) == 0;
|
||||
|
||||
break;
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
db
|
||||
entropy uname=operator gname=operator mode=0700
|
||||
..
|
||||
freebsd-update
|
||||
freebsd-update mode=0700
|
||||
..
|
||||
ipf mode=0700
|
||||
..
|
||||
|
||||
@@ -107,7 +107,7 @@ This restriction can be removed by setting the
|
||||
.Va vfs.usermount
|
||||
.Xr sysctl 8
|
||||
variable
|
||||
to a non-zero value.
|
||||
to a non-zero value; see the BUGS section for more information.
|
||||
.Pp
|
||||
The following
|
||||
.Fa flags
|
||||
@@ -370,3 +370,10 @@ functions appeared in
|
||||
.At v6 .
|
||||
.Sh BUGS
|
||||
Some of the error codes need translation to more obvious messages.
|
||||
.Pp
|
||||
Allowing untrusted users to mount arbitrary media, e.g. by enabling
|
||||
.Va vfs.usermount ,
|
||||
should not be considered safe.
|
||||
Most file systems in
|
||||
.Fx
|
||||
were not built to safeguard against malicious devices.
|
||||
@@ -366,12 +366,12 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
|
||||
* future processes to honor the potentially un-safe variables.
|
||||
*/
|
||||
if (!trust) {
|
||||
unsetenv(LD_ "PRELOAD");
|
||||
unsetenv(LD_ "LIBMAP");
|
||||
unsetenv(LD_ "LIBRARY_PATH");
|
||||
unsetenv(LD_ "LIBMAP_DISABLE");
|
||||
unsetenv(LD_ "DEBUG");
|
||||
unsetenv(LD_ "ELF_HINTS_PATH");
|
||||
if (unsetenv(LD_ "PRELOAD") || unsetenv(LD_ "LIBMAP") ||
|
||||
unsetenv(LD_ "LIBRARY_PATH") || unsetenv(LD_ "LIBMAP_DISABLE") ||
|
||||
unsetenv(LD_ "DEBUG") || unsetenv(LD_ "ELF_HINTS_PATH")) {
|
||||
_rtld_error("environment corrupt; aborting");
|
||||
die();
|
||||
}
|
||||
}
|
||||
ld_debug = getenv(LD_ "DEBUG");
|
||||
libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;
|
||||
|
||||
@@ -50,6 +50,12 @@
|
||||
the last release, as well as significant changes to the &os;
|
||||
kernel and userland.
|
||||
Some brief remarks on upgrading are also presented.</para>
|
||||
|
||||
<para>NOTE: the full release notes were not available at the time
|
||||
the release builds were started. See the online version of the
|
||||
release notes for the most up to date information. The online
|
||||
release notes can be found at <ulink url="&release.url;"></ulink>.
|
||||
</para>
|
||||
</abstract>
|
||||
</articleinfo>
|
||||
|
||||
@@ -138,84 +144,16 @@
|
||||
<sect2 id="kernel">
|
||||
<title>Kernel Changes</title>
|
||||
|
||||
<para>A new &man.cpuset.2; API has been added
|
||||
for thread to CPU binding and CPU resource grouping and
|
||||
assignment. The &man.cpuset.1; userland utility has been added
|
||||
to allow manipulation of processor sets.</para>
|
||||
|
||||
<para role="merged">The &man.ddb.4; kernel debugger now has an output capture
|
||||
facility. Input and output from &man.ddb.4; can now be captured
|
||||
to a memory buffer for later inspection using &man.sysctl.8; or
|
||||
a textdump. The new <command>capture</command> command controls
|
||||
this feature.</para>
|
||||
|
||||
<para role="merged">The &man.ddb.4; debugger now supports a simple scripting
|
||||
facility, which supports a set of named scripts consisting of a
|
||||
set of &man.ddb.4; commands. These commands can be managed from
|
||||
within &man.ddb.4; or with the use of the new &man.ddb.8;
|
||||
utility. More details can be found in the &man.ddb.4; manual
|
||||
page.</para>
|
||||
|
||||
<para role="merged">The kernel now supports a new textdump format of kernel
|
||||
dumps. A textdump provides higher-level information via
|
||||
mechanically generated/extracted debugging output, rather than a
|
||||
simple memory dump. This facility can be used to generate brief
|
||||
kernel bug reports that are rich in debugging information, but
|
||||
are not dependent on kernel symbol tables or precisely
|
||||
synchronized source code. More information can be found in the
|
||||
&man.textdump.4; manual page.</para>
|
||||
|
||||
<para>Kernel support for M:N threading has been removed. While
|
||||
the KSE (Kernel Scheduled Entities) project was quite successful
|
||||
in bringing threading to FreeBSD, the M:N approach taken by the
|
||||
KSE library was never developed to its full potential.
|
||||
Backwards compatibility for applications using KSE threading
|
||||
will be provided via &man.libmap.conf.5; for dynamically linked
|
||||
binaries. The &os; Project greatly appreciates the work of
|
||||
&a.julian;, &a.deischen;, and &a.davidxu; on KSE support.</para>
|
||||
|
||||
<para>The &os; kernel now exports information about certain kernel
|
||||
features via the <varname>kern.features</varname> sysctl tree.
|
||||
The &man.feature.present.3; library call provides a convenient
|
||||
interface for user applications to test the presence of
|
||||
features.</para>
|
||||
|
||||
<para arch="amd64">The &os; kernel now has support for large
|
||||
memory page mappings (<quote>superpages</quote>).</para>
|
||||
|
||||
<para arch="amd64,i386,ia64,powerpc" role="merged">The ULE
|
||||
scheduler is now the default process scheduler
|
||||
in <filename>GENERIC</filename> kernels.</para>
|
||||
|
||||
<sect3 id="boot">
|
||||
<title>Boot Loader Changes</title>
|
||||
|
||||
<para arch="amd64,i386" role="merged">The BTX kernel used by the boot
|
||||
loader has been changed to invoke BIOS routines from real
|
||||
mode. This change makes it possible to boot &os; from USB
|
||||
devices.</para>
|
||||
|
||||
<para arch="amd64,i386" role="merged">A new gptboot boot loader has
|
||||
been added to support booting from a GPT labeled disk. A
|
||||
new <command>boot</command> command has been added to
|
||||
&man.gpt.8;, which makes a GPT disk bootable by writing the
|
||||
required bits of the boot loader, creating a new boot
|
||||
partition if required.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="proc">
|
||||
<title>Hardware Support</title>
|
||||
|
||||
<para role="merged">The &man.cmx.4; driver, a driver for Omnikey CardMan 4040
|
||||
PCMCIA smartcard readers, has been added.</para>
|
||||
|
||||
<para>The &man.syscons.4; driver now supports Colemak keyboard layout.</para>
|
||||
|
||||
<para role="merged">The &man.uslcom.4; driver, a driver for Silicon
|
||||
Laboratories CP2101/CP2102-based USB serial adapters, has been
|
||||
imported from OpenBSD.</para>
|
||||
|
||||
<sect4 id="mm">
|
||||
<title>Multimedia Support</title>
|
||||
|
||||
@@ -226,40 +164,7 @@
|
||||
<sect4 id="net-if">
|
||||
<title>Network Interface Support</title>
|
||||
|
||||
<para>The &man.ale.4; driver has been added to provide support
|
||||
for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet controllers.</para>
|
||||
|
||||
<para>The &man.em.4; driver has been split into two drivers
|
||||
with some common parts. The &man.em.4; driver will continue
|
||||
to support adapters up to the 82575, as well as new
|
||||
client/desktop adapters. A new &man.igb.4; driver
|
||||
will support new server adapters.</para>
|
||||
|
||||
<para>The &man.jme.4; driver has been added to provide support
|
||||
for PCIe network adapters based on JMicron JMC250 Gigabit
|
||||
Ethernet and JMC260 Fast Ethernet controllers.</para>
|
||||
|
||||
<para>The &man.malo.4; driver has been added to provide
|
||||
support for Marvell Libertas 88W8335 based PCI network
|
||||
adapters.</para>
|
||||
|
||||
<para>The firmware for the &man.mxge.4; driver has been
|
||||
updated from 1.4.25 to 1.4.29.</para>
|
||||
|
||||
<para>The &man.sf.4; driver has been overhauled to improve its
|
||||
performance and to add support for checksum offloading. It
|
||||
should also work on all architectures.</para>
|
||||
|
||||
<para>The &man.re.4; driver has been overhauled to fix a
|
||||
number of issues. This driver now has Wake On LAN (WOL)
|
||||
support.</para>
|
||||
|
||||
<para>The &man.vr.4; driver has been overhauled to fix a
|
||||
number of outstanding issues. It also now works on all
|
||||
architectures.</para>
|
||||
|
||||
<para arch="amd64,i386" role="merged">The &man.wpi.4; driver has
|
||||
been updated to include a number of stability fixes.</para>
|
||||
<para></para>
|
||||
|
||||
</sect4>
|
||||
</sect3>
|
||||
@@ -267,50 +172,21 @@
|
||||
<sect3 id="net-proto">
|
||||
<title>Network Protocols</title>
|
||||
|
||||
<para>The &man.bpf.4; packet filter and capture facility now
|
||||
supports a zero-copy mode of operation, in which buffers are
|
||||
loaned from a user process to the kernel. This feature can
|
||||
be enabled by setting
|
||||
the <varname>net.bpf.zerocopy_enable</varname> sysctl
|
||||
variable to <literal>1</literal>.</para>
|
||||
|
||||
<para>ISDN4BSD(I4B), <filename>netatm</filename>, and all
|
||||
related subsystems have been removed due to lack of
|
||||
multi-processor support.</para>
|
||||
|
||||
<para role="merged">A bug in TCP options padding, where the wrong padding
|
||||
bytes were used, has been fixed.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="disks">
|
||||
<title>Disks and Storage</title>
|
||||
|
||||
<para role="merged">The &man.aac.4; driver now supports volumes larger than
|
||||
2TB in size.</para>
|
||||
|
||||
<para>The &man.ata.4; driver now supports a spindown command for
|
||||
disks; after a configurable amount of time, if no requests
|
||||
have been received for a disk, the disk will be spun down
|
||||
until the next request. The &man.atacontrol.8; utility now
|
||||
supports a <command>spindown</command> command to configure
|
||||
this feature.</para>
|
||||
|
||||
<para role="merged">The &man.hptrr.4; driver has been updated to version 1.2
|
||||
from Highpoint.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="fs">
|
||||
<title>File Systems</title>
|
||||
|
||||
<para>A problem with using &man.mmap.2; on ZFS filesystems has
|
||||
been fixed.</para>
|
||||
|
||||
<para>A new kernel-mode NFS lock manager has been added,
|
||||
improving performance and behavior of NFS locking. A new
|
||||
&man.clear.locks.8; command has been added to clear locks held
|
||||
on behalf of an NFS client.</para>
|
||||
<para></para>
|
||||
|
||||
</sect3>
|
||||
</sect2>
|
||||
@@ -318,111 +194,6 @@
|
||||
<sect2 id="userland">
|
||||
<title>Userland Changes</title>
|
||||
|
||||
<para role="merged">The &man.adduser.8; utility now supports
|
||||
a <option>-M</option> option to set the mode of a new user's
|
||||
home directory.</para>
|
||||
|
||||
<para>BSD-licensed versions of &man.ar.1; and &man.ranlib.1;,
|
||||
based on <filename>libarchive</filename>, have replaced the GNU
|
||||
Binutils versions of these utilities.</para>
|
||||
|
||||
<para role="merged">&man.chflags.1; now supports a <option>-v</option> flag for
|
||||
verbose output and a <option>-f</option> flag to ignore errors
|
||||
with the same semantics as (for example)
|
||||
&man.chmod.1;.</para>
|
||||
|
||||
<para>For compatiblity with other implementations, &man.cp.1; now
|
||||
supports a <option>-a</option> flag, which is equivalent to
|
||||
specifying the <option>-RrP</option> flags.</para>
|
||||
|
||||
<para>BSD-licensed version of &man.cpio.1; based on
|
||||
<filename>libarchive</filename>, has replaced the GNU cpio.
|
||||
Note that the GNU cpio is still installed as
|
||||
<filename>gcpio</filename>.</para>
|
||||
|
||||
<para>The &man.env.1; program now supports <option>-u
|
||||
<replaceable>name</replaceable></option>
|
||||
which will completely unset the given variable
|
||||
<replaceable>name</replaceable> by removing it from the environment,
|
||||
instead of just setting it to a null value.</para>
|
||||
|
||||
<para>The &man.fdopendir.3; library function has been added.</para>
|
||||
|
||||
<para role="merged">The &man.fetch.3; library now support HTTP 1.1
|
||||
If-Modified-Since behavior. The &man.fetch.1; program now
|
||||
supports <option>-i <replaceable>filename</replaceable></option>
|
||||
which will only download the specified HTTP URL if the content
|
||||
is newer than <replaceable>filename</replaceable>.</para>
|
||||
|
||||
<para>&man.find.1; has been enhanced by the addition of a number
|
||||
of primaries that were present in GNU find but not &os;
|
||||
&man.find.1;.</para>
|
||||
|
||||
<para>&man.jexec.8; now supports <option>-h
|
||||
<replaceable>hostname</replaceable></option> option to specify the
|
||||
jail where the command will be executed.</para>
|
||||
|
||||
<para>&man.kgdb.1; now supports a new <command>add-kld</command>
|
||||
command to make it easier to debug crash dumps with kernel
|
||||
modules.</para>
|
||||
|
||||
<para>The &man.ls.1; program now supports a <option>-D</option>
|
||||
option to specify a date format string to be used with the long
|
||||
format (<option>-l</option>) output.</para>
|
||||
|
||||
<para>&man.nc.1; now supports a <option>-O</option> switch to
|
||||
disable the use of TCP options.</para>
|
||||
|
||||
<para>The &man.ping6.8; utility now returns <literal>2</literal>
|
||||
when the packet transmission was successful but no responses
|
||||
were received (this is the same behavior as &man.ping.8;).
|
||||
It returned a non-zero value before this change.</para>
|
||||
|
||||
<para>The &man.procstat.1; utility has been added to display
|
||||
detailed information about processes.</para>
|
||||
|
||||
<para role="merged">The &man.realpath.1; utility now supports
|
||||
a <option>-q</option> flag to suppress warnings; it now also
|
||||
accepts multiple paths on its command line.</para>
|
||||
|
||||
<para>The &man.split.1; utility now supports a <option>-n</option>
|
||||
flag to split a file into a certain number of chunks.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a <option>-Z</option>
|
||||
flag to enable &man.compress.1;-style
|
||||
compression/decompression.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a
|
||||
<option>--numeric-owner</option> flag to ignore user/group names
|
||||
on create and extract.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports an
|
||||
<option>-S</option> flag to sparsify files on extraction.</para>
|
||||
|
||||
<para>The &man.tar.1; utility now supports a <option>-s</option>
|
||||
flag to substitute filenames based on the specified regular
|
||||
expression.</para>
|
||||
|
||||
<para>The &man.tcgetsid.3; library function has been added to
|
||||
return the process group ID for the session leader for the
|
||||
controlling terminal. It is defined in IEEE Std 1003.1-2001
|
||||
(POSIX).</para>
|
||||
|
||||
<para>&man.top.1; now supports a <option>-P</option> flag to
|
||||
provide per-CPU usage statistics.</para>
|
||||
|
||||
<para>&man.zdump.8; is now working properly on 64 bit architectures.
|
||||
</para>
|
||||
|
||||
<para>&man.traceroute.8; now has the ability to print the AS
|
||||
number for each hop with the new <option>-a</option> switch; a
|
||||
new <option>-A</option> option allows selecting a particular
|
||||
WHOIS server.</para>
|
||||
|
||||
<para>&man.traceroute6.8; now supports a <option>-U</option> flag
|
||||
to send probe packets with no upper-layer protocol, rather than
|
||||
the usual UDP probe packets.</para>
|
||||
|
||||
<sect3 id="rc-scripts">
|
||||
<title><filename>/etc/rc.d</filename> Scripts</title>
|
||||
|
||||
@@ -434,83 +205,21 @@
|
||||
<sect2 id="contrib">
|
||||
<title>Contributed Software</title>
|
||||
|
||||
<para role="merged"><application>AMD</application> has been updated from 6.0.10
|
||||
to 6.1.5.</para>
|
||||
|
||||
<para role="merged"><application>awk</application> has been updated from 1 May
|
||||
2007 release to the 23 October 2007 release.</para>
|
||||
|
||||
<para role="merged"><application>bzip2</application> has been updated from 1.0.4
|
||||
to 1.0.5.</para>
|
||||
|
||||
<para><application>CVS</application> has been updated from 1.11.17
|
||||
to a post-1.11.22 snapshot from 10 March 2008.</para>
|
||||
|
||||
<para><application>FILE</application> has been updated from 4.23
|
||||
to 5.03.</para>
|
||||
|
||||
<para><application>hostapd</application> has been
|
||||
updated from 0.5.8 to 0.5.10.</para>
|
||||
|
||||
<para><application>IPFilter</application> has been updated from
|
||||
4.1.23 to 4.1.28.</para>
|
||||
|
||||
<para><application>less</application> has been updated from
|
||||
v408 to v429.</para>
|
||||
|
||||
<para><application>ncurses</application> has been updated from
|
||||
5.6-20061217 to 5.6-20080503.</para>
|
||||
|
||||
<para role="merged"><application>OpenSSH</application> has been updated
|
||||
from 4.5p1 to 5.1p1.</para>
|
||||
|
||||
<para role="merged"><application>OpenPAM</application> has been updated from the
|
||||
Figwort release to the Hydrangea release.</para>
|
||||
|
||||
<para role="merged"><application>sendmail</application> has been updated from
|
||||
8.14.1 to 8.14.3.</para>
|
||||
|
||||
<para role="merged">The timezone database has been updated from
|
||||
the <application>tzdata2008h</application> release to
|
||||
the <application>tzdata2009j</application> release.</para>
|
||||
|
||||
<para>The stdtime part of libc, &man.zdump.8 and &man.zic.8
|
||||
have been updated from the <application>tzcode2004a</application>
|
||||
release to the <application>tzcode2009h</application> release.
|
||||
If you have upgraded from source or via the &man.freebsd-update.8,
|
||||
then please run &man.tzsetup.8 to install a new /etc/localtime.
|
||||
</para>
|
||||
|
||||
<para><application>WPA Supplicant</application> has been
|
||||
updated from 0.5.8 to 0.5.10.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="ports">
|
||||
<title>Ports/Packages Collection Infrastructure</title>
|
||||
|
||||
<para>The &man.pkg.create.1; utility now supports
|
||||
<option>-n</option>. When this option is specified and a
|
||||
package tarball exists, it will not be overwritten. This is
|
||||
useful when multiple packages are saved with several consecutive
|
||||
runs of &man.pkg.create.1; with the <option>-Rb</option>
|
||||
options.</para>
|
||||
|
||||
<para>The pkg_sign and pkg_check utilities for cryptographically
|
||||
signing &os; packages have been removed. They were only useful
|
||||
for packages compressed using &man.gzip.1;; however
|
||||
&man.bzip2.1; compression has been the norm for some time
|
||||
now.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
<sect2 id="releng">
|
||||
<title>Release Engineering and Integration</title>
|
||||
|
||||
<para role="merged">The supported version of
|
||||
the <application>GNOME</application> desktop environment
|
||||
(<filename role="package">x11/gnome2</filename>) has been
|
||||
updated from 2.20.1 to 2.22.</para>
|
||||
<para></para>
|
||||
|
||||
</sect2>
|
||||
|
||||
|
||||
@@ -35,17 +35,6 @@
|
||||
(list (list "HREF" "mailto:[email protected]"))
|
||||
(literal "[email protected]"))
|
||||
(literal ">.")))
|
||||
(make element gi: "p"
|
||||
attributes: (list (list "align" "center"))
|
||||
(make element gi: "small"
|
||||
(literal "All users of FreeBSD ")
|
||||
(literal (entity-text "release.branch"))
|
||||
(literal " should subscribe to the ")
|
||||
(literal "<")
|
||||
(create-link (list (list "HREF" "mailto:[email protected]"))
|
||||
(literal "[email protected]"))
|
||||
(literal "> mailing list.")))
|
||||
|
||||
(make element gi: "p"
|
||||
attributes: (list (list "align" "center"))
|
||||
(make element gi: "small"
|
||||
|
||||
@@ -6,41 +6,35 @@
|
||||
|
||||
<!-- Version of the OS we're describing. This needs to be updated
|
||||
with each new release. -->
|
||||
<!ENTITY release.current "8.0-CURRENT">
|
||||
<!ENTITY release.current "8.0-RELEASE">
|
||||
|
||||
<!-- The previous version used for comparison in the "What's New"
|
||||
section. For -CURRENT, we might point back to the last
|
||||
branchpoint. -->
|
||||
<!ENTITY release.prev "7.0-RELEASE">
|
||||
|
||||
<!-- The previous stable release, useful for pointing user's at the
|
||||
release they SHOULD be running if they don't want the bleeding
|
||||
edge. -->
|
||||
<!ENTITY release.prev.stable "7.0-RELEASE">
|
||||
<!ENTITY release.prev "7.2-RELEASE">
|
||||
|
||||
<!-- The next version to be released, usually used for snapshots. -->
|
||||
<!ENTITY release.next "8.0-RELEASE">
|
||||
<!ENTITY release.next "8.1-RELEASE">
|
||||
|
||||
<!-- The name of this branch. -->
|
||||
<!ENTITY release.branch "8-CURRENT">
|
||||
<!ENTITY release.branch "8.0-STABLE">
|
||||
|
||||
<!-- The URL for obtaining this version of FreeBSD. -->
|
||||
<!ENTITY release.url "http://www.FreeBSD.org/snapshots/">
|
||||
<!ENTITY release.url "http://www.FreeBSD.org/">
|
||||
|
||||
<!-- The type of release (usually this will be either "snapshot"
|
||||
or "release" -->
|
||||
<!ENTITY release.type "snapshot">
|
||||
<!ENTITY % release.type.current "INCLUDE">
|
||||
<!ENTITY release.type "release">
|
||||
<!ENTITY % release.type.current "IGNORE">
|
||||
<!ENTITY % release.type.snapshot "IGNORE">
|
||||
<!ENTITY % release.type.release "IGNORE">
|
||||
<!ENTITY % release.type.release "INCLUDE">
|
||||
|
||||
<!-- The manpaths for man page references -->
|
||||
<!ENTITY release.man.url "http://www.FreeBSD.org/cgi/man.cgi">
|
||||
<!ENTITY release.manpath.xfree86 "4.5.0">
|
||||
<!ENTITY release.manpath.xorg "7.2">
|
||||
<!ENTITY release.manpath.netbsd "3.0">
|
||||
<!ENTITY release.manpath.xorg "7.4">
|
||||
<!ENTITY release.manpath.netbsd "4.0.1">
|
||||
<!ENTITY release.manpath.freebsd-ports "Ports">
|
||||
<!ENTITY release.manpath.freebsd "8-current">
|
||||
<!ENTITY release.manpath.freebsd "8.0-RELEASE">
|
||||
|
||||
<!-- Text constants which probably don't need to be changed.-->
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
*default host=CHANGE_THIS.FreeBSD.org
|
||||
*default base=/var/db
|
||||
*default prefix=/usr
|
||||
*default release=cvs tag=RELENG_8
|
||||
*default release=cvs tag=RELENG_8_0
|
||||
*default delete use-rel-suffix
|
||||
|
||||
# If you seem to be limited by CPU rather than network or disk bandwidth, try
|
||||
|
||||
+4
-1
@@ -1,5 +1,8 @@
|
||||
# $FreeBSD$
|
||||
#
|
||||
# Please consult with http://www.FreeBSD.org/internal/i18n.html before
|
||||
# making changes to this file.
|
||||
#
|
||||
# ISO 3166 country codes
|
||||
# This includes many places that are not legally independent countries,
|
||||
# but which is it convenient to refer to separately from their
|
||||
@@ -230,7 +233,7 @@ SZ SWZ 748 Swaziland
|
||||
SE SWE 752 Sweden
|
||||
CH CHE 756 Switzerland
|
||||
SY SYR 760 Syrian Arab Republic
|
||||
TW TWN 158 Taiwan, Province of China
|
||||
TW TWN 158 Taiwan
|
||||
TJ TJK 762 Tajikistan
|
||||
TZ TZA 834 Tanzania, United Republic of
|
||||
TH THA 764 Thailand
|
||||
|
||||
+80
-12
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)asia 8.40
|
||||
# @(#)asia 8.42
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -172,11 +172,30 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
|
||||
#
|
||||
# No DST end date has been announced yet.
|
||||
|
||||
# From Arthur David Olson (2009-07-11):
|
||||
# Arbitrarily end DST at the end of 2009 so that a POSIX-sytle time zone string
|
||||
# can appear in the Dhaka binary file and for the benefit of old glibc
|
||||
# reimplementations of the time zone software that mishandle permanent DST.
|
||||
# A change will be required once the end date is known.
|
||||
# From Alexander Krivenyshev (2009-09-25):
|
||||
# Bangladesh won't go back to Standard Time from October 1, 2009,
|
||||
# instead it will continue DST measure till the cabinet makes a fresh decision.
|
||||
#
|
||||
# Following report by same newspaper-"The Daily Star Friday":
|
||||
# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
|
||||
# <a href="http://www.thedailystar.net/newDesign/news-details.php?nid=107021">
|
||||
# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
|
||||
# </a>
|
||||
# or
|
||||
# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html">
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
|
||||
# </a>
|
||||
|
||||
# From Steffen Thorsen (2009-10-13):
|
||||
# IANS (Indo-Asian News Service) now reports:
|
||||
# Bangladesh has decided that the clock advanced by an hour to make
|
||||
# maximum use of daylight hours as an energy saving measure would
|
||||
# "continue for an indefinite period."
|
||||
#
|
||||
# One of many places where it is published:
|
||||
# <a href="http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html">
|
||||
# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
|
||||
# </a>
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Dhaka 6:01:40 - LMT 1890
|
||||
@@ -186,8 +205,7 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890
|
||||
6:30 - BURT 1951 Sep 30
|
||||
6:00 - DACT 1971 Mar 26 # Dacca Time
|
||||
6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time
|
||||
6:00 1:00 BDST 2010
|
||||
6:00 - BDT
|
||||
6:00 1:00 BDST
|
||||
|
||||
# Bhutan
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
@@ -1674,16 +1692,66 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
|
||||
# advance clocks in the country by one hour from April 15 to
|
||||
# conserve energy"
|
||||
|
||||
# From Arthur David Olson (2009-04-10):
|
||||
# Assume for now that Pakistan will end DST in 2009 as it did in 2008.
|
||||
# From Steffen Thorsen (2009-09-17):
|
||||
# "The News International," Pakistan reports that: "The Federal
|
||||
# Government has decided to restore the previous time by moving the
|
||||
# clocks backward by one hour from October 1. A formal announcement to
|
||||
# this effect will be made after the Prime Minister grants approval in
|
||||
# this regard."
|
||||
# <a href="http://www.thenews.com.pk/updates.asp?id=87168">
|
||||
# http://www.thenews.com.pk/updates.asp?id=87168
|
||||
# </a>
|
||||
|
||||
# From Alexander Krivenyshev (2009-09-28):
|
||||
# According to Associated Press Of Pakistan, it is confirmed that
|
||||
# Pakistan clocks across the country would be turned back by an hour from October
|
||||
# 1, 2009.
|
||||
#
|
||||
# "Clocks to go back one hour from 1 Oct"
|
||||
# <a href="http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2">
|
||||
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
|
||||
# </a>
|
||||
# or
|
||||
# <a href="http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm">
|
||||
# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
|
||||
# </a>
|
||||
|
||||
# From Steffen Thorsen (2009-09-29):
|
||||
# Alexander Krivenyshev wrote:
|
||||
# > According to Associated Press Of Pakistan, it is confirmed that
|
||||
# > Pakistan clocks across the country would be turned back by an hour from October
|
||||
# > 1, 2009.
|
||||
#
|
||||
# Now they seem to have changed their mind, November 1 is the new date:
|
||||
# <a href="http://www.thenews.com.pk/top_story_detail.asp?Id=24742">
|
||||
# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
|
||||
# </a>
|
||||
# "The country's clocks will be reversed by one hour on November 1.
|
||||
# Officials of Federal Ministry for Interior told this to Geo News on
|
||||
# Monday."
|
||||
#
|
||||
# And more importantly, it seems that these dates will be kept every year:
|
||||
# "It has now been decided that clocks will be wound forward by one hour
|
||||
# on April 15 and reversed by an hour on November 1 every year without
|
||||
# obtaining prior approval, the officials added."
|
||||
#
|
||||
# We have confirmed this year's end date with both with the Ministry of
|
||||
# Water and Power and the Pakistan Electric Power Company:
|
||||
# <a href="http://www.timeanddate.com/news/time/pakistan-ends-dst09.html">
|
||||
# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
|
||||
# </a>
|
||||
|
||||
# From Christoph Goehre (2009-10-01):
|
||||
# [T]he German Consulate General in Karachi reported me today that Pakistan
|
||||
# will go back to standard time on 1st of November.
|
||||
|
||||
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
|
||||
Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
|
||||
Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
|
||||
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
|
||||
Rule Pakistan 2008 only - Nov 1 0:00 0 -
|
||||
Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
|
||||
Rule Pakistan 2009 only - Nov 1 0:00 0 -
|
||||
Rule Pakistan 2009 max - Apr 15 0:00 1:00 S
|
||||
Rule Pakistan 2009 max - Nov 1 0:00 0 -
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
Zone Asia/Karachi 4:28:12 - LMT 1907
|
||||
5:30 - IST 1942 Sep
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)australasia 8.13
|
||||
# @(#)australasia 8.14
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -457,6 +457,36 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
|
||||
# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
|
||||
# </a>
|
||||
|
||||
# From Alexander Krivenyshev (2009-10-03):
|
||||
# First, my deepest condolences to people of Samoa islands and all families and
|
||||
# loved ones around the world who lost their lives in the earthquake and tsunami.
|
||||
#
|
||||
# Considering the recent devastation on Samoa by earthquake and tsunami and that
|
||||
# many government offices/ ministers are closed- not sure if "Daylight Saving
|
||||
# Bill 2009" will be implemented in next few days- on October 4, 2009.
|
||||
#
|
||||
# Here is reply from Consulate-General of Samoa in New Zealand
|
||||
# ---------------------------
|
||||
# Consul General
|
||||
# [email protected]
|
||||
#
|
||||
# Talofa Alexander,
|
||||
#
|
||||
# Thank you for your sympathy for our country but at this time we have not
|
||||
# been informed about the Daylight Savings Time Change. Most Ministries in
|
||||
# Apia are closed or relocating due to weather concerns.
|
||||
#
|
||||
# When we do find out if they are still proceeding with the time change we
|
||||
# will advise you soonest.
|
||||
#
|
||||
# Kind Regards,
|
||||
# Lana
|
||||
# for: Consul General
|
||||
|
||||
# From Steffen Thorsen (2009-10-05):
|
||||
# We have called a hotel in Samoa and asked about local time there - they
|
||||
# are still on standard time.
|
||||
|
||||
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
|
||||
-11:26:56 - LMT 1911
|
||||
-11:30 - SAMT 1950 # Samoa Time
|
||||
|
||||
+55
-13
@@ -1,5 +1,5 @@
|
||||
# <pre>
|
||||
# @(#)southamerica 8.36
|
||||
# @(#)southamerica 8.40
|
||||
# This file is in the public domain, so clarified as of
|
||||
# 2009-05-17 by Arthur David Olson.
|
||||
|
||||
@@ -215,9 +215,23 @@ Rule Arg 2000 only - Mar 3 0:00 0 -
|
||||
# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
|
||||
# </a>
|
||||
|
||||
# From fullinet (2009-10-18):
|
||||
# As announced in
|
||||
# <a hef="http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356">
|
||||
# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
|
||||
# </a>
|
||||
# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
|
||||
#
|
||||
# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
|
||||
# oficial, decision que estaba en estudio para su implementacion el
|
||||
# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
|
||||
# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
|
||||
# la modificacion del huso horario, ya que 2009 nos encuentra con
|
||||
# crecimiento en la produccion y distribucion energetica."
|
||||
|
||||
Rule Arg 2007 only - Dec 30 0:00 1:00 S
|
||||
Rule Arg 2008 max - Mar Sun>=15 0:00 0 -
|
||||
Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
|
||||
Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
|
||||
Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
|
||||
|
||||
# From Mariano Absatz (2004-05-21):
|
||||
# Today it was officially published that the Province of Mendoza is changing
|
||||
@@ -389,15 +403,40 @@ Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
|
||||
# during 2009, this timezone change will run from 00:00 the third Sunday
|
||||
# in March until 24:00 of the second Saturday in October.
|
||||
|
||||
# From Arthur David Olson (2009-03-16):
|
||||
# The unofficial claim at
|
||||
# <a href="http://www.timeanddate.com/news/time/san-luis-new-time-zone.html">
|
||||
# http://www.timeanddate.com/news/time/san-luis-new-time-zone.html
|
||||
# </a>
|
||||
# is that "The province will most likely follow the next daylight saving schedule,
|
||||
# which is planned for the second Sunday in October."
|
||||
|
||||
# From Mariano Absatz (2009-10-16):
|
||||
# ...the Province of San Luis is a case in itself.
|
||||
#
|
||||
# The Law at
|
||||
# <a href="http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276>"
|
||||
# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276
|
||||
# </a>
|
||||
# is ambiguous because establishes a calendar from the 2nd Sunday in
|
||||
# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
|
||||
# complement of that starting on the 2nd Sunday of March at 0:00 and
|
||||
# ending on the 2nd Saturday of March at 24:00.
|
||||
#
|
||||
# This clearly breaks every time the 1st of March or October is a Sunday.
|
||||
#
|
||||
# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
|
||||
# Sunday of October and March.
|
||||
#
|
||||
# The problem is that the changes in the rest of the Provinces that did
|
||||
# change in 2007/2008, were made according to the Federal Law and Decrees
|
||||
# that did so on the 3rd Sunday of October and March.
|
||||
#
|
||||
# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
|
||||
# (October 11th) at 0:00.
|
||||
#
|
||||
# So I guess a new set of rules, besides "Arg", must be made and the last
|
||||
# America/Argentina/San_Luis entries should change to use these...
|
||||
#
|
||||
# I'm enclosing a patch that does what I say... regretfully, the San Luis
|
||||
# timezone must be called "WART/WARST" even when most of the time (like,
|
||||
# right now) WARST == ART... that is, since last Sunday, all the country
|
||||
# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
|
||||
# of the country calls it "ART".
|
||||
# ...
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
#
|
||||
# Buenos Aires (BA), Capital Federal (CF),
|
||||
@@ -530,6 +569,10 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
|
||||
-3:00 - ART
|
||||
#
|
||||
# San Luis (SL)
|
||||
|
||||
Rule SanLuis 2008 max - Mar Sun>=8 0:00 0 -
|
||||
Rule SanLuis 2007 max - Oct Sun>=8 0:00 1:00 S
|
||||
|
||||
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
||||
-4:16:48 - CMT 1920 May
|
||||
-4:00 - ART 1930 Dec
|
||||
@@ -544,8 +587,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
|
||||
-3:00 - ART 2004 May 31
|
||||
-4:00 - WART 2004 Jul 25
|
||||
-3:00 Arg AR%sT 2008 Jan 21
|
||||
-3:00 - ART 2009 Mar 15
|
||||
-4:00 Arg WAR%sT
|
||||
-4:00 SanLuis WAR%sT
|
||||
#
|
||||
# Santa Cruz (SC)
|
||||
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
|
||||
|
||||
@@ -371,21 +371,21 @@ printcpuinfo(void)
|
||||
switch (cpu_vendor_id) {
|
||||
case CPU_VENDOR_AMD:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
AMD64_CPU_FAMILY(cpu_id) >= 0x10 ||
|
||||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
|
||||
cpu_id == 0x60fb2)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_INTEL:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
(AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xe) ||
|
||||
(AMD64_CPU_FAMILY(cpu_id) == 0xf &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0x3))
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0x3))
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf &&
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf &&
|
||||
(rdmsr(0x1203) & 0x100000000ULL) == 0)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
@@ -607,6 +607,21 @@ print_AMD_info(void)
|
||||
printf(", %d lines/tag", (regs[2] >> 8) & 0x0f);
|
||||
print_AMD_l2_assoc((regs[2] >> 12) & 0x0f);
|
||||
}
|
||||
|
||||
/*
|
||||
* Opteron Rev E shows a bug as in very rare occasions a read memory
|
||||
* barrier is not performed as expected if it is followed by a
|
||||
* non-atomic read-modify-write instruction.
|
||||
* As long as that bug pops up very rarely (intensive machine usage
|
||||
* on other operating systems generally generates one unexplainable
|
||||
* crash any 2 months) and as long as a model specific fix would be
|
||||
* impratical at this stage, print out a warning string if the broken
|
||||
* model and family are identified.
|
||||
*/
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
|
||||
CPUID_TO_MODEL(cpu_id) <= 0x3f)
|
||||
printf("WARNING: This architecture revision has known SMP "
|
||||
"hardware bugs which may cause random instability\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
@@ -154,8 +154,8 @@ initializecpu(void)
|
||||
pg_nx = PG_NX;
|
||||
}
|
||||
if (cpu_vendor_id == CPU_VENDOR_CENTAUR &&
|
||||
AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf)
|
||||
CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
init_via();
|
||||
|
||||
/*
|
||||
|
||||
@@ -275,8 +275,8 @@ msi_init(void)
|
||||
case CPU_VENDOR_AMD:
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
AMD64_CPU_MODEL(cpu_id) >= 0xf)
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
|
||||
@@ -313,7 +313,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -168,10 +168,10 @@
|
||||
#define CPUID_FAMILY 0x00000f00
|
||||
#define CPUID_EXT_MODEL 0x000f0000
|
||||
#define CPUID_EXT_FAMILY 0x0ff00000
|
||||
#define AMD64_CPU_MODEL(id) \
|
||||
#define CPUID_TO_MODEL(id) \
|
||||
((((id) & CPUID_MODEL) >> 4) | \
|
||||
(((id) & CPUID_EXT_MODEL) >> 12))
|
||||
#define AMD64_CPU_FAMILY(id) \
|
||||
#define CPUID_TO_FAMILY(id) \
|
||||
((((id) & CPUID_FAMILY) >> 8) + \
|
||||
(((id) & CPUID_EXT_FAMILY) >> 20))
|
||||
|
||||
|
||||
@@ -91,6 +91,10 @@ linux_to_bsd_sigaltstack(int lsa)
|
||||
return (bsa);
|
||||
}
|
||||
|
||||
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
|
||||
l_size_t len, l_int prot, l_int flags, l_int fd,
|
||||
l_loff_t pos);
|
||||
|
||||
int
|
||||
bsd_to_linux_sigaltstack(int bsa)
|
||||
{
|
||||
@@ -759,12 +763,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
|
||||
#define STACK_SIZE (2 * 1024 * 1024)
|
||||
#define GUARD_SIZE (4 * PAGE_SIZE)
|
||||
|
||||
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
|
||||
|
||||
int
|
||||
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
{
|
||||
struct l_mmap_argv linux_args;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap2))
|
||||
@@ -773,14 +774,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
args->flags, args->fd, args->pgoff);
|
||||
#endif
|
||||
|
||||
linux_args.addr = PTROUT(args->addr);
|
||||
linux_args.len = args->len;
|
||||
linux_args.prot = args->prot;
|
||||
linux_args.flags = args->flags;
|
||||
linux_args.fd = args->fd;
|
||||
linux_args.pgoff = args->pgoff;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, PTROUT(args->addr), args->len, args->prot,
|
||||
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
|
||||
PAGE_SIZE));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -799,15 +795,15 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
|
||||
linux_args.addr, linux_args.len, linux_args.prot,
|
||||
linux_args.flags, linux_args.fd, linux_args.pgoff);
|
||||
#endif
|
||||
if ((linux_args.pgoff % PAGE_SIZE) != 0)
|
||||
return (EINVAL);
|
||||
linux_args.pgoff /= PAGE_SIZE;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
|
||||
linux_args.prot, linux_args.flags, linux_args.fd,
|
||||
(uint32_t)linux_args.pgoff));
|
||||
}
|
||||
|
||||
static int
|
||||
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
|
||||
l_int flags, l_int fd, l_loff_t pos)
|
||||
{
|
||||
struct proc *p = td->td_proc;
|
||||
struct mmap_args /* {
|
||||
@@ -830,21 +826,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* Linux mmap(2):
|
||||
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
|
||||
*/
|
||||
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
|
||||
(linux_args->flags & LINUX_MAP_PRIVATE)))
|
||||
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
|
||||
return (EINVAL);
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_SHARED)
|
||||
if (flags & LINUX_MAP_SHARED)
|
||||
bsd_args.flags |= MAP_SHARED;
|
||||
if (linux_args->flags & LINUX_MAP_PRIVATE)
|
||||
if (flags & LINUX_MAP_PRIVATE)
|
||||
bsd_args.flags |= MAP_PRIVATE;
|
||||
if (linux_args->flags & LINUX_MAP_FIXED)
|
||||
if (flags & LINUX_MAP_FIXED)
|
||||
bsd_args.flags |= MAP_FIXED;
|
||||
if (linux_args->flags & LINUX_MAP_ANON)
|
||||
if (flags & LINUX_MAP_ANON)
|
||||
bsd_args.flags |= MAP_ANON;
|
||||
else
|
||||
bsd_args.flags |= MAP_NOSYNC;
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
|
||||
if (flags & LINUX_MAP_GROWSDOWN)
|
||||
bsd_args.flags |= MAP_STACK;
|
||||
|
||||
/*
|
||||
@@ -852,12 +847,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* on Linux/i386. We do this to ensure maximum compatibility.
|
||||
* Linux/ia64 does the same in i386 emulation mode.
|
||||
*/
|
||||
bsd_args.prot = linux_args->prot;
|
||||
bsd_args.prot = prot;
|
||||
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
|
||||
bsd_args.prot |= PROT_READ | PROT_EXEC;
|
||||
|
||||
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
|
||||
if (bsd_args.fd != -1) {
|
||||
/*
|
||||
* Linux follows Solaris mmap(2) description:
|
||||
@@ -882,7 +877,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
fdrop(fp, td);
|
||||
}
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
|
||||
if (flags & LINUX_MAP_GROWSDOWN) {
|
||||
/*
|
||||
* The Linux MAP_GROWSDOWN option does not limit auto
|
||||
* growth of the region. Linux mmap with this option
|
||||
@@ -905,8 +900,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* fixed size of (STACK_SIZE - GUARD_SIZE).
|
||||
*/
|
||||
|
||||
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
|
||||
p->p_vmspace->vm_maxsaddr) {
|
||||
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
|
||||
/*
|
||||
* Some Linux apps will attempt to mmap
|
||||
* thread stacks near the top of their
|
||||
@@ -937,19 +931,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* we map the full stack, since we don't have a way
|
||||
* to autogrow it.
|
||||
*/
|
||||
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
if (len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - linux_args->len);
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - len);
|
||||
bsd_args.len = STACK_SIZE - GUARD_SIZE;
|
||||
}
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
}
|
||||
bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE;
|
||||
bsd_args.pos = pos;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap))
|
||||
|
||||
@@ -550,7 +550,8 @@ vdev_raidz_read(vdev_t *vdev, const blkptr_t *bp, void *buf,
|
||||
uint64_t s = psize >> unit_shift;
|
||||
uint64_t f = b % dcols;
|
||||
uint64_t o = (b / dcols) << unit_shift;
|
||||
int q, r, c, c1, bc, col, acols, coff, devidx, asize, n;
|
||||
uint64_t q, r, coff;
|
||||
int c, c1, bc, col, acols, devidx, asize, n;
|
||||
static raidz_col_t cols[16];
|
||||
raidz_col_t *rc, *rc1;
|
||||
|
||||
|
||||
@@ -57,6 +57,8 @@ typedef struct vop_vector vnodeops_t;
|
||||
|
||||
#define v_count v_usecount
|
||||
|
||||
#define V_APPEND VAPPEND
|
||||
|
||||
static __inline int
|
||||
vn_is_readonly(vnode_t *vp)
|
||||
{
|
||||
|
||||
@@ -60,10 +60,14 @@ zfs_init_vattr(vattr_t *vap, uint64_t mask, uint64_t mode,
|
||||
{
|
||||
VATTR_NULL(vap);
|
||||
vap->va_mask = (uint_t)mask;
|
||||
vap->va_type = IFTOVT(mode);
|
||||
vap->va_mode = mode & MODEMASK;
|
||||
vap->va_uid = (uid_t)(IS_EPHEMERAL(uid)) ? -1 : uid;
|
||||
vap->va_gid = (gid_t)(IS_EPHEMERAL(gid)) ? -1 : gid;
|
||||
if (mask & AT_TYPE)
|
||||
vap->va_type = IFTOVT(mode);
|
||||
if (mask & AT_MODE)
|
||||
vap->va_mode = mode & MODEMASK;
|
||||
if (mask & AT_UID)
|
||||
vap->va_uid = (uid_t)(IS_EPHEMERAL(uid)) ? -1 : uid;
|
||||
if (mask & AT_GID)
|
||||
vap->va_gid = (gid_t)(IS_EPHEMERAL(gid)) ? -1 : gid;
|
||||
vap->va_rdev = zfs_cmpldev(rdev);
|
||||
vap->va_nodeid = nodeid;
|
||||
}
|
||||
|
||||
@@ -3981,21 +3981,33 @@ zfs_freebsd_access(ap)
|
||||
struct thread *a_td;
|
||||
} */ *ap;
|
||||
{
|
||||
accmode_t accmode;
|
||||
int error = 0;
|
||||
|
||||
/*
|
||||
* ZFS itself only knowns about VREAD, VWRITE and VEXEC, the rest
|
||||
* we have to handle by calling vaccess().
|
||||
* ZFS itself only knowns about VREAD, VWRITE, VEXEC and VAPPEND,
|
||||
*/
|
||||
if ((ap->a_accmode & ~(VREAD|VWRITE|VEXEC)) != 0) {
|
||||
vnode_t *vp = ap->a_vp;
|
||||
znode_t *zp = VTOZ(vp);
|
||||
znode_phys_t *zphys = zp->z_phys;
|
||||
accmode = ap->a_accmode & (VREAD|VWRITE|VEXEC|VAPPEND);
|
||||
if (accmode != 0)
|
||||
error = zfs_access(ap->a_vp, accmode, 0, ap->a_cred, NULL);
|
||||
|
||||
return (vaccess(vp->v_type, zphys->zp_mode, zphys->zp_uid,
|
||||
zphys->zp_gid, ap->a_accmode, ap->a_cred, NULL));
|
||||
/*
|
||||
* VADMIN has to be handled by vaccess().
|
||||
*/
|
||||
if (error == 0) {
|
||||
accmode = ap->a_accmode & ~(VREAD|VWRITE|VEXEC|VAPPEND);
|
||||
if (accmode != 0) {
|
||||
vnode_t *vp = ap->a_vp;
|
||||
znode_t *zp = VTOZ(vp);
|
||||
znode_phys_t *zphys = zp->z_phys;
|
||||
|
||||
error = vaccess(vp->v_type, zphys->zp_mode,
|
||||
zphys->zp_uid, zphys->zp_gid, accmode, ap->a_cred,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
|
||||
return (zfs_access(ap->a_vp, ap->a_accmode, 0, ap->a_cred, NULL));
|
||||
return (error);
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -143,16 +143,19 @@ zfs_znode_cache_constructor(void *buf, void *arg, int kmflags)
|
||||
|
||||
POINTER_INVALIDATE(&zp->z_zfsvfs);
|
||||
ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs));
|
||||
ASSERT(vfsp != NULL);
|
||||
|
||||
error = getnewvnode("zfs", vfsp, &zfs_vnodeops, &vp);
|
||||
if (error != 0 && (kmflags & KM_NOSLEEP))
|
||||
return (-1);
|
||||
ASSERT(error == 0);
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
|
||||
zp->z_vnode = vp;
|
||||
vp->v_data = (caddr_t)zp;
|
||||
VN_LOCK_AREC(vp);
|
||||
if (vfsp != NULL) {
|
||||
error = getnewvnode("zfs", vfsp, &zfs_vnodeops, &vp);
|
||||
if (error != 0 && (kmflags & KM_NOSLEEP))
|
||||
return (-1);
|
||||
ASSERT(error == 0);
|
||||
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
|
||||
zp->z_vnode = vp;
|
||||
vp->v_data = (caddr_t)zp;
|
||||
VN_LOCK_AREC(vp);
|
||||
} else {
|
||||
zp->z_vnode = NULL;
|
||||
}
|
||||
|
||||
list_link_init(&zp->z_link_node);
|
||||
|
||||
@@ -1435,7 +1438,7 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
|
||||
nvpair_t *elem;
|
||||
int error;
|
||||
znode_t *rootzp = NULL;
|
||||
vnode_t *vp;
|
||||
vnode_t vnode;
|
||||
vattr_t vattr;
|
||||
znode_t *zp;
|
||||
|
||||
@@ -1504,13 +1507,13 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
|
||||
vattr.va_gid = crgetgid(cr);
|
||||
|
||||
rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP);
|
||||
zfs_znode_cache_constructor(rootzp, &zfsvfs, 0);
|
||||
zfs_znode_cache_constructor(rootzp, NULL, 0);
|
||||
rootzp->z_unlinked = 0;
|
||||
rootzp->z_atime_dirty = 0;
|
||||
|
||||
vp = ZTOV(rootzp);
|
||||
vp->v_type = VDIR;
|
||||
VN_LOCK_ASHARE(vp);
|
||||
vnode.v_type = VDIR;
|
||||
vnode.v_data = rootzp;
|
||||
rootzp->z_vnode = &vnode;
|
||||
|
||||
bzero(&zfsvfs, sizeof (zfsvfs_t));
|
||||
|
||||
@@ -1539,16 +1542,10 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
|
||||
ASSERT(error == 0);
|
||||
POINTER_INVALIDATE(&rootzp->z_zfsvfs);
|
||||
|
||||
VI_LOCK(vp);
|
||||
ZTOV(rootzp)->v_data = NULL;
|
||||
ZTOV(rootzp)->v_count = 0;
|
||||
ZTOV(rootzp)->v_holdcnt = 0;
|
||||
rootzp->z_vnode = NULL;
|
||||
VOP_UNLOCK(vp, 0);
|
||||
vdestroy(vp);
|
||||
dmu_buf_rele(rootzp->z_dbuf, NULL);
|
||||
rootzp->z_dbuf = NULL;
|
||||
mutex_destroy(&zfsvfs.z_znodes_lock);
|
||||
rootzp->z_vnode = NULL;
|
||||
kmem_cache_free(znode_cache, rootzp);
|
||||
}
|
||||
|
||||
|
||||
@@ -304,7 +304,6 @@ typedef struct xvattr {
|
||||
* VOP_ACCESS flags
|
||||
*/
|
||||
#define V_ACE_MASK 0x1 /* mask represents NFSv4 ACE permissions */
|
||||
#define V_APPEND 0x2 /* want to do append only check */
|
||||
|
||||
/*
|
||||
* Flags for vnode operations.
|
||||
|
||||
@@ -1657,6 +1657,10 @@ device siis
|
||||
# The 'ATA' driver supports all ATA and ATAPI devices, including PC Card
|
||||
# devices. You only need one "device ata" for it to find all
|
||||
# PCI and PC Card ATA/ATAPI devices on modern machines.
|
||||
# Alternatively, individual bus and chipset drivers may be chosen by using
|
||||
# the 'atacore' driver then selecting the drivers on a per vendor basis.
|
||||
# For example to build a system which only supports a VIA chipset,
|
||||
# omit 'ata' and include the 'atacore', 'atapci' and 'atavia' drivers.
|
||||
device ata
|
||||
device atadisk # ATA disk drives
|
||||
device ataraid # ATA RAID drives
|
||||
@@ -1665,6 +1669,39 @@ device atapifd # ATAPI floppy drives
|
||||
device atapist # ATAPI tape drives
|
||||
device atapicam # emulate ATAPI devices as SCSI ditto via CAM
|
||||
# needs CAM to be present (scbus & pass)
|
||||
|
||||
# Modular ATA
|
||||
#device atacore # Core ATA functionality
|
||||
#device atacard # CARDBUS support
|
||||
#device atabus # PC98 cbus support
|
||||
#device ataisa # ISA bus support
|
||||
#device atapci # PCI bus support; only generic chipset support
|
||||
|
||||
# PCI ATA chipsets
|
||||
#device ataahci # AHCI SATA
|
||||
#device ataacard # ACARD
|
||||
#device ataacerlabs # Acer Labs Inc. (ALI)
|
||||
#device ataadaptec # Adaptec
|
||||
#device ataamd # American Micro Devices (AMD)
|
||||
#device ataati # ATI
|
||||
#device atacenatek # Cenatek
|
||||
#device atacypress # Cypress
|
||||
#device atacyrix # Cyrix
|
||||
#device atahighpoint # HighPoint
|
||||
#device ataintel # Intel
|
||||
#device ataite # Integrated Technology Inc. (ITE)
|
||||
#device atajmicron # JMicron
|
||||
#device atamarvell # Marvell
|
||||
#device atamicron # Micron
|
||||
#device atanational # National
|
||||
#device atanetcell # NetCell
|
||||
#device atanvidia # nVidia
|
||||
#device atapromise # Promise
|
||||
#device ataserverworks # ServerWorks
|
||||
#device atasiliconimage # Silicon Image Inc. (SiI) (formerly CMD)
|
||||
#device atasis # Silicon Integrated Systems Corp.(SiS)
|
||||
#device atavia # VIA Technologies Inc.
|
||||
|
||||
#
|
||||
# For older non-PCI, non-PnPBIOS systems, these are the hints lines to add:
|
||||
hint.ata.0.at="isa"
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
|
||||
TYPE="FreeBSD"
|
||||
REVISION="8.0"
|
||||
BRANCH="RC2"
|
||||
BRANCH="RELEASE-p6"
|
||||
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
|
||||
BRANCH=${BRANCH_OVERRIDE}
|
||||
fi
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
** 1.20.00.14 02/05/2007 Erich Chen bug fix for incorrect ccb_h.status report
|
||||
** and cause g_vfs_done() read write error
|
||||
** 1.20.00.15 10/10/2007 Erich Chen support new RAID adapter type ARC120x
|
||||
** 1.20.00.16 10/10/2009 Erich Chen Bug fix for RAID adapter type ARC120x
|
||||
** bus_dmamem_alloc() with BUS_DMA_ZERO
|
||||
******************************************************************************************
|
||||
* $FreeBSD$
|
||||
*/
|
||||
@@ -2903,7 +2905,7 @@ static u_int32_t arcmsr_initialize(device_t dev)
|
||||
}
|
||||
/* Allocation for our srbs */
|
||||
if(bus_dmamem_alloc(acb->srb_dmat, (void **)&acb->uncacheptr
|
||||
, BUS_DMA_WAITOK | BUS_DMA_COHERENT, &acb->srb_dmamap) != 0) {
|
||||
, BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, &acb->srb_dmamap) != 0) {
|
||||
bus_dma_tag_destroy(acb->srb_dmat);
|
||||
bus_dma_tag_destroy(acb->dm_segs_dmat);
|
||||
bus_dma_tag_destroy(acb->parent_dmat);
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
**************************************************************************
|
||||
* $FreeBSD$
|
||||
*/
|
||||
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.15 2007-10-07"
|
||||
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.16 2009-10-10"
|
||||
#define ARCMSR_SCSI_INITIATOR_ID 255
|
||||
#define ARCMSR_DEV_SECTOR_SIZE 512
|
||||
#define ARCMSR_MAX_XFER_SECTORS 4096
|
||||
|
||||
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
|
||||
|
||||
/* enable control access */
|
||||
pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
|
||||
|
||||
/* MCP55 seems to need some time to allow r_res2 read. */
|
||||
DELAY(10);
|
||||
if (ctlr->chip->cfg1 & NVQ) {
|
||||
/* clear interrupt status */
|
||||
ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
|
||||
|
||||
@@ -2654,7 +2654,7 @@ igb_dma_malloc(struct adapter *adapter, bus_size_t size,
|
||||
int error;
|
||||
|
||||
error = bus_dma_tag_create(bus_get_dma_tag(adapter->dev), /* parent */
|
||||
IGB_DBA_ALIGN, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
@@ -2867,7 +2867,7 @@ igb_allocate_transmit_buffers(struct tx_ring *txr)
|
||||
* Setup DMA descriptor areas.
|
||||
*/
|
||||
if ((error = bus_dma_tag_create(NULL, /* parent */
|
||||
PAGE_SIZE, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
@@ -3554,7 +3554,7 @@ igb_allocate_receive_buffers(struct rx_ring *rxr)
|
||||
** it may not always use this.
|
||||
*/
|
||||
if ((error = bus_dma_tag_create(NULL, /* parent */
|
||||
PAGE_SIZE, 0, /* alignment, bounds */
|
||||
1, 0, /* alignment, bounds */
|
||||
BUS_SPACE_MAXADDR, /* lowaddr */
|
||||
BUS_SPACE_MAXADDR, /* highaddr */
|
||||
NULL, NULL, /* filter, filterarg */
|
||||
|
||||
+11
-21
@@ -193,6 +193,8 @@ isp_sbus_attach(device_t dev)
|
||||
isp->isp_param = &sbs->sbus_param;
|
||||
isp->isp_osinfo.pc.ptr = &sbs->sbus_spi;
|
||||
isp->isp_revision = 0; /* XXX */
|
||||
isp->isp_dev = dev;
|
||||
isp->isp_nchan = 1;
|
||||
ISP_SET_PC(isp, 0, role, role);
|
||||
|
||||
/*
|
||||
@@ -316,18 +318,16 @@ isp_sbus_attach(device_t dev)
|
||||
goto bad;
|
||||
}
|
||||
isp_init(isp);
|
||||
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_INITSTATE) {
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
}
|
||||
isp_attach(isp);
|
||||
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_RUNSTATE) {
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
if (isp->isp_state == ISP_INITSTATE) {
|
||||
isp->isp_state = ISP_RUNSTATE;
|
||||
}
|
||||
ISP_UNLOCK(isp);
|
||||
if (isp_attach(isp)) {
|
||||
ISP_LOCK(isp);
|
||||
isp_uninit(isp);
|
||||
ISP_UNLOCK(isp);
|
||||
goto bad;
|
||||
}
|
||||
return (0);
|
||||
|
||||
bad:
|
||||
@@ -345,13 +345,10 @@ bad:
|
||||
}
|
||||
|
||||
if (regs) {
|
||||
(void) bus_release_resource(dev, 0, 0, regs);
|
||||
(void) bus_release_resource(dev, SYS_RES_MEMORY, 0, regs);
|
||||
}
|
||||
|
||||
if (sbs) {
|
||||
if (sbs->sbus_isp.isp_param) {
|
||||
free(sbs->sbus_isp.isp_param, M_DEVBUF);
|
||||
}
|
||||
free(sbs, M_DEVBUF);
|
||||
}
|
||||
return (ENXIO);
|
||||
@@ -584,13 +581,6 @@ dma2(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
|
||||
isp = mp->isp;
|
||||
rq = mp->rq;
|
||||
if (nseg) {
|
||||
if (sizeof (bus_addr_t) > 4) {
|
||||
if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) {
|
||||
rq->req_header.rqs_entry_type = RQSTYPE_T3RQS;
|
||||
} else if (rq->req_header.rqs_entry_type == RQSTYPE_REQUEST) {
|
||||
rq->req_header.rqs_entry_type = RQSTYPE_A64;
|
||||
}
|
||||
}
|
||||
if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) {
|
||||
bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, BUS_DMASYNC_PREREAD);
|
||||
ddir = ISP_FROM_DEVICE;
|
||||
|
||||
@@ -8582,7 +8582,7 @@ sym_pci_attach(device_t dev)
|
||||
* Allocate a tag for the DMA of user data.
|
||||
*/
|
||||
if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24),
|
||||
BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
|
||||
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
|
||||
NULL, NULL,
|
||||
BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG,
|
||||
(1<<24), 0, busdma_lock_mutex, &np->mtx,
|
||||
|
||||
+51
-12
@@ -247,8 +247,8 @@ static const uint8_t ukbd_trtab[256] = {
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 68 - 6F */
|
||||
NN, NN, NN, NN, 115, 108, 111, 113, /* 70 - 77 */
|
||||
109, 110, 112, 118, 114, 116, 117, 119, /* 78 - 7F */
|
||||
121, 120, NN, NN, NN, NN, NN, 115, /* 80 - 87 */
|
||||
112, 125, 121, 123, NN, NN, NN, NN, /* 88 - 8F */
|
||||
121, 120, NN, NN, NN, NN, NN, 123, /* 80 - 87 */
|
||||
124, 125, 126, 127, 128, NN, NN, NN, /* 88 - 8F */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 90 - 97 */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* 98 - 9F */
|
||||
NN, NN, NN, NN, NN, NN, NN, NN, /* A0 - A7 */
|
||||
@@ -1636,20 +1636,59 @@ static int
|
||||
ukbd_key2scan(struct ukbd_softc *sc, int code, int shift, int up)
|
||||
{
|
||||
static const int scan[] = {
|
||||
0x1c, 0x1d, 0x35,
|
||||
0x37 | SCAN_PREFIX_SHIFT, /* PrintScreen */
|
||||
0x38, 0x47, 0x48, 0x49, 0x4b, 0x4d, 0x4f,
|
||||
0x50, 0x51, 0x52, 0x53,
|
||||
0x46, /* XXX Pause/Break */
|
||||
0x5b, 0x5c, 0x5d,
|
||||
/* 89 */
|
||||
0x11c, /* Enter */
|
||||
/* 90-99 */
|
||||
0x11d, /* Ctrl-R */
|
||||
0x135, /* Divide */
|
||||
0x137 | SCAN_PREFIX_SHIFT, /* PrintScreen */
|
||||
0x138, /* Alt-R */
|
||||
0x147, /* Home */
|
||||
0x148, /* Up */
|
||||
0x149, /* PageUp */
|
||||
0x14b, /* Left */
|
||||
0x14d, /* Right */
|
||||
0x14f, /* End */
|
||||
/* 100-109 */
|
||||
0x150, /* Down */
|
||||
0x151, /* PageDown */
|
||||
0x152, /* Insert */
|
||||
0x153, /* Delete */
|
||||
0x146, /* XXX Pause/Break */
|
||||
0x15b, /* Win_L(Super_L) */
|
||||
0x15c, /* Win_R(Super_R) */
|
||||
0x15d, /* Application(Menu) */
|
||||
|
||||
/* SUN TYPE 6 USB KEYBOARD */
|
||||
0x68, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
|
||||
0x64, 0x65, 0x66, 0x67, 0x25, 0x1f, 0x1e,
|
||||
0x20,
|
||||
0x168, /* Sun Type 6 Help */
|
||||
0x15e, /* Sun Type 6 Stop */
|
||||
/* 110 - 119 */
|
||||
0x15f, /* Sun Type 6 Again */
|
||||
0x160, /* Sun Type 6 Props */
|
||||
0x161, /* Sun Type 6 Undo */
|
||||
0x162, /* Sun Type 6 Front */
|
||||
0x163, /* Sun Type 6 Copy */
|
||||
0x164, /* Sun Type 6 Open */
|
||||
0x165, /* Sun Type 6 Paste */
|
||||
0x166, /* Sun Type 6 Find */
|
||||
0x167, /* Sun Type 6 Cut */
|
||||
0x125, /* Sun Type 6 Mute */
|
||||
/* 120 - 128 */
|
||||
0x11f, /* Sun Type 6 VolumeDown */
|
||||
0x11e, /* Sun Type 6 VolumeUp */
|
||||
0x120, /* Sun Type 6 PowerDown */
|
||||
|
||||
/* Japanese 106/109 keyboard */
|
||||
0x73, /* Keyboard Intl' 1 (backslash / underscore) */
|
||||
0x70, /* Keyboard Intl' 2 (Katakana / Hiragana) */
|
||||
0x7d, /* Keyboard Intl' 3 (Yen sign) (Not using in jp106/109) */
|
||||
0x79, /* Keyboard Intl' 4 (Henkan) */
|
||||
0x7b, /* Keyboard Intl' 5 (Muhenkan) */
|
||||
0x5c, /* Keyboard Intl' 6 (Keypad ,) (For PC-9821 layout) */
|
||||
};
|
||||
|
||||
if ((code >= 89) && (code < (89 + (sizeof(scan) / sizeof(scan[0]))))) {
|
||||
code = scan[code - 89] | SCAN_PREFIX_E0;
|
||||
code = scan[code - 89];
|
||||
}
|
||||
/* Pause/Break */
|
||||
if ((code == 104) && (!(shift & (MOD_CONTROL_L | MOD_CONTROL_R)))) {
|
||||
|
||||
@@ -112,6 +112,7 @@ struct usb_xfer_flags_int {
|
||||
uint8_t curr_dma_set:1; /* used by USB HC/DC driver */
|
||||
uint8_t can_cancel_immed:1; /* set if USB transfer can be
|
||||
* cancelled immediately */
|
||||
uint8_t doing_callback:1; /* set if executing the callback */
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -1785,8 +1785,18 @@ usbd_transfer_drain(struct usb_xfer *xfer)
|
||||
|
||||
usbd_transfer_stop(xfer);
|
||||
|
||||
while (usbd_transfer_pending(xfer)) {
|
||||
while (usbd_transfer_pending(xfer) ||
|
||||
xfer->flags_int.doing_callback) {
|
||||
|
||||
/*
|
||||
* It is allowed that the callback can drop its
|
||||
* transfer mutex. In that case checking only
|
||||
* "usbd_transfer_pending()" is not enough to tell if
|
||||
* the USB transfer is fully drained. We also need to
|
||||
* check the internal "doing_callback" flag.
|
||||
*/
|
||||
xfer->flags_int.draining = 1;
|
||||
|
||||
/*
|
||||
* Wait until the current outstanding USB
|
||||
* transfer is complete !
|
||||
@@ -2031,6 +2041,9 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
|
||||
/* get next USB transfer in the queue */
|
||||
info->done_q.curr = NULL;
|
||||
|
||||
/* set flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 1;
|
||||
|
||||
USB_BUS_UNLOCK(info->bus);
|
||||
USB_BUS_LOCK_ASSERT(info->bus, MA_NOTOWNED);
|
||||
|
||||
@@ -2083,12 +2096,17 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
|
||||
if ((!xfer->flags_int.open) &&
|
||||
(xfer->flags_int.started) &&
|
||||
(xfer->usb_state == USB_ST_ERROR)) {
|
||||
/* clear flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 0;
|
||||
/* try to loop, but not recursivly */
|
||||
usb_command_wrapper(&info->done_q, xfer);
|
||||
return;
|
||||
}
|
||||
|
||||
done:
|
||||
/* clear flag in case of drain */
|
||||
xfer->flags_int.doing_callback = 0;
|
||||
|
||||
/*
|
||||
* Check if we are draining.
|
||||
*/
|
||||
|
||||
@@ -327,7 +327,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -83,12 +83,6 @@ __FBSDID("$FreeBSD$");
|
||||
#define AMD_10H_11H_CUR_DID(msr) (((msr) >> 6) & 0x07)
|
||||
#define AMD_10H_11H_CUR_FID(msr) ((msr) & 0x3F)
|
||||
|
||||
#if defined(__amd64__)
|
||||
#define CPU_FAMILY(id) AMD64_CPU_FAMILY(id)
|
||||
#elif defined(__i386__)
|
||||
#define CPU_FAMILY(id) I386_CPU_FAMILY(id)
|
||||
#endif
|
||||
|
||||
#define HWPSTATE_DEBUG(dev, msg...) \
|
||||
do{ \
|
||||
if(hwpstate_verbose) \
|
||||
@@ -302,7 +296,7 @@ hwpstate_identify(driver_t *driver, device_t parent)
|
||||
if (device_find_child(parent, "hwpstate", -1) != NULL)
|
||||
return;
|
||||
|
||||
if (cpu_vendor_id != CPU_VENDOR_AMD || CPU_FAMILY(cpu_id) < 0x10)
|
||||
if (cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10)
|
||||
return;
|
||||
|
||||
/*
|
||||
@@ -405,7 +399,7 @@ hwpstate_get_info_from_msr(device_t dev)
|
||||
uint64_t msr;
|
||||
int family, i, fid, did;
|
||||
|
||||
family = CPU_FAMILY(cpu_id);
|
||||
family = CPUID_TO_FAMILY(cpu_id);
|
||||
sc = device_get_softc(dev);
|
||||
/* Get pstate count */
|
||||
msr = rdmsr(MSR_AMD_10H_11H_LIMIT);
|
||||
|
||||
@@ -858,21 +858,21 @@ printcpuinfo(void)
|
||||
switch (cpu_vendor_id) {
|
||||
case CPU_VENDOR_AMD:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
I386_CPU_FAMILY(cpu_id) >= 0x10 ||
|
||||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
|
||||
cpu_id == 0x60fb2)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_INTEL:
|
||||
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xe) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0xf &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0x3))
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0x3))
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xf &&
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf &&
|
||||
(rdmsr(0x1203) & 0x100000000ULL) == 0)
|
||||
tsc_is_invariant = 1;
|
||||
break;
|
||||
@@ -1106,8 +1106,8 @@ finishidentcpu(void)
|
||||
* XXX This is only done on the BSP package.
|
||||
*/
|
||||
if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4 &&
|
||||
((I386_CPU_FAMILY(cpu_id) == 0xf && I386_CPU_MODEL(cpu_id) >= 0x3) ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 0x6 && I386_CPU_MODEL(cpu_id) >= 0xe))) {
|
||||
((CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x3) ||
|
||||
(CPUID_TO_FAMILY(cpu_id) == 0x6 && CPUID_TO_MODEL(cpu_id) >= 0xe))) {
|
||||
uint64_t msr;
|
||||
msr = rdmsr(MSR_IA32_MISC_ENABLE);
|
||||
if ((msr & 0x400000ULL) != 0) {
|
||||
@@ -1303,6 +1303,21 @@ print_AMD_info(void)
|
||||
(amd_whcr & 0x0100) ? "Enable" : "Disable");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Opteron Rev E shows a bug as in very rare occasions a read memory
|
||||
* barrier is not performed as expected if it is followed by a
|
||||
* non-atomic read-modify-write instruction.
|
||||
* As long as that bug pops up very rarely (intensive machine usage
|
||||
* on other operating systems generally generates one unexplainable
|
||||
* crash any 2 months) and as long as a model specific fix would be
|
||||
* impratical at this stage, print out a warning string if the broken
|
||||
* model and family are identified.
|
||||
*/
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
|
||||
CPUID_TO_MODEL(cpu_id) <= 0x3f)
|
||||
printf("WARNING: This architecture revision has known SMP "
|
||||
"hardware bugs which may cause random instability\n");
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
+2
-2
@@ -275,8 +275,8 @@ msi_init(void)
|
||||
case CPU_VENDOR_AMD:
|
||||
break;
|
||||
case CPU_VENDOR_CENTAUR:
|
||||
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
|
||||
I386_CPU_MODEL(cpu_id) >= 0xf)
|
||||
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
|
||||
CPUID_TO_MODEL(cpu_id) >= 0xf)
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
|
||||
@@ -484,7 +484,7 @@ pmap_init_pat(void)
|
||||
return;
|
||||
|
||||
if (cpu_vendor_id != CPU_VENDOR_INTEL ||
|
||||
(I386_CPU_FAMILY(cpu_id) == 6 && I386_CPU_MODEL(cpu_id) >= 0xe)) {
|
||||
(CPUID_TO_FAMILY(cpu_id) == 6 && CPUID_TO_MODEL(cpu_id) >= 0xe)) {
|
||||
/*
|
||||
* Leave the indices 0-3 at the default of WB, WT, UC, and UC-.
|
||||
* Program 4 and 5 as WP and WC.
|
||||
|
||||
@@ -165,11 +165,11 @@
|
||||
#define CPUID_FAMILY 0x00000f00
|
||||
#define CPUID_EXT_MODEL 0x000f0000
|
||||
#define CPUID_EXT_FAMILY 0x0ff00000
|
||||
#define I386_CPU_MODEL(id) \
|
||||
#define CPUID_TO_MODEL(id) \
|
||||
((((id) & CPUID_MODEL) >> 4) | \
|
||||
((((id) & CPUID_FAMILY) >= 0x600) ? \
|
||||
(((id) & CPUID_EXT_MODEL) >> 12) : 0))
|
||||
#define I386_CPU_FAMILY(id) \
|
||||
#define CPUID_TO_FAMILY(id) \
|
||||
((((id) & CPUID_FAMILY) >> 8) + \
|
||||
((((id) & CPUID_FAMILY) == 0xf00) ? \
|
||||
(((id) & CPUID_EXT_FAMILY) >> 20) : 0))
|
||||
|
||||
@@ -93,6 +93,10 @@ struct l_old_select_argv {
|
||||
struct l_timeval *timeout;
|
||||
};
|
||||
|
||||
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
|
||||
l_size_t len, l_int prot, l_int flags, l_int fd,
|
||||
l_loff_t pos);
|
||||
|
||||
int
|
||||
linux_to_bsd_sigaltstack(int lsa)
|
||||
{
|
||||
@@ -591,12 +595,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
|
||||
#define STACK_SIZE (2 * 1024 * 1024)
|
||||
#define GUARD_SIZE (4 * PAGE_SIZE)
|
||||
|
||||
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
|
||||
|
||||
int
|
||||
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
{
|
||||
struct l_mmap_argv linux_args;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap2))
|
||||
@@ -605,14 +606,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
|
||||
args->flags, args->fd, args->pgoff);
|
||||
#endif
|
||||
|
||||
linux_args.addr = args->addr;
|
||||
linux_args.len = args->len;
|
||||
linux_args.prot = args->prot;
|
||||
linux_args.flags = args->flags;
|
||||
linux_args.fd = args->fd;
|
||||
linux_args.pgoff = args->pgoff * PAGE_SIZE;
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, args->addr, args->len, args->prot,
|
||||
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
|
||||
PAGE_SIZE));
|
||||
}
|
||||
|
||||
int
|
||||
@@ -632,11 +628,14 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
|
||||
linux_args.flags, linux_args.fd, linux_args.pgoff);
|
||||
#endif
|
||||
|
||||
return (linux_mmap_common(td, &linux_args));
|
||||
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
|
||||
linux_args.prot, linux_args.flags, linux_args.fd,
|
||||
(uint32_t)linux_args.pgoff));
|
||||
}
|
||||
|
||||
static int
|
||||
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
|
||||
l_int flags, l_int fd, l_loff_t pos)
|
||||
{
|
||||
struct proc *p = td->td_proc;
|
||||
struct mmap_args /* {
|
||||
@@ -659,21 +658,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* Linux mmap(2):
|
||||
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
|
||||
*/
|
||||
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
|
||||
(linux_args->flags & LINUX_MAP_PRIVATE)))
|
||||
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
|
||||
return (EINVAL);
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_SHARED)
|
||||
if (flags & LINUX_MAP_SHARED)
|
||||
bsd_args.flags |= MAP_SHARED;
|
||||
if (linux_args->flags & LINUX_MAP_PRIVATE)
|
||||
if (flags & LINUX_MAP_PRIVATE)
|
||||
bsd_args.flags |= MAP_PRIVATE;
|
||||
if (linux_args->flags & LINUX_MAP_FIXED)
|
||||
if (flags & LINUX_MAP_FIXED)
|
||||
bsd_args.flags |= MAP_FIXED;
|
||||
if (linux_args->flags & LINUX_MAP_ANON)
|
||||
if (flags & LINUX_MAP_ANON)
|
||||
bsd_args.flags |= MAP_ANON;
|
||||
else
|
||||
bsd_args.flags |= MAP_NOSYNC;
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
|
||||
if (flags & LINUX_MAP_GROWSDOWN)
|
||||
bsd_args.flags |= MAP_STACK;
|
||||
|
||||
/*
|
||||
@@ -681,12 +679,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* on Linux/i386. We do this to ensure maximum compatibility.
|
||||
* Linux/ia64 does the same in i386 emulation mode.
|
||||
*/
|
||||
bsd_args.prot = linux_args->prot;
|
||||
bsd_args.prot = prot;
|
||||
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
|
||||
bsd_args.prot |= PROT_READ | PROT_EXEC;
|
||||
|
||||
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
|
||||
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
|
||||
if (bsd_args.fd != -1) {
|
||||
/*
|
||||
* Linux follows Solaris mmap(2) description:
|
||||
@@ -711,9 +709,9 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
fdrop(fp, td);
|
||||
}
|
||||
|
||||
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
|
||||
if (flags & LINUX_MAP_GROWSDOWN) {
|
||||
/*
|
||||
* The linux MAP_GROWSDOWN option does not limit auto
|
||||
* The Linux MAP_GROWSDOWN option does not limit auto
|
||||
* growth of the region. Linux mmap with this option
|
||||
* takes as addr the inital BOS, and as len, the initial
|
||||
* region size. It can then grow down from addr without
|
||||
@@ -734,8 +732,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* fixed size of (STACK_SIZE - GUARD_SIZE).
|
||||
*/
|
||||
|
||||
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
|
||||
p->p_vmspace->vm_maxsaddr) {
|
||||
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
|
||||
/*
|
||||
* Some linux apps will attempt to mmap
|
||||
* thread stacks near the top of their
|
||||
@@ -766,19 +763,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
|
||||
* we map the full stack, since we don't have a way
|
||||
* to autogrow it.
|
||||
*/
|
||||
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
if (len > STACK_SIZE - GUARD_SIZE) {
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - linux_args->len);
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr) -
|
||||
(STACK_SIZE - GUARD_SIZE - len);
|
||||
bsd_args.len = STACK_SIZE - GUARD_SIZE;
|
||||
}
|
||||
} else {
|
||||
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
|
||||
bsd_args.len = linux_args->len;
|
||||
bsd_args.addr = (caddr_t)PTRIN(addr);
|
||||
bsd_args.len = len;
|
||||
}
|
||||
bsd_args.pos = linux_args->pgoff;
|
||||
bsd_args.pos = pos;
|
||||
|
||||
#ifdef DEBUG
|
||||
if (ldebug(mmap))
|
||||
|
||||
@@ -139,7 +139,7 @@ device cue # CATC USB Ethernet
|
||||
device kue # Kawasaki LSI USB Ethernet
|
||||
|
||||
# FireWire support
|
||||
device sbp # SCSI over FireWire (need scbus & da)
|
||||
#device sbp # SCSI over FireWire (need scbus & da)
|
||||
|
||||
# Various (pseudo) devices
|
||||
device ether # Ethernet support
|
||||
|
||||
@@ -302,6 +302,7 @@ mb_dupcl(struct mbuf *n, struct mbuf *m)
|
||||
n->m_ext.ref_cnt = m->m_ext.ref_cnt;
|
||||
n->m_ext.ext_type = m->m_ext.ext_type;
|
||||
n->m_flags |= M_EXT;
|
||||
n->m_flags |= m->m_flags & M_RDONLY;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+1
-1
@@ -161,7 +161,7 @@ acl_copyout(struct acl *kernel_acl, void *user_acl, acl_type_t type)
|
||||
break;
|
||||
|
||||
default:
|
||||
if (fuword((char *)user_acl +
|
||||
if (fuword32((char *)user_acl +
|
||||
offsetof(struct acl, acl_maxcnt)) != ACL_MAX_ENTRIES)
|
||||
return (EINVAL);
|
||||
|
||||
|
||||
@@ -552,6 +552,12 @@ dirloop:
|
||||
else
|
||||
cnp->cn_flags &= ~ISLASTCN;
|
||||
|
||||
if ((cnp->cn_flags & ISLASTCN) != 0 &&
|
||||
cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.' &&
|
||||
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
|
||||
error = EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for degenerate name (e.g. / or "")
|
||||
|
||||
+10
-6
@@ -963,15 +963,19 @@ flowtable_clean_vnet(void)
|
||||
if (CPU_ABSENT(i))
|
||||
continue;
|
||||
|
||||
thread_lock(curthread);
|
||||
sched_bind(curthread, i);
|
||||
thread_unlock(curthread);
|
||||
if (smp_started == 1) {
|
||||
thread_lock(curthread);
|
||||
sched_bind(curthread, i);
|
||||
thread_unlock(curthread);
|
||||
}
|
||||
|
||||
flowtable_free_stale(ft, NULL);
|
||||
|
||||
thread_lock(curthread);
|
||||
sched_unbind(curthread);
|
||||
thread_unlock(curthread);
|
||||
if (smp_started == 1) {
|
||||
thread_lock(curthread);
|
||||
sched_unbind(curthread);
|
||||
thread_unlock(curthread);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
flowtable_free_stale(ft, NULL);
|
||||
|
||||
@@ -1384,6 +1384,15 @@ fail:
|
||||
rt->mfc_rp.s_addr = INADDR_ANY;
|
||||
rt->mfc_bw_meter = NULL;
|
||||
|
||||
/* initialize pkt counters per src-grp */
|
||||
rt->mfc_pkt_cnt = 0;
|
||||
rt->mfc_byte_cnt = 0;
|
||||
rt->mfc_wrong_if = 0;
|
||||
timevalclear(&rt->mfc_last_assert);
|
||||
|
||||
TAILQ_INIT(&rt->mfc_stall);
|
||||
rt->mfc_nstall = 0;
|
||||
|
||||
/* link into table */
|
||||
LIST_INSERT_HEAD(&mfchashtbl[hash], rt, mfc_hash);
|
||||
TAILQ_INSERT_HEAD(&rt->mfc_stall, rte, rte_link);
|
||||
|
||||
+26
-8
@@ -343,17 +343,35 @@ rip_input(struct mbuf *m, int off)
|
||||
*/
|
||||
if (inp->inp_moptions != NULL &&
|
||||
IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
|
||||
struct sockaddr_in group;
|
||||
/*
|
||||
* If the incoming datagram is for IGMP, allow it
|
||||
* through unconditionally to the raw socket.
|
||||
*
|
||||
* In the case of IGMPv2, we may not have explicitly
|
||||
* joined the group, and may have set IFF_ALLMULTI
|
||||
* on the interface. imo_multi_filter() may discard
|
||||
* control traffic we actually need to see.
|
||||
*
|
||||
* Userland multicast routing daemons should continue
|
||||
* filter the control traffic appropriately.
|
||||
*/
|
||||
int blocked;
|
||||
|
||||
bzero(&group, sizeof(struct sockaddr_in));
|
||||
group.sin_len = sizeof(struct sockaddr_in);
|
||||
group.sin_family = AF_INET;
|
||||
group.sin_addr = ip->ip_dst;
|
||||
blocked = MCAST_PASS;
|
||||
if (proto != IPPROTO_IGMP) {
|
||||
struct sockaddr_in group;
|
||||
|
||||
bzero(&group, sizeof(struct sockaddr_in));
|
||||
group.sin_len = sizeof(struct sockaddr_in);
|
||||
group.sin_family = AF_INET;
|
||||
group.sin_addr = ip->ip_dst;
|
||||
|
||||
blocked = imo_multi_filter(inp->inp_moptions,
|
||||
ifp,
|
||||
(struct sockaddr *)&group,
|
||||
(struct sockaddr *)&ripsrc);
|
||||
}
|
||||
|
||||
blocked = imo_multi_filter(inp->inp_moptions, ifp,
|
||||
(struct sockaddr *)&group,
|
||||
(struct sockaddr *)&ripsrc);
|
||||
if (blocked != MCAST_PASS) {
|
||||
IPSTAT_INC(ips_notmember);
|
||||
continue;
|
||||
|
||||
@@ -834,6 +834,9 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
|
||||
return;
|
||||
} else {
|
||||
sctp_update_acked(stcb, cp, net, abort_flag);
|
||||
if (*abort_flag) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (asoc->control_pdapi) {
|
||||
/*
|
||||
|
||||
+30
-8
@@ -213,17 +213,39 @@ rip6_input(struct mbuf **mp, int *offp, int proto)
|
||||
*/
|
||||
if (in6p->in6p_moptions &&
|
||||
IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
|
||||
struct sockaddr_in6 mcaddr;
|
||||
/*
|
||||
* If the incoming datagram is for MLD, allow it
|
||||
* through unconditionally to the raw socket.
|
||||
*
|
||||
* Use the M_RTALERT_MLD flag to check for MLD
|
||||
* traffic without having to inspect the mbuf chain
|
||||
* more deeply, as all MLDv1/v2 host messages MUST
|
||||
* contain the Router Alert option.
|
||||
*
|
||||
* In the case of MLDv1, we may not have explicitly
|
||||
* joined the group, and may have set IFF_ALLMULTI
|
||||
* on the interface. im6o_mc_filter() may discard
|
||||
* control traffic we actually need to see.
|
||||
*
|
||||
* Userland multicast routing daemons should continue
|
||||
* filter the control traffic appropriately.
|
||||
*/
|
||||
int blocked;
|
||||
|
||||
bzero(&mcaddr, sizeof(struct sockaddr_in6));
|
||||
mcaddr.sin6_len = sizeof(struct sockaddr_in6);
|
||||
mcaddr.sin6_family = AF_INET6;
|
||||
mcaddr.sin6_addr = ip6->ip6_dst;
|
||||
blocked = MCAST_PASS;
|
||||
if ((m->m_flags & M_RTALERT_MLD) == 0) {
|
||||
struct sockaddr_in6 mcaddr;
|
||||
|
||||
blocked = im6o_mc_filter(in6p->in6p_moptions, ifp,
|
||||
(struct sockaddr *)&mcaddr,
|
||||
(struct sockaddr *)&fromsa);
|
||||
bzero(&mcaddr, sizeof(struct sockaddr_in6));
|
||||
mcaddr.sin6_len = sizeof(struct sockaddr_in6);
|
||||
mcaddr.sin6_family = AF_INET6;
|
||||
mcaddr.sin6_addr = ip6->ip6_dst;
|
||||
|
||||
blocked = im6o_mc_filter(in6p->in6p_moptions,
|
||||
ifp,
|
||||
(struct sockaddr *)&mcaddr,
|
||||
(struct sockaddr *)&fromsa);
|
||||
}
|
||||
if (blocked != MCAST_PASS) {
|
||||
IP6STAT_INC(ip6s_notmember);
|
||||
continue;
|
||||
|
||||
@@ -1054,6 +1054,11 @@ nfs_mount(struct mount *mp)
|
||||
error = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) {
|
||||
vfs_mount_error(mp, "Bad file handle");
|
||||
error = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (mp->mnt_flag & MNT_UPDATE) {
|
||||
struct nfsmount *nmp = VFSTONFS(mp);
|
||||
|
||||
@@ -270,7 +270,7 @@ static struct mem_region *pregions;
|
||||
extern u_int phys_avail_count;
|
||||
extern int regions_sz, pregions_sz;
|
||||
extern int ofw_real_mode;
|
||||
static struct ofw_map translations[64];
|
||||
static struct ofw_map translations[96];
|
||||
|
||||
extern struct pmap ofw_pmap;
|
||||
|
||||
@@ -896,6 +896,9 @@ moea64_bridge_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm_offset_t kernele
|
||||
panic("moea64_bootstrap: can't get mmu package");
|
||||
if ((sz = OF_getproplen(mmu, "translations")) == -1)
|
||||
panic("moea64_bootstrap: can't get ofw translation count");
|
||||
if (sz > sizeof(translations))
|
||||
panic("moea64_bootstrap: too many ofw translations (%d)",
|
||||
sz/sizeof(*translations));
|
||||
|
||||
bzero(translations, sz);
|
||||
if (OF_getprop(mmu, "translations", translations, sz) == -1)
|
||||
|
||||
@@ -157,7 +157,7 @@ device kue # Kawasaki LSI USB Ethernet
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
|
||||
# Misc
|
||||
|
||||
@@ -413,6 +413,22 @@ call_again:
|
||||
|
||||
cr->cr_xid = xid;
|
||||
mtx_lock(&ct->ct_lock);
|
||||
/*
|
||||
* Check to see if the other end has already started to close down
|
||||
* the connection. The upcall will have set ct_error.re_status
|
||||
* to RPC_CANTRECV if this is the case.
|
||||
* If the other end starts to close down the connection after this
|
||||
* point, it will be detected later when cr_error is checked,
|
||||
* since the request is in the ct_pending queue.
|
||||
*/
|
||||
if (ct->ct_error.re_status == RPC_CANTRECV) {
|
||||
if (errp != &ct->ct_error) {
|
||||
errp->re_errno = ct->ct_error.re_errno;
|
||||
errp->re_status = RPC_CANTRECV;
|
||||
}
|
||||
stat = RPC_CANTRECV;
|
||||
goto out;
|
||||
}
|
||||
TAILQ_INSERT_TAIL(&ct->ct_pending, cr, cr_link);
|
||||
mtx_unlock(&ct->ct_lock);
|
||||
|
||||
|
||||
@@ -255,7 +255,7 @@ device udav # Davicom DM9601E USB
|
||||
|
||||
# FireWire support
|
||||
device firewire # FireWire bus code
|
||||
device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
#device sbp # SCSI over FireWire (Requires scbus and da)
|
||||
device fwe # Ethernet over FireWire (non-standard!)
|
||||
device fwip # IP over FireWire (RFC 2734,3146)
|
||||
device dcons # Dumb console driver
|
||||
|
||||
@@ -147,6 +147,8 @@ fi
|
||||
|
||||
echo "Writing crash summary to $FILE."
|
||||
|
||||
umask 077
|
||||
|
||||
# Simulate uname
|
||||
ostype=$(echo -e printf '"%s", ostype' | gdb -x /dev/stdin -batch $KERNEL)
|
||||
osrelease=$(echo -e printf '"%s", osrelease' | gdb -x /dev/stdin -batch $KERNEL)
|
||||
|
||||
@@ -600,6 +600,7 @@ fetch_check_params () {
|
||||
echo ${WORKDIR}
|
||||
exit 1
|
||||
fi
|
||||
chmod 700 ${WORKDIR}
|
||||
cd ${WORKDIR} || exit 1
|
||||
|
||||
# Generate release number. The s/SECURITY/RELEASE/ bit exists
|
||||
|
||||
@@ -511,6 +511,10 @@ set_param(const char *name, char *value)
|
||||
*value++ = '\0';
|
||||
}
|
||||
|
||||
/* jail_set won't chdir along with its chroot, so do it here. */
|
||||
if (!strcmp(name, "path") && chdir(value) < 0)
|
||||
err(1, "chdir: %s", value);
|
||||
|
||||
/* Check for repeat parameters */
|
||||
for (i = 0; i < nparams; i++)
|
||||
if (!strcmp(name, params[i].jp_name)) {
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
This package includes a mfiutil command for administering mfi(4) controllers
|
||||
on FreeBSD.
|
||||
|
||||
Version 1.0.13
|
||||
* Cleaned up warnings in preparation for integration with FreeBSD
|
||||
|
||||
Version 1.0.12
|
||||
* Add 'drive clear' command to wipe drives with all 0x00 characters
|
||||
|
||||
Version 1.0.11
|
||||
* Display serial number for drives
|
||||
* Display location info for drives with 'show config'
|
||||
|
||||
Version 1.0.10
|
||||
* Display min and max stripe size supported by adapters.
|
||||
* Added support for examining the controller event log.
|
||||
|
||||
Version 1.0.9
|
||||
* Display stripe size for volumes.
|
||||
* Added support for setting the stripe size for new volumes.
|
||||
* Fix a regression in 1.0.8 that broke creation of RAID-5 and RAID-50
|
||||
arrays.
|
||||
|
||||
Version 1.0.8
|
||||
* Added support for RAID-60 arrays.
|
||||
* Added 'flash' command to support firmware flashing.
|
||||
|
||||
Version 1.0.7
|
||||
* Renamed 'clear config' to 'clear, 'create volume' to 'create',
|
||||
'delete volume' to 'delete', 'create spare' to 'add', and
|
||||
'delete spare' to 'remove'. The old names still work.
|
||||
* Added support for RAID-6 arrays.
|
||||
|
||||
Version 1.0.6
|
||||
* Added 'show patrol', 'patrol', 'start patrol', and 'stop patrol'
|
||||
commands to manage patrol reads.
|
||||
|
||||
Version 1.0.5
|
||||
* Added 'create volume' and 'delete volume' commands to manage volumes.
|
||||
* Added 'clear config' command to clear entire configuration.
|
||||
* Added more detailed error reporting based on firmware status codes.
|
||||
* Renamed 'progress' command to 'drive progress'.
|
||||
* Added 'volume progress' command to display progress of volume-level
|
||||
activites such as background inits.
|
||||
* Fixed 'create spare' to properly add global spares.
|
||||
|
||||
Version 1.0.4
|
||||
* Added 'create spare' and 'delete spare' commands to manage hot spares.
|
||||
* Added 'good' command to mark unconfigured bad drives as good.
|
||||
* Display more information about hot spares in 'show config'
|
||||
* Allow physical drives to be specified via Exx:Syy similar to megacli
|
||||
* Display onboard memory size in 'show adapter'
|
||||
|
||||
Version 1.0.3
|
||||
* Added 'cache' command to manage cache settings for volumes.
|
||||
* Added 'name' command to name volumes.
|
||||
* Added manpage.
|
||||
|
||||
Version 1.0.2
|
||||
* Added 'show adapter' and 'show battery' commands.
|
||||
* Added RAID level of volumes to 'show config' and 'show volumes'.
|
||||
* Added drive model info to 'show config' and 'show drives'.
|
||||
* Added package firmware version to 'show firmware'.
|
||||
* Added read and write cache status to 'show volumes'.
|
||||
* Map volume IDs to mfidX device names on newer kernels.
|
||||
|
||||
Version 1.0.1
|
||||
* Added 'show firmware' command
|
||||
|
||||
Version 1.0.0
|
||||
* Initial release
|
||||
|
||||
usage: mfiutil [-u unit] <command> ...
|
||||
|
||||
Commands include:
|
||||
version
|
||||
show adapter - display controller information
|
||||
show battery - display battery information
|
||||
show config - display RAID configuration
|
||||
show drives - list physical drives
|
||||
show firmware - list firmware images
|
||||
show volumes - list logical volumes
|
||||
show patrol - display patrol read status
|
||||
fail <drive> - fail a physical drive
|
||||
good <drive> - mark a bad physical drive as good
|
||||
rebuild <drive> - mark failed drive ready for rebuild
|
||||
drive progress <drive> - display status of active operations
|
||||
start rebuild <drive>
|
||||
abort rebuild <drive>
|
||||
locate <drive> <on|off> - toggle drive LED
|
||||
cache <volume> [command [setting]]
|
||||
name <volume> <name>
|
||||
volume progress <volume> - display status of active operations
|
||||
clear - clear volume configuration
|
||||
create <type> [-v] <drive>[,<drive>[,...]] [<drive>[,<drive>[,...]]
|
||||
delete <volume>
|
||||
add <drive> [volume] - add a hot spare
|
||||
remove <drive> - remove a hot spare
|
||||
patrol <disable|auto|manual> [interval [start]]
|
||||
start patrol - start a patrol read
|
||||
stop patrol - stop a patrol read
|
||||
flash <firmware>
|
||||
@@ -1,574 +0,0 @@
|
||||
.\" Copyright (c) 2008, 2009 Yahoo!, Inc.
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\" 3. The names of the authors may not be used to endorse or promote
|
||||
.\" products derived from this software without specific prior written
|
||||
.\" permission.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 17, 2008
|
||||
.Dt MFIUTIL 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm mfiutil
|
||||
.Nd Utility for managing LSI MegaRAID SAS controllers
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Cm version
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show adapter
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show battery
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show config
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show drives
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show events
|
||||
.Op Fl c Ar class
|
||||
.Op Fl l Ar locale
|
||||
.Op Fl n Ar count
|
||||
.Op Fl v
|
||||
.Op Ar start Op Ar stop
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show firmware
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show logstate
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm show volumes
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm fail Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm good Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm drive progress Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm drive clear Ar drive Brq "start | stop"
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm start rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm abort rebuild Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm locate Ar drive Brq "on | off"
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm cache Ar volume Op Ar setting Op Ar value
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm name Ar volume Ar name
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm volume progress Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm clear
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm create Ar type
|
||||
.Op Fl v
|
||||
.Op Fl s Ar stripe_size
|
||||
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm delete Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm add Ar drive Op Ar volume
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm remove Ar drive
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm start patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm stop patrol
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm patrol Ar command Op Ar interval Op Ar start
|
||||
.Nm
|
||||
.Op Fl u Ar unit
|
||||
.Cm flash Ar file
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
utility can be used to display or modify various parameters on LSI
|
||||
MegaRAID SAS RAID controllers.
|
||||
Each invocation of
|
||||
.Nm
|
||||
consists of zero or more global options followed by a command.
|
||||
Commands may support additional optional or required arguments after the
|
||||
command.
|
||||
.Pp
|
||||
Currently one global option is supported:
|
||||
.Bl -tag -width indent
|
||||
.It Fl u Ar unit
|
||||
.Ar unit
|
||||
specifies the unit of the controller to work with.
|
||||
If no unit is specified,
|
||||
then unit 0 is used.
|
||||
.El
|
||||
.Pp
|
||||
Volumes may be specified in two forms.
|
||||
First,
|
||||
a volume may be identified by its target ID.
|
||||
Second,
|
||||
on the volume may be specified by the corresponding
|
||||
.Em mfidX
|
||||
device,
|
||||
such as
|
||||
.Em mfid0 .
|
||||
Note that this second method only works on OS versions
|
||||
.Dv 6.2-YAHOO-20070510
|
||||
and later.
|
||||
.Pp
|
||||
Drives may be specified in two forms.
|
||||
First,
|
||||
a drive may be identified by its device ID.
|
||||
The device ID for configured drives can be found in
|
||||
.Cm show config .
|
||||
Second,
|
||||
a drive may be identified by its location as
|
||||
.Sm off
|
||||
.Op E Ar xx Ns \&:
|
||||
.Li S Ns Ar yy
|
||||
.Sm on
|
||||
where
|
||||
.Ar xx
|
||||
is the enclosure
|
||||
and
|
||||
.Ar yy
|
||||
is the slot for each drive as displayed in
|
||||
.Cm show drives .
|
||||
.Pp
|
||||
The
|
||||
.Nm
|
||||
utility supports several different groups of commands.
|
||||
The first group of commands provide information about the controller,
|
||||
the volumes it manages, and the drives it controls.
|
||||
The second group of commands are used to manage the physical drives
|
||||
attached to the controller.
|
||||
The third group of commands are used to manage the logical volumes
|
||||
managed by the controller.
|
||||
The fourth group of commands are used to manage the drive configuration for
|
||||
the controller.
|
||||
The fifth group of commands are used to manage controller-wide operations.
|
||||
.Pp
|
||||
The informational commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm version
|
||||
Displays the version of
|
||||
.Nm .
|
||||
.It Cm show adapter
|
||||
Displays information about the RAID controller such as the model number.
|
||||
.It Cm show battery
|
||||
Displays information about the battery from the battery backup unit.
|
||||
.It Cm show config
|
||||
Displays the volume and drive configuration for the controller.
|
||||
Each array is listed along with the physical drives the array is built from.
|
||||
Each volume is listed along with the arrays that the volume spans.
|
||||
If any hot spare drives are configured, then they are listed as well.
|
||||
.It Cm show drives
|
||||
Lists all of the physical drives attached to the controller.
|
||||
.It Xo Cm show events
|
||||
.Op Fl c Ar class
|
||||
.Op Fl l Ar locale
|
||||
.Op Fl n Ar count
|
||||
.Op Fl v
|
||||
.Op Ar start Op Ar stop
|
||||
.Xc
|
||||
Display entries from the controller's event log.
|
||||
The controller maintains a circular buffer of events.
|
||||
Each event is tagged with a class and locale.
|
||||
.Pp
|
||||
The
|
||||
.Ar class
|
||||
parameter limits the output to entries at the specified class or higher.
|
||||
The default class is
|
||||
.Dq warn .
|
||||
The available classes from lowest priority to highest are:
|
||||
.Bl -tag -width -indent
|
||||
.It Cm debug
|
||||
Debug messages.
|
||||
.It Cm progress
|
||||
Periodic progress updates for long-running operations such as background
|
||||
initializations, array rebuilds, or patrol reads.
|
||||
.It Cm info
|
||||
Informational messages such as drive insertions and volume creations.
|
||||
.It Cm warn
|
||||
Indicates that some component may be close to failing.
|
||||
.It Cm crit
|
||||
A component has failed, but no data is lost.
|
||||
For example, a volume becoming degraded due to a drive failure.
|
||||
.It Cm fatal
|
||||
A component has failed resulting in data loss.
|
||||
.It Cm dead
|
||||
The controller itself has died.
|
||||
.El
|
||||
.Pp
|
||||
The
|
||||
.Ar locale
|
||||
parameter limits the output to entries for the specified part of the controller.
|
||||
The default locale is
|
||||
.Dq all .
|
||||
The available locales are
|
||||
.Dq volume ,
|
||||
.Dq drive ,
|
||||
.Dq enclousure ,
|
||||
.Dq battery ,
|
||||
.Dq sas ,
|
||||
.Dq controller ,
|
||||
.Dq config ,
|
||||
.Dq cluster ,
|
||||
and
|
||||
.Dq all .
|
||||
.Pp
|
||||
The
|
||||
.Ar count
|
||||
parameter is a debugging aid that specifies the number of events to fetch from
|
||||
the controller for each low-level request.
|
||||
The default is 15 events.
|
||||
.Pp
|
||||
By default, matching event log entries from the previous shutdown up to the
|
||||
present are displayed. This range can be adjusted via the
|
||||
.Ar start
|
||||
and
|
||||
.Ar stop
|
||||
parameters.
|
||||
Each of these parameters can either be specified as a log entry number or as
|
||||
one of the following aliases:
|
||||
.Bl -tag -width -indent
|
||||
.It Cm newest
|
||||
The newest entry in the event log.
|
||||
.It Cm oldest
|
||||
The oldest entry in the event log.
|
||||
.It Cm clear
|
||||
The first entry since the event log was cleared.
|
||||
.It Cm shutdown
|
||||
The entry in the event log corresponding to the last time the controller was
|
||||
cleanly shut down.
|
||||
.It Cm boot
|
||||
The entry in the event log corresponding to the most recent boot.
|
||||
.El
|
||||
.It Cm show firmware
|
||||
Lists all of the firmware images present on the controller.
|
||||
.It Cm show logstate
|
||||
Display the various sequence numbers associated with the event log.
|
||||
.It Cm show patrol
|
||||
Display the status of the controller's patrol read operation.
|
||||
.It Cm show volumes
|
||||
Lists all of the logical volumes managed by the controller.
|
||||
.El
|
||||
.Pp
|
||||
The physical drive management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm fail Ar drive
|
||||
Mark
|
||||
.Ar drive
|
||||
as failed.
|
||||
.Ar Drive
|
||||
must be an online drive that is part of an array.
|
||||
.It Cm good Ar drive
|
||||
Mark
|
||||
.Ar drive
|
||||
as an unconfigured good drive.
|
||||
.Ar Drive
|
||||
must not be part of an existing array.
|
||||
.It Cm rebuild Ar drive
|
||||
Mark a failed
|
||||
.Ar drive
|
||||
that is still part of an array as a good drive suitable for a rebuild.
|
||||
The firmware should kick off an array rebuild on its own if a failed drive
|
||||
is marked as a rebuild drive.
|
||||
.It Cm drive progress Ar drive
|
||||
Report the current progress and estimated completion time of drive operations
|
||||
such as rebuilds or patrol reads.
|
||||
.It Cm drive clear Ar drive Brq "start | stop"
|
||||
Start or stop the writing of all 0x00 characters to a drive.
|
||||
.It Cm start rebuild Ar drive
|
||||
Manually start a rebuild on
|
||||
.Ar drive .
|
||||
.It Cm abort rebuild Ar drive
|
||||
Abort an in-progress rebuild operation on
|
||||
.Ar drive .
|
||||
It can be resumed with the
|
||||
.Cm start rebuild
|
||||
command.
|
||||
.It Cm locate Ar drive Brq "on | off"
|
||||
Change the state of the external LED associated with
|
||||
.Ar drive .
|
||||
.El
|
||||
.Pp
|
||||
The logical volume management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm cache Ar volume Op Ar setting Op Ar value
|
||||
If no
|
||||
.Ar setting
|
||||
argument is supplied, then the current cache policy for
|
||||
.Ar volume
|
||||
is displayed;
|
||||
otherwise,
|
||||
the cache policy for
|
||||
.Ar volume
|
||||
is modified.
|
||||
The optional
|
||||
.Ar setting
|
||||
argument can be one of the following values:
|
||||
.Bl -tag -width indent
|
||||
.It Cm enable
|
||||
Enable caching for both read and write I/O operations.
|
||||
.It Cm disable
|
||||
Disable caching for both read and write I/O operations.
|
||||
.It Cm reads
|
||||
Enable caching only for read I/O operations.
|
||||
.It Cm writes
|
||||
Enable caching only for write I/O operations.
|
||||
.It Cm write-back
|
||||
Use write-back policy for cached writes.
|
||||
.It Cm write-through
|
||||
Use write-through policy for cached writes.
|
||||
.It Cm read-ahead Op Ar value
|
||||
Set the read ahead policy for cached reads.
|
||||
The
|
||||
.Ar value
|
||||
argument can be set to either
|
||||
.Dq none ,
|
||||
.Dq adaptive ,
|
||||
or
|
||||
.Dq always .
|
||||
.It Cm write-cache Op Ar value
|
||||
Control the write caches on the physical drives backing
|
||||
.Ar volume .
|
||||
The
|
||||
.Ar value
|
||||
argument can be set to either
|
||||
.Dq disable ,
|
||||
.Dq enable ,
|
||||
or
|
||||
.Dq default .
|
||||
.Pp
|
||||
In general this setting should be left disabled to avoid data loss when the
|
||||
physical drives lose power.
|
||||
The battery backup of the RAID controller does not save data in the write
|
||||
caches of the physical drives.
|
||||
.El
|
||||
.It Cm name Ar volume Ar name
|
||||
Sets the name of
|
||||
.Ar volume
|
||||
to
|
||||
.Ar name .
|
||||
.It Cm volume progress Ar volume
|
||||
Report the current progress and estimated completion time of volume operations
|
||||
such as consistency checks and initializations.
|
||||
.El
|
||||
.Pp
|
||||
The configuration commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm clear
|
||||
Delete the entire configuration including all volumes, arrays, and spares.
|
||||
.It Xo Cm create Ar type
|
||||
.Op Fl v
|
||||
.Op Fl s Ar stripe_size
|
||||
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
|
||||
.Xc
|
||||
Create a new volume.
|
||||
The
|
||||
.Ar type
|
||||
specifies the type of volume to create.
|
||||
Currently supported types include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm jbod
|
||||
Creates a RAID0 volume for each drive specified.
|
||||
Each drive must be specified as a separate argument.
|
||||
.It Cm raid0
|
||||
Creates one RAID0 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid1
|
||||
Creates one RAID1 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid5
|
||||
Creates one RAID5 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid6
|
||||
Creates one RAID6 volume spanning the drives listed in the single drive list.
|
||||
.It Cm raid10
|
||||
Creates one RAID10 volume spanning multiple RAID1 arrays.
|
||||
The drives for each RAID1 array are specified as a single drive list.
|
||||
.It Cm raid50
|
||||
Creates one RAID50 volume spanning multiple RAID5 arrays.
|
||||
The drives for each RAID5 array are specified as a single drive list.
|
||||
.It Cm raid60
|
||||
Creates one RAID60 volume spanning multiple RAID6 arrays.
|
||||
The drives for each RAID6 array are specified as a single drive list.
|
||||
.It Cm concat
|
||||
Creates a single volume by concatenating all of the drives in the single drive
|
||||
list.
|
||||
.El
|
||||
.Pp
|
||||
.Sy Note:
|
||||
Not all volume types are supported by all controllers.
|
||||
.Pp
|
||||
If the
|
||||
.Fl v
|
||||
flag is specified after
|
||||
.Ar type ,
|
||||
then more verbose output will be enabled.
|
||||
Currently this just provides notification as drives are added to arrays and
|
||||
arrays to volumes when building the configuration.
|
||||
.Pp
|
||||
The
|
||||
.Fl s
|
||||
.Ar stripe_size
|
||||
parameter allows the stripe size of the array to be set.
|
||||
By default a stripe size of 64K is used.
|
||||
Valid values are 512 through 1M, though the MFI firmware may reject some
|
||||
values.
|
||||
.It Cm delete Ar volume
|
||||
Delete the volume
|
||||
.Ar volume .
|
||||
.It Cm add Ar drive Op Ar volume
|
||||
Mark
|
||||
.Ar drive
|
||||
as a hot spare.
|
||||
.Ar Drive
|
||||
must be in the unconfigured good state.
|
||||
If
|
||||
.Ar volume
|
||||
is specified,
|
||||
then the hot spare will be dedicated to arrays backing that volume.
|
||||
Otherwise,
|
||||
.Ar drive
|
||||
will be used as a global hot spare backing all arrays for this controller.
|
||||
Note that
|
||||
.Ar drive
|
||||
must be as large as the smallest drive in all of the arrays it is going to
|
||||
back.
|
||||
.It Cm remove Ar drive
|
||||
Remove the hot spare
|
||||
.Ar drive
|
||||
from service.
|
||||
It will be placed in the unconfigured good state.
|
||||
.El
|
||||
.Pp
|
||||
The controller management commands include:
|
||||
.Bl -tag -width indent
|
||||
.It Cm patrol Ar command Op Ar interval Op Ar start
|
||||
Set the patrol read operation mode.
|
||||
The
|
||||
.Ar command
|
||||
argument can be one of the following values:
|
||||
.Bl -tag -width indent
|
||||
.It Cm disable
|
||||
Disable patrol reads.
|
||||
.It Cm auto
|
||||
Enable periodic patrol reads initiated by the firmware.
|
||||
The optional
|
||||
.Ar interval
|
||||
argument specifies the interval in seconds between patrol reads.
|
||||
If patrol reads should be run continously,
|
||||
then
|
||||
.Ar interval
|
||||
should consist of the word
|
||||
.Dq continuously .
|
||||
The optional
|
||||
.Ar start
|
||||
argument specifies a non-negative, relative start time for the next patrol read.
|
||||
If an interval or start time is not specified,
|
||||
then the existing setting will be used.
|
||||
.It Cm manual
|
||||
Enable manual patrol reads that are only initiated by the user.
|
||||
.El
|
||||
.It Cm start patrol
|
||||
Start a patrol read operation.
|
||||
.It Cm stop patrol
|
||||
Stop a currently running patrol read operation.
|
||||
.It Cm flash Ar file
|
||||
Updates the flash on the controller with the firmware stored in
|
||||
.Ar file .
|
||||
A reboot is required for the new firmware to take effect.
|
||||
.El
|
||||
.Sh EXAMPLES
|
||||
Configure the cache for volume mfid0 to cache only writes:
|
||||
.Pp
|
||||
.Dl Nm Cm cache mfid0 writes
|
||||
.Dl Nm Cm cache mfid0 write-back
|
||||
.Pp
|
||||
Create a RAID5 array spanning the first four disks in the second enclosure:
|
||||
.Pp
|
||||
.Dl Nm Cm create raid5 e1:s0,e1:s1,e1:s2,e1:s4
|
||||
.Pp
|
||||
Configure the first three disks on a controller as JBOD:
|
||||
.Pp
|
||||
.Dl Nm Cm create jbod 0 1 2
|
||||
.Pp
|
||||
Create a RAID10 volume that spans two arrays each of which contains two disks
|
||||
from two different enclosures:
|
||||
.Pp
|
||||
.Dl Nm Cm create raid10 e1:s0,e1:s1 e2:s0,e2:s1
|
||||
.Pp
|
||||
Add drive with the device ID of 4 as a global hot spare:
|
||||
.Pp
|
||||
.Dl Nm Cm add 4
|
||||
.Pp
|
||||
Add the drive in slot 2 in the main chassis as a hot spare for volume mfid0:
|
||||
.Pp
|
||||
.Dl Nm Cm add s2 mfid0
|
||||
.Pp
|
||||
Configure the adapter to run periodic patrol reads once a week with the first
|
||||
patrol read starting in 5 minutes:
|
||||
.Pp
|
||||
.Dl Nm Cm patrol auto 604800 300
|
||||
.Pp
|
||||
.Sh SEE ALSO
|
||||
.Xr mfi 4
|
||||
.Sh BUGS
|
||||
On 64-bit OS versions
|
||||
.Dv 6.2-YAHOO-20070514
|
||||
and earlier,
|
||||
the
|
||||
.Xr mfi 4
|
||||
driver does not properly report firmware errors to 32-bit versions of
|
||||
.Nm .
|
||||
As a result,
|
||||
some commands may fail even though they do not report any errors.
|
||||
Reference in new issue
Block a user