Reintegrate head@r272414

Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Glen Barber 2014-10-02 16:32:52 +00:00
commit 698271d877
217 changed files with 5750 additions and 1773 deletions

View File

@ -336,11 +336,11 @@ XFLAGS+= -B${CROSS_BINUTILS_PREFIX}
.else
XFLAGS+= -B${WORLDTMP}/usr/bin
.endif
.if ${TARGET} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_ARCH:M*eb*} == ""
TARGET_ABI= gnueabi
.elif ${TARGET_ARCH} == "armv6hf"
.if ${TARGET} == "arm"
.if ${TARGET_ARCH:M*hf*} != ""
TARGET_ABI= gnueabihf
.else
TARGET_ABI= gnueabi
.endif
.endif
TARGET_ABI?= unknown

View File

@ -43,6 +43,9 @@ OLD_FILES+=usr/share/man/man9/sleepq_calc_signal_retval.9.gz
OLD_FILES+=usr/share/man/man9/sleepq_catch_signals.9.gz
# 20140917: hv_kvpd rc.d script removed in favor of devd configuration
OLD_FILES+=etc/rc.d/hv_kvpd
# 20140917: libnv was accidentally being installed to /usr/lib instead of /lib
OLD_LIBS+=usr/lib/libnv.a
OLD_LIBS+=usr/lib/libnv.so.0
# 20140814: libopie version bump
OLD_LIBS+=usr/lib/libopie.so.7
OLD_LIBS+=usr/lib32/libopie.so.7

View File

@ -1,7 +1,23 @@
#!/bin/sh
# $FreeBSD$
base=`basename $0`
jail_name_to_jid()
{
local check_name="$1"
(
line="$(jls -n 2> /dev/null | grep name=$check_name )"
for nv in $line; do
local name="${nv%=*}"
if [ "${name}" = "jid" ]; then
eval $nv
echo $jid
break
fi
done
)
}
base=pgrep_j_test
echo "1..3"
@ -9,21 +25,25 @@ name="pgrep -j <jid>"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
jail / $base-2 127.0.0.1 $sleep 5 &
chpid2=$!
$sleep 5 &
chpid3=$!
sleep 0.5
jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
pid=`pgrep -f -j $jid $sleep`
if [ "$pid" = "$chpid" ]; then
jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_1_1.pid $sleep 5 &
jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_1_2.pid $sleep 5 &
jid1=$(jail_name_to_jid ${base}_1_1)
jid2=$(jail_name_to_jid ${base}_1_2)
jid="${jid1},${jid2}"
pid1="$(pgrep -f -x -j $jid "$sleep 5" | sort)"
pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_1_1.pid)" \
$(cat ${PWD}/${base}_1_2.pid) | sort)
if [ "$pid1" = "$pid2" ]; then
echo "ok 1 - $name"
else
echo "not ok 1 - $name"
fi
kill $chpid $chpid2 $chpid3
[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
rm -f $sleep
else
echo "ok 1 - $name # skip Test needs uid 0."
@ -33,21 +53,23 @@ name="pgrep -j any"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
jail / $base-2 127.0.0.1 $sleep 5 &
chpid2=$!
$sleep 5 &
chpid3=$!
sleep 0.5
pids=`pgrep -f -j any $sleep | sort`
refpids=`{ echo $chpid; echo $chpid2; } | sort`
if [ "$pids" = "$refpids" ]; then
jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_2_1.pid $sleep 5 &
jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_2_2.pid $sleep 5 &
sleep 2
pid1="$(pgrep -f -x -j any "$sleep 5" | sort)"
pid2=$(printf "%s\n%s" "$(cat ${PWD}/${base}_2_1.pid)" \
$(cat ${PWD}/${base}_2_2.pid) | sort)
if [ "$pid1" = "$pid2" ]; then
echo "ok 2 - $name"
else
echo "not ok 2 - $name"
fi
kill $chpid $chpid2 $chpid3
[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
rm -f $sleep
else
echo "ok 2 - $name # skip Test needs uid 0."
@ -57,19 +79,19 @@ name="pgrep -j none"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
$sleep 5 &
chpid=$!
jail / $base 127.0.0.1 $sleep 5 &
chpid2=$!
sleep 0.5
pid=`pgrep -f -j none $sleep`
if [ "$pid" = "$chpid" ]; then
daemon -p ${PWD}/${base}_3_1.pid $sleep 5 &
jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_3_2.pid $sleep 5 &
sleep 2
pid="$(pgrep -f -x -j none "$sleep 5")"
if [ "$pid" = "$(cat ${PWD}/${base}_3_1.pid)" ]; then
echo "ok 3 - $name"
else
echo "not ok 3 - $name"
fi
kill $chpid $chpid2
rm -f $sleep
[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat $PWD/${base}_3_1.pid)
[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat $PWD/${base}_3_2.pid)
else
echo "ok 3 - $name # skip Test needs uid 0."
fi

View File

@ -1,7 +1,23 @@
#!/bin/sh
# $FreeBSD$
base=`basename $0`
jail_name_to_jid()
{
local check_name="$1"
(
line="$(jls -n 2> /dev/null | grep name=$check_name )"
for nv in $line; do
local name="${nv%=*}"
if [ "${name}" = "jid" ]; then
eval $nv
echo $jid
break
fi
done
)
}
base=pkill_j_test
echo "1..3"
@ -9,21 +25,28 @@ name="pkill -j <jid>"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
jail / $base-2 127.0.0.1 $sleep 5 &
chpid2=$!
jail -c path=/ name=${base}_1_1 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_1_1.pid $sleep 5 &
jail -c path=/ name=${base}_1_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_1_2.pid $sleep 5 &
$sleep 5 &
chpid3=$!
sleep 0.5
jid=`jls | awk "/127\\.0\\.0\\.1.*${base}-1/ {print \$1}"`
if pkill -f -j $jid $sleep && sleep 0.5 &&
! kill $chpid && kill $chpid2 $chpid3; then
jid1=$(jail_name_to_jid ${base}_1_1)
jid2=$(jail_name_to_jid ${base}_1_2)
jid="${jid1},${jid2}"
if pkill -f -j "$jid" $sleep && sleep 0.5 &&
! -f ${PWD}/${base}_1_1.pid &&
! -f ${PWD}/${base}_1_2.pid ; then
echo "ok 1 - $name"
else
echo "not ok 1 - $name"
fi 2>/dev/null
rm -f $sleep
[ -f ${PWD}/${base}_1_1.pid ] && kill $(cat ${PWD}/${base}_1_1.pid)
[ -f ${PWD}/${base}_1_2.pid ] && kill $(cat ${PWD}/${base}_1_2.pid)
wait
else
echo "ok 1 - $name # skip Test needs uid 0."
fi
@ -32,20 +55,26 @@ name="pkill -j any"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
jail / $base-1 127.0.0.1 $sleep 5 &
chpid=$!
jail / $base-2 127.0.0.1 $sleep 5 &
chpid2=$!
jail -c path=/ name=${base}_2_1 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_2_1.pid $sleep 5 &
jail -c path=/ name=${base}_2_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_2_2.pid $sleep 5 &
$sleep 5 &
chpid3=$!
sleep 0.5
chpid3=$!
if pkill -f -j any $sleep && sleep 0.5 &&
! kill $chpid && ! kill $chpid2 && kill $chpid3; then
[ ! -f ${PWD}/${base}_2_1.pid -a
! -f ${PWD}/${base}_2_2.pid ] && kill $chpid3; then
echo "ok 2 - $name"
else
echo "not ok 2 - $name"
fi 2>/dev/null
rm -f $sleep
[ -f ${PWD}/${base}_2_1.pid ] && kill $(cat ${PWD}/${base}_2_1.pid)
[ -f ${PWD}/${base}_2_2.pid ] && kill $(cat ${PWD}/${base}_2_2.pid)
wait
else
echo "ok 2 - $name # skip Test needs uid 0."
fi
@ -54,18 +83,20 @@ name="pkill -j none"
if [ `id -u` -eq 0 ]; then
sleep=$(pwd)/sleep.txt
ln -sf /bin/sleep $sleep
$sleep 5 &
chpid=$!
jail / $base 127.0.0.1 $sleep 5 &
chpid2=$!
sleep 0.5
if pkill -f -j none $sleep && sleep 0.5 &&
! kill $chpid && kill $chpid2; then
daemon -p ${PWD}/${base}_3_1.pid $sleep 5
jail -c path=/ name=${base}_3_2 ip4.addr=127.0.0.1 \
command=daemon -p ${PWD}/${base}_3_2.pid $sleep 5 &
sleep 1
if pkill -f -j none "$sleep 5" && sleep 1 &&
[ ! -f ${PWD}/${base}_3_1.pid -a -f ${PWD}/${base}_3_2.pid ] ; then
echo "ok 3 - $name"
else
ls ${PWD}/*.pid
echo "not ok 3 - $name"
fi 2>/dev/null
rm -f $sleep
[ -f ${PWD}/${base}_3_1.pid ] && kill $(cat ${base}_3_1.pid)
[ -f ${PWD}/${base}_3_2.pid ] && kill $(cat ${base}_3_2.pid)
else
echo "ok 3 - $name # skip Test needs uid 0."
fi

View File

@ -65,7 +65,23 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x03f0";
match "product" "(0x2016|0x2116|0x2216|0x3016|0x3116)";
match "product" "(0x2016|0x2116|0x2216)";
action "kldload -n uipaq";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x03f0";
match "product" "(0x241d|0x251d)";
action "kldload -n u3g";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x03f0";
match "product" "(0x3016|0x3116)";
action "kldload -n uipaq";
};
@ -129,7 +145,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0403";
match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x6015|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
match "product" "(0x6001|0x6004|0x6006|0x6006|0x6010|0x6011|0x6014|0x6015|0x8372|0x9378|0x9379|0x937a|0x937c|0x9868|0x9e90|0x9f80|0xa6d0|0xa6d1|0xabb8|0xb810|0xb811|0xb812|0xbaf8|0xbbe2|0xbca0|0xbca1|0xbca2|0xbca4|0xbcd8|0xbcd9|0xbcda|0xbdc8|0xbfd8|0xbfd9|0xbfda|0xbfdb|0xbfdc|0xc7d0|0xc850|0xc991|0xcaa0|0xcc48|0xcc49|0xcc4a|0xd010|0xd011|0xd012|0xd013|0xd014|0xd015|0xd016|0xd017|0xd070|0xd071|0xd388|0xd389|0xd38a|0xd38b|0xd38c|0xd38d|0xd38e|0xd38f|0xd578|0xd678|0xd738|0xd780|0xdaf8|0xdaf9|0xdafa|0xdafb|0xdafc|0xdafd|0xdafe|0xdaff|0xdc00|0xdc01|0xdd20|0xdf28|0xdf30|0xdf31|0xdf32|0xdf33|0xdf35|0xe000|0xe001|0xe002|0xe004|0xe006|0xe008|0xe009|0xe00a|0xe050|0xe0e8|0xe0e9|0xe0ea|0xe0eb|0xe0ec|0xe0ed|0xe0ee|0xe0ef|0xe0f0|0xe0f1|0xe0f2|0xe0f3|0xe0f4|0xe0f5|0xe0f6|0xe0f7|0xe40b|0xe520|0xe548|0xe6c8|0xe700|0xe729|0xe808|0xe809|0xe80a|0xe80b|0xe80c|0xe80d|0xe80e|0xe80f|0xe888|0xe889|0xe88a|0xe88b|0xe88c|0xe88d|0xe88e|0xe88f|0xea90|0xebe0|0xec88|0xec89|0xed22|0xed71|0xed72|0xed73|0xed74|0xee18|0xeee8|0xeee9|0xeeea|0xeeeb|0xeeec|0xeeed|0xeeee|0xeeef|0xef50|0xef51|0xf068|0xf069|0xf06a|0xf06b|0xf06c|0xf06d|0xf06e|0xf06f|0xf070|0xf0c0|0xf0c8|0xf208|0xf2d0|0xf3c0|0xf3c1|0xf3c2|0xf448|0xf449|0xf44a|0xf44b|0xf44c|0xf460|0xf608|0xf60b|0xf680|0xf850|0xf857|0xf9d0|0xf9d1|0xf9d2|0xf9d3|0xf9d4|0xf9d5|0xfa00|0xfa01|0xfa02|0xfa03|0xfa04|0xfa05|0xfa06|0xfa10|0xfa33|0xfa88|0xfad0|0xfaf0|0xfb58|0xfb59|0xfb5a|0xfb5b|0xfb5c|0xfb5d|0xfb5e|0xfb5f|0xfb80|0xfb99|0xfbfa|0xfc08|0xfc09|0xfc0a|0xfc0b|0xfc0c|0xfc0d|0xfc0e|0xfc0f|0xfc60|0xfc70|0xfc71|0xfc72|0xfc73|0xfc82|0xfd60|0xfe38|0xff00|0xff18|0xff1c|0xff1d|0xff20|0xff38|0xff39|0xff3a|0xff3b|0xff3c|0xff3d|0xff3e|0xff3f|0xffa8)";
action "kldload -n uftdi";
};
@ -1057,7 +1073,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0586";
match "product" "(0x3416|0x341a)";
match "product" "(0x3416|0x341a|0x341e)";
action "kldload -n if_run";
};
@ -1097,7 +1113,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x05ac";
match "product" "(0x020d|0x020e|0x020f|0x0215|0x0217|0x0218|0x0219|0x021a|0x021b|0x021c)";
match "product" "(0x020d|0x020e|0x020f|0x0210|0x0214|0x0215|0x0216|0x0217|0x0218|0x0219|0x021a|0x021b|0x021c)";
action "kldload -n atp";
};
@ -2353,7 +2369,23 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0b05";
match "product" "(0x17b5|0x17cb)";
match "product" "0x17b5";
action "kldload -n ng_ubt";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0b05";
match "product" "0x17ba";
action "kldload -n if_urtwn";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0b05";
match "product" "0x17cb";
action "kldload -n ng_ubt";
};
@ -2481,7 +2513,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0bda";
match "product" "(0x018a|0x317f)";
match "product" "(0x0179|0x018a|0x317f)";
action "kldload -n if_urtwn";
};
@ -2513,7 +2545,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0bda";
match "product" "(0x8176|0x8176|0x8177|0x8178|0x817a|0x817b|0x817c|0x817d|0x817e)";
match "product" "(0x8176|0x8176|0x8177|0x8178|0x8179|0x817a|0x817b|0x817c|0x817d|0x817e)";
action "kldload -n if_urtwn";
};
@ -2925,6 +2957,14 @@ nomatch 32 {
action "kldload -n if_urtwn";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x0df6";
match "product" "0x0072";
action "kldload -n if_axge";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
@ -3577,7 +3617,23 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1464|0x1465|0x14ac|0x14c9|0x14d1|0x14fe|0x1505|0x1506|0x1520|0x1521|0x1803|0x1c05|0x1c0b)";
match "product" "(0x1001|0x1003|0x1004|0x1401|0x1402|0x1403|0x1404|0x1405|0x1406|0x1407|0x1408|0x1409|0x140a|0x140b|0x140c|0x140d|0x140e|0x140f|0x1410|0x1411|0x1412|0x1413|0x1414|0x1415|0x1416|0x1417|0x1418|0x1419|0x141a|0x141b|0x141c|0x141d|0x141e|0x141f|0x1420|0x1421|0x1422|0x1423|0x1424|0x1425|0x1426|0x1427|0x1428|0x1429|0x142a|0x142b|0x142c|0x142d|0x142e|0x142f|0x1430|0x1431|0x1432|0x1433|0x1434|0x1435|0x1436|0x1437|0x1438|0x1439|0x143a|0x143b|0x143c|0x143d|0x143e|0x143f|0x1446|0x1464|0x1465|0x14ac|0x14c9|0x14d1|0x14fe|0x1505|0x1506|0x1520|0x1521)";
action "kldload -n u3g";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "product" "0x155b";
action "kldload -n if_cdce";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "product" "(0x1803|0x1c05|0x1c0b)";
action "kldload -n u3g";
};
@ -3753,7 +3809,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x1410";
match "product" "(0x1100|0x1110|0x1120|0x1130|0x1400|0x1410|0x1420|0x1430|0x1450|0x2100|0x2110|0x2120|0x2130|0x2400|0x2410|0x2420|0x4100|0x4400|0x5010|0x5020|0x5041|0x5100|0x6000|0x6002|0x7042)";
match "product" "(0x1100|0x1110|0x1120|0x1130|0x1400|0x1410|0x1420|0x1430|0x1450|0x2100|0x2110|0x2120|0x2130|0x2400|0x2410|0x2420|0x4100|0x4400|0x5010|0x5020|0x5041|0x5100|0x6000|0x6002|0x7001|0x7031|0x7042)";
action "kldload -n u3g";
};
@ -4553,7 +4609,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x1cf1";
match "product" "(0x0001|0x0004)";
match "product" "(0x0001|0x0004|0x0022)";
action "kldload -n uftdi";
};
@ -4565,6 +4621,14 @@ nomatch 32 {
action "kldload -n u3g";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x1d34";
match "product" "0x0004";
action "kldload -n uled";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
@ -4633,7 +4697,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x2001";
match "product" "(0x3307|0x3308|0x3309|0x330a|0x330d)";
match "product" "(0x3307|0x3308|0x3309|0x330a|0x330d|0x330f)";
action "kldload -n if_urtwn";
};
@ -4665,7 +4729,7 @@ nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x2001";
match "product" "(0x3c09|0x3c0a|0x3c15|0x3c1a|0x3c1b|0x3c1f)";
match "product" "(0x3c09|0x3c0a|0x3c15|0x3c1a|0x3c1b|0x3c1f|0x3c20)";
action "kldload -n if_run";
};
@ -4685,6 +4749,14 @@ nomatch 32 {
action "kldload -n if_aue";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x2001";
match "product" "0x4a00";
action "kldload -n if_axge";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
@ -5229,6 +5301,36 @@ nomatch 32 {
action "kldload -n ng_ubt";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "intclass" "0xff";
match "intsubclass" "0x02";
match "intprotocol" "0x16";
action "kldload -n if_cdce";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "intclass" "0xff";
match "intsubclass" "0x02";
match "intprotocol" "0x46";
action "kldload -n if_cdce";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
match "vendor" "0x12d1";
match "intclass" "0xff";
match "intsubclass" "0x02";
match "intprotocol" "0x76";
action "kldload -n if_cdce";
};
nomatch 32 {
match "bus" "uhub[0-9]+";
match "mode" "host";
@ -5399,5 +5501,5 @@ nomatch 32 {
action "kldload -n umass";
};
# 2621 USB entries processed
# 2643 USB entries processed

View File

@ -68,6 +68,39 @@ list_vars()
done; }
}
# set_rcvar [var] [defval] [desc]
#
# Echo or define a rc.conf(5) variable name. Global variable
# $rcvars is used.
#
# If no argument is specified, echo "${name}_enable".
#
# If only a var is specified, echo "${var}_enable".
#
# If var and defval are specified, the ${var} is defined as
# rc.conf(5) variable and the default value is ${defvar}. An
# optional argument $desc can also be specified to add a
# description for that.
#
set_rcvar()
{
local _var
case $# in
0) echo ${name}_enable ;;
1) echo ${1}_enable ;;
*)
debug "set_rcvar: \$$1=$2 is added" \
" as a rc.conf(5) variable."
_var=$1
rcvars="${rcvars# } $_var"
eval ${_var}_defval=\"$2\"
shift 2
eval ${_var}_desc=\"$*\"
;;
esac
}
# set_rcvar_obsolete oldvar [newvar] [msg]
# Define obsolete variable.
# Global variable $rcvars_obsolete is used.
@ -76,7 +109,7 @@ set_rcvar_obsolete()
{
local _var
_var=$1
debug "rcvar_obsolete: \$$1(old) -> \$$2(new) is defined"
debug "set_rcvar_obsolete: \$$1(old) -> \$$2(new) is defined"
rcvars_obsolete="${rcvars_obsolete# } $1"
eval ${1}_newvar=\"$2\"
@ -1091,8 +1124,8 @@ $command $rc_flags $command_args"
echo ""
fi
echo "#"
# Get unique vars in $rcvar
for _v in $rcvar; do
# Get unique vars in $rcvar $rcvars
for _v in $rcvar $rcvars; do
case $v in
$_v\ *|\ *$_v|*\ $_v\ *) ;;
*) v="${v# } $_v" ;;
@ -1238,7 +1271,7 @@ run_rc_script()
unset name command command_args command_interpreter \
extra_commands pidfile procname \
rcvar rcvars_obsolete required_dirs required_files \
rcvar rcvars rcvars_obsolete required_dirs required_files \
required_vars
eval unset ${_arg}_cmd ${_arg}_precmd ${_arg}_postcmd
@ -1306,7 +1339,7 @@ load_rc_config()
done
# Set defaults if defined.
for _var in $rcvar; do
for _var in $rcvar $rcvars; do
eval _defval=\$${_var}_defval
if [ -n "$_defval" ]; then
eval : \${$_var:=\$${_var}_defval}

View File

@ -24,7 +24,7 @@ CFLAGS+= -I${GCCLIB}/include -I${GCCDIR}/config -I${GCCDIR} -I. \
CRTS_CFLAGS= -DCRTSTUFFS_O -DSHARED ${PICFLAG}
MKDEP= -DCRT_BEGIN
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
CFLAGS+= -DTARGET_ARM_EABI
.endif

View File

@ -15,7 +15,7 @@ MK_SSP= no
.include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt"
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
CFLAGS+= -DTARGET_ARM_EABI
.endif
@ -56,7 +56,7 @@ LIB2FUNCS+= _fixuns${mode}si
.endfor
# Likewise double-word routines.
.if ${TARGET_CPUARCH} != "arm" || ${MK_ARM_EABI} == "no"
.if ${TARGET_CPUARCH} != "arm"
# These are implemented in an ARM specific file but will not be filtered out
.for mode in sf df xf tf
LIB2FUNCS+= _fix${mode}di _fixuns${mode}di
@ -117,14 +117,10 @@ CFLAGS.clang+= -fheinous-gnu-extensions
LIB1ASMSRC = lib1funcs.asm
LIB1ASMFUNCS = _dvmd_tls _bb_init_func
.if ${MK_ARM_EABI} != "no"
LIB2ADDEH = unwind-arm.c libunwind.S pr-support.c unwind-c.c
# Some compilers generate __aeabi_ functions libgcc_s is missing
DPADD+= ${LIBCOMPILER_RT}
LDADD+= -lcompiler_rt
.else
LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
.endif
.endif
.if ${TARGET_CPUARCH} == mips
@ -319,7 +315,7 @@ CLEANFILES += cs-*.h option*
SHLIB_MKMAP = ${GCCDIR}/mkmap-symver.awk
SHLIB_MKMAP_OPTS =
SHLIB_MAPFILES = ${GCCDIR}/libgcc-std.ver
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
SHLIB_MAPFILES += ${GCCDIR}/config/arm/libgcc-bpabi.ver
.endif
VERSION_MAP = libgcc.map

View File

@ -17,7 +17,7 @@ CFLAGS+= -D_PTHREADS -DGTHREAD_USE_WEAK
CFLAGS+= -I${.CURDIR}/../../usr.bin/cc/cc_tools \
-I${GCCLIB}/include -I${GCCDIR}/config -I${GCCDIR} -I.
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
CFLAGS+= -DTARGET_ARM_EABI
.endif

View File

@ -16,9 +16,6 @@ LIB= stdc++
SHLIB_MAJOR= 6
CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} == "no"
CFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1
.endif
CFLAGS+= -I${.CURDIR} -I${SUPDIR} -I${GCCDIR} -I${SRCDIR}/include
CFLAGS+= -I${GCCLIB}/include -I${SRCDIR}/include -I.
CFLAGS+= -frandom-seed=RepeatabilityConsideredGood
@ -596,7 +593,7 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
CLEANFILES+= ${THRHDRS}
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${MACHINE_CPUARCH} == "arm"
unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
.else
unwind.h: ${GCCDIR}/unwind-generic.h

View File

@ -22,9 +22,6 @@ SRCS+= del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc eh_alloc.cc eh_arm.cc \
SRCS+= cp-demangle.c
CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} == "no"
CFLAGS+= -D_GLIBCXX_SJLJ_EXCEPTIONS=1
.endif
CFLAGS+= -I${GCCLIB}/include -I${SRCDIR} -I${GCCDIR}
CFLAGS+= -I${.CURDIR}/../libstdc++ -I.
CFLAGS+= -frandom-seed=RepeatabilityConsideredGood
@ -35,7 +32,7 @@ HDRS= exception new typeinfo cxxabi.h exception_defines.h
INCS= ${HDRS:S;^;${SRCDIR}/;}
INCSDIR=${INCLUDEDIR}/c++/${GCCVER}
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${MACHINE_CPUARCH} == "arm"
unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
.else
unwind.h: ${GCCDIR}/unwind-generic.h

View File

@ -27,7 +27,7 @@ CSTD?= gnu89
CFLAGS+= -DCROSS_DIRECTORY_STRUCTURE
.endif
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
CFLAGS+= -DTARGET_ARM_EABI
.endif

View File

@ -51,10 +51,8 @@ TARGET_INC+= ${GCC_CPU}/elf.h
.endif
.if ${TARGET_CPUARCH} == "arm"
TARGET_INC+= ${GCC_CPU}/aout.h
.if ${MK_ARM_EABI} != "no"
TARGET_INC+= ${GCC_CPU}/bpabi.h
.endif
.endif
.if ${TARGET_ARCH} == "powerpc64"
TARGET_INC+= ${GCC_CPU}/biarch64.h
TARGET_INC+= ${GCC_CPU}/default64.h
@ -352,7 +350,7 @@ gthr-default.h: ${GCCDIR}/gthr-posix.h
GENSRCS+= gthr-default.h
.if ${TARGET_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${TARGET_CPUARCH} == "arm"
unwind.h: ${GCCDIR}/config/arm/unwind-arm.h
.else
unwind.h: ${GCCDIR}/unwind-generic.h

View File

@ -22,11 +22,10 @@ CFLAGS+= -fno-strict-aliasing
TARGET_ARCH?= ${MACHINE_ARCH}
BUILD_ARCH?= ${MACHINE_ARCH}
.if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \
${MK_ARM_EABI} != "no"
TARGET_ABI= gnueabi
.elif ${TARGET_ARCH} == "armv6hf"
.if ${TARGET_ARCH:Marm*hf*} != ""
TARGET_ABI= gnueabihf
.elif ${TARGET_ARCH:Marm*} != ""
TARGET_ABI= gnueabi
.else
TARGET_ABI= unknown
.endif

View File

@ -9,14 +9,9 @@ SOFTFLOAT_BITS=32
MDSRCS+=machdep_ldisd.c
SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol.map
.if ${MK_ARM_EABI} == "no"
# This contains the symbols that were removed when moving to the ARM EABI
SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol_oabi.map
.else
.include "${LIBC_SRCTOP}/arm/aeabi/Makefile.inc"
.endif
.if ${MACHINE_ARCH} == "armv6hf"
.if ${MACHINE_ARCH:Marm*hf*} != ""
SYM_MAPS+=${LIBC_SRCTOP}/arm/Symbol_vfp.map
.endif

View File

@ -1,16 +0,0 @@
/*
* $FreeBSD$
*/
/*
* This only needs to contain symbols that are not listed in
* symbol maps from other parts of libc (i.e., not found in
* stdlib/Symbol.map, string/Symbol.map, sys/Symbol.map, ...)
* and are not used in the ARM EABI.
*/
FBSDprivate_1.0 {
__umodsi3;
__modsi3;
__udivsi3;
__divsi3;
};

View File

@ -5,7 +5,7 @@
SRCS+= aeabi_atexit.c \
aeabi_unwind_cpp.c \
aeabi_unwind_exidx.c
.if ${MACHINE_ARCH} != "armv6hf"
.if ${MACHINE_ARCH:Marm*hf*} == ""
SRCS+= aeabi_double.c \
aeabi_float.c
.endif

View File

@ -6,10 +6,6 @@ SRCS+= _ctx_start.S _setjmp.S _set_tp.c alloca.S fabs.c \
__aeabi_read_tp.S setjmp.S signalcontext.c sigsetjmp.S flt_rounds.c \
arm_initfini.c
.if ${MK_ARM_EABI} == "no"
SRCS+= divsi3.S
.endif
.if ${MACHINE_ARCH} == "armv6hf"
SRCS+= fpgetmask_vfp.c fpgetround_vfp.c fpgetsticky_vfp.c fpsetmask_vfp.c \
fpsetround_vfp.c fpsetsticky_vfp.c

View File

@ -41,5 +41,6 @@
* above branch.
*/
bl PIC_PLT(CNAME(abort)) /* abort */
END(_cts_start)
.section .note.GNU-stack,"",%progbits

View File

@ -58,6 +58,7 @@ ENTRY(_setjmp)
stmw %r9,20(%r3)
li %r3,0
blr
END(_setjmp)
ENTRY(_longjmp)
lmw %r9,20(%r3)
@ -68,5 +69,6 @@ ENTRY(_longjmp)
bnelr
li %r3,1
blr
END(_longjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -29,5 +29,6 @@ __FBSDID("$FreeBSD$");
ENTRY(__eabi)
blr
END(__eabi)
.section .note.GNU-stack,"",%progbits

View File

@ -33,5 +33,6 @@ __FBSDID("$FreeBSD$");
ENTRY(fabs)
fabs %f1,%f1
blr
END(fabs)
.section .note.GNU-stack,"",%progbits

View File

@ -68,6 +68,7 @@ ENTRY(setjmp)
stmw %r9,20(%r6)
li %r3,0 /* return (0) */
blr
END(setjmp)
WEAK_REFERENCE(CNAME(__longjmp), longjmp)
ENTRY(__longjmp)
@ -86,5 +87,6 @@ ENTRY(__longjmp)
bnelr
li %r3,1
blr
END(__longjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -73,6 +73,7 @@ ENTRY(sigsetjmp)
stmw %r9,20(%r6)
li %r3,0
blr
END(sigsetjmp)
ENTRY(siglongjmp)
lmw %r9,20(%r3)
@ -94,5 +95,6 @@ ENTRY(siglongjmp)
bnelr
li %r3,1
blr
END(siglongjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -71,5 +71,6 @@ ENTRY(brk)
1:
b PIC_PLT(HIDENAME(cerror))
END(brk)
.section .note.GNU-stack,"",%progbits

View File

@ -37,5 +37,6 @@ ENTRY(exect)
blr
1:
b PIC_PLT(HIDENAME(cerror))
END(exect)
.section .note.GNU-stack,"",%progbits

View File

@ -41,5 +41,6 @@ ENTRY(pipe)
blr /* and return 0 */
1:
b PIC_PLT(HIDENAME(cerror))
END(pipe)
.section .note.GNU-stack,"",%progbits

View File

@ -56,5 +56,6 @@ ENTRY(ptrace)
blr
1:
b PIC_PLT(HIDENAME(cerror))
END(ptrace)
.section .note.GNU-stack,"",%progbits

View File

@ -68,5 +68,6 @@ ENTRY(sbrk)
blr
2:
b PIC_PLT(HIDENAME(cerror))
END(sbrk)
.section .note.GNU-stack,"",%progbits

View File

@ -46,5 +46,6 @@
nop
bl CNAME(abort) /* abort */
nop
END(_ctx_start)
.section .note.GNU-stack,"",%progbits

View File

@ -80,6 +80,7 @@ ENTRY(_setjmp)
std %r31,40 + 22*8(%r3)
li %r3,0
blr
END(_setjmp)
ENTRY(_longjmp)
ld %r9,40 + 0*8(%r3)
@ -113,5 +114,6 @@ ENTRY(_longjmp)
bnelr
li %r3,1
blr
END(_longjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -33,5 +33,6 @@ __FBSDID("$FreeBSD$");
ENTRY(fabs)
fabs %f1,%f1
blr
END(fabs)
.section .note.GNU-stack,"",%progbits

View File

@ -92,6 +92,7 @@ ENTRY(setjmp)
li %r3,0 /* return (0) */
blr
END(setjmp)
WEAK_REFERENCE(__longjmp, longjmp)
ENTRY(__longjmp)
@ -132,5 +133,6 @@ ENTRY(__longjmp)
bnelr
li %r3,1
blr
END(__longjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -97,6 +97,7 @@ ENTRY(sigsetjmp)
li %r3,0
blr
END(sigsetjmp)
ENTRY(siglongjmp)
ld %r9,40 + 0*8(%r3)
@ -141,5 +142,6 @@ ENTRY(siglongjmp)
bnelr
li %r3,1
blr
END(siglongjmp)
.section .note.GNU-stack,"",%progbits

View File

@ -69,5 +69,6 @@ ENTRY(brk)
ld %r0,16(%r1)
mtlr %r0
blr
END(brk)
.section .note.GNU-stack,"",%progbits

View File

@ -45,5 +45,6 @@ ENTRY(exect)
ld %r0,16(%r1)
mtlr %r0
blr
END(exect)
.section .note.GNU-stack,"",%progbits

View File

@ -49,5 +49,6 @@ ENTRY(pipe)
ld %r0,16(%r1)
mtlr %r0
blr
END(pipe)
.section .note.GNU-stack,"",%progbits

View File

@ -63,5 +63,6 @@ ENTRY(ptrace)
ld %r0,16(%r1)
mtlr %r0
blr
END(ptrace)
.section .note.GNU-stack,"",%progbits

View File

@ -64,5 +64,6 @@ ENTRY(sbrk)
ld %r0,16(%r1)
mtlr %r0
blr
END(sbrk)
.section .note.GNU-stack,"",%progbits

View File

@ -8,7 +8,7 @@
SRCS+= cmpdi2.c divdi3.c moddi3.c qdivrem.c ucmpdi2.c udivdi3.c umoddi3.c
.elif ${LIBC_ARCH} == "arm" && ${MK_ARM_EABI} != "no"
.elif ${LIBC_ARCH} == "arm"
SRCS+= adddi3.c anddi3.c floatunsdidf.c iordi3.c lshldi3.c notdi2.c \
qdivrem.c subdi3.c xordi3.c

View File

@ -55,10 +55,32 @@ __FBSDID("$FreeBSD$");
#include "un-namespace.h"
#include "libc_private.h"
#include "timelocal.h"
#include "tzfile.h"
static char * _strptime(const char *, const char *, struct tm *, int *, locale_t);
#define asizeof(a) (sizeof (a) / sizeof ((a)[0]))
#define asizeof(a) (sizeof(a) / sizeof((a)[0]))
#define FLAG_NONE (1 << 0)
#define FLAG_YEAR (1 << 1)
#define FLAG_MONTH (1 << 2)
#define FLAG_YDAY (1 << 3)
#define FLAG_MDAY (1 << 4)
#define FLAG_WDAY (1 << 5)
/*
* Calculate the week day of the first day of a year. Valid for
* the Gregorian calendar, which began Sept 14, 1752 in the UK
* and its colonies. Ref:
* http://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week
*/
static int
first_wday_of(int year)
{
return (((2 * (3 - (year / 100) % 4)) + (year % 100) +
((year % 100) / 4) + (isleap(year) ? 6 : 0) + 1) % 7);
}
static char *
_strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
@ -66,9 +88,18 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
{
char c;
const char *ptr;
int day_offset = -1, wday_offset;
int week_offset;
int i, len;
int flags;
int Ealternative, Oalternative;
struct lc_time_T *tptr = __get_current_time_locale(locale);
const struct lc_time_T *tptr = __get_current_time_locale(locale);
static int start_of_month[2][13] = {
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365},
{0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366}
};
flags = FLAG_NONE;
ptr = fmt;
while (*ptr != 0) {
@ -102,6 +133,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
buf = _strptime(buf, tptr->date_fmt, tm, GMTp, locale);
if (buf == NULL)
return (NULL);
flags |= FLAG_WDAY | FLAG_MONTH | FLAG_MDAY | FLAG_YEAR;
break;
case 'C':
@ -119,19 +151,23 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
if (i < 19)
return (NULL);
tm->tm_year = i * 100 - 1900;
tm->tm_year = i * 100 - TM_YEAR_BASE;
flags |= FLAG_YEAR;
break;
case 'c':
buf = _strptime(buf, tptr->c_fmt, tm, GMTp, locale);
if (buf == NULL)
return (NULL);
flags |= FLAG_WDAY | FLAG_MONTH | FLAG_MDAY | FLAG_YEAR;
break;
case 'D':
buf = _strptime(buf, "%m/%d/%y", tm, GMTp, locale);
if (buf == NULL)
return (NULL);
flags |= FLAG_MONTH | FLAG_MDAY | FLAG_YEAR;
break;
case 'E':
@ -150,6 +186,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
buf = _strptime(buf, "%Y-%m-%d", tm, GMTp, locale);
if (buf == NULL)
return (NULL);
flags |= FLAG_MONTH | FLAG_MDAY | FLAG_YEAR;
break;
case 'R':
@ -180,6 +217,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
buf = _strptime(buf, tptr->x_fmt, tm, GMTp, locale);
if (buf == NULL)
return (NULL);
flags |= FLAG_MONTH | FLAG_MDAY | FLAG_YEAR;
break;
case 'j':
@ -197,6 +235,8 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
return (NULL);
tm->tm_yday = i - 1;
flags |= FLAG_YDAY;
break;
case 'M':
@ -302,8 +342,9 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
if (i == asizeof(tptr->weekday))
return (NULL);
tm->tm_wday = i;
buf += len;
tm->tm_wday = i;
flags |= FLAG_WDAY;
break;
case 'U':
@ -327,6 +368,14 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
if (i > 53)
return (NULL);
if (c == 'U')
day_offset = TM_SUNDAY;
else
day_offset = TM_MONDAY;
week_offset = i;
break;
case 'w':
@ -338,6 +387,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
return (NULL);
tm->tm_wday = i;
flags |= FLAG_WDAY;
break;
@ -374,6 +424,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
return (NULL);
tm->tm_mday = i;
flags |= FLAG_MDAY;
break;
@ -413,6 +464,8 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
tm->tm_mon = i;
buf += len;
flags |= FLAG_MONTH;
break;
case 'm':
@ -430,6 +483,7 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
return (NULL);
tm->tm_mon = i - 1;
flags |= FLAG_MONTH;
break;
@ -471,13 +525,14 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
len--;
}
if (c == 'Y')
i -= 1900;
i -= TM_YEAR_BASE;
if (c == 'y' && i < 69)
i += 100;
if (i < 0)
return (NULL);
tm->tm_year = i;
flags |= FLAG_YEAR;
break;
@ -543,10 +598,67 @@ _strptime(const char *buf, const char *fmt, struct tm *tm, int *GMTp,
break;
}
}
if (!(flags & FLAG_YDAY) && (flags & FLAG_YEAR)) {
if ((flags & (FLAG_MONTH | FLAG_MDAY)) ==
(FLAG_MONTH | FLAG_MDAY)) {
tm->tm_yday = start_of_month[isleap(tm->tm_year +
TM_YEAR_BASE)][tm->tm_mon] + (tm->tm_mday - 1);
flags |= FLAG_YDAY;
} else if (day_offset != -1) {
/* Set the date to the first Sunday (or Monday)
* of the specified week of the year.
*/
if (!(flags & FLAG_WDAY)) {
tm->tm_wday = day_offset;
flags |= FLAG_WDAY;
}
tm->tm_yday = (7 -
first_wday_of(tm->tm_year + TM_YEAR_BASE) +
day_offset) % 7 + (week_offset - 1) * 7 +
tm->tm_wday - day_offset;
flags |= FLAG_YDAY;
}
}
if ((flags & (FLAG_YEAR | FLAG_YDAY)) == (FLAG_YEAR | FLAG_YDAY)) {
if (!(flags & FLAG_MONTH)) {
i = 0;
while (tm->tm_yday >=
start_of_month[isleap(tm->tm_year +
TM_YEAR_BASE)][i])
i++;
if (i > 12) {
i = 1;
tm->tm_yday -=
start_of_month[isleap(tm->tm_year +
TM_YEAR_BASE)][12];
tm->tm_year++;
}
tm->tm_mon = i - 1;
flags |= FLAG_MONTH;
}
if (!(flags & FLAG_MDAY)) {
tm->tm_mday = tm->tm_yday -
start_of_month[isleap(tm->tm_year + TM_YEAR_BASE)]
[tm->tm_mon] + 1;
flags |= FLAG_MDAY;
}
if (!(flags & FLAG_WDAY)) {
i = 0;
wday_offset = first_wday_of(tm->tm_year);
while (i++ <= tm->tm_yday) {
if (wday_offset++ >= 6)
wday_offset = 0;
}
tm->tm_wday = wday_offset;
flags |= FLAG_WDAY;
}
}
return ((char *)buf);
}
char *
strptime_l(const char * __restrict buf, const char * __restrict fmt,
struct tm * __restrict tm, locale_t loc)
@ -564,6 +676,7 @@ strptime_l(const char * __restrict buf, const char * __restrict fmt,
return (ret);
}
char *
strptime(const char * __restrict buf, const char * __restrict fmt,
struct tm * __restrict tm)

View File

@ -28,7 +28,7 @@
.\" @(#)connect.2 8.1 (Berkeley) 6/4/93
.\" $FreeBSD$
.\"
.Dd June 26, 2014
.Dd September 29, 2014
.Dt CONNECT 2
.Os
.Sh NAME
@ -160,6 +160,8 @@ Search permission is denied for a component of the path prefix.
Write access to the named socket is denied.
.It Bq Er ELOOP
Too many symbolic links were encountered in translating the pathname.
.It Bq Er EPERM
Write access to the named socket is denied.
.El
.Sh SEE ALSO
.Xr accept 2 ,

View File

@ -144,8 +144,7 @@ SRCF+= adddf3 \
truncdfsf2
.endif
.if ${MACHINE_CPUARCH} != "mips" && \
(${MACHINE_CPUARCH} != "arm" || ${MK_ARM_EABI} != "no")
.if ${MACHINE_CPUARCH} != "mips"
SRCF+= divsi3 \
modsi3 \
udivsi3 \
@ -165,16 +164,16 @@ SRCF+= stdatomic
.endif
.for file in ${SRCF}
. if ${MACHINE_ARCH} == "armv6hf" && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
. if ${MACHINE_ARCH:Marm*hf*} != "" && exists(${CRTSRC}/${CRTARCH}/${file}vfp.S)
SRCS+= ${file}vfp.S
. elif (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH} == "armv6hf") && exists(${CRTSRC}/${CRTARCH}/${file}.S)
. elif !(${MACHINE_CPUARCH} == "arm" && ${MACHINE_ARCH:Marm*hf*} == "") && exists(${CRTSRC}/${CRTARCH}/${file}.S)
SRCS+= ${file}.S
. else
SRCS+= ${file}.c
. endif
.endfor
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${MACHINE_CPUARCH} == "arm"
SRCS+= aeabi_idivmod.S \
aeabi_ldivmod.S \
aeabi_memcmp.S \

View File

@ -85,17 +85,21 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags __unused,
if (login_access(user, rhost) != 0)
return (PAM_SUCCESS);
PAM_VERBOSE_ERROR("%s is not allowed to log in from %s",
user, rhost);
(const char *)user, (const char *)rhost);
} else if (tty != NULL && *(const char *)tty != '\0') {
PAM_LOG("Checking login.access for user %s on tty %s",
(const char *)user, (const char *)tty);
if (login_access(user, tty) != 0)
return (PAM_SUCCESS);
PAM_VERBOSE_ERROR("%s is not allowed to log in on %s",
user, tty);
(const char *)user, (const char *)tty);
} else {
PAM_VERBOSE_ERROR("PAM_RHOST or PAM_TTY required");
return (PAM_AUTHINFO_UNAVAIL);
PAM_LOG("Checking login.access for user %s",
(const char *)user);
if (login_access(user, "***unknown***") != 0)
return (PAM_SUCCESS);
PAM_VERBOSE_ERROR("%s is not allowed to log in",
(const char *)user);
}
return (PAM_AUTH_ERR);

View File

@ -64,9 +64,6 @@ SRCS+= bcmp.c bcopy.c bzero.c ffs.c memccpy.c memchr.c memcmp.c memcpy.c \
.if ${MACHINE_CPUARCH} == "arm"
.PATH: ${.CURDIR}/../libc/arm/gen
.if ${MK_ARM_EABI} == "no"
SRCS+= divsi3.S
.else
# Compiler support functions
.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib/
# __clzsi2 and ctzsi2 for various builtin functions
@ -78,7 +75,6 @@ SRCS+= udivmoddi4.c udivmodsi4.c udivdi3.c udivsi3.c umoddi3.c umodsi3.c
.PATH: ${.CURDIR}/../../contrib/compiler-rt/lib/arm/
SRCS+= aeabi_idivmod.S aeabi_ldivmod.S aeabi_uidivmod.S aeabi_uldivmod.S
SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
.endif
.endif
.if ${MACHINE_CPUARCH} == "powerpc"

View File

@ -46,7 +46,7 @@ LDFLAGS+= -shared -Wl,-Bsymbolic
DPADD= ${LIBC_PIC}
LDADD= -lc_pic
.if ${MACHINE_CPUARCH} == "arm" && ${MK_ARM_EABI} != "no"
.if ${MACHINE_CPUARCH} == "arm"
# Some of the required math functions (div & mod) are implemented in
# libcompiler_rt on ARM. The library also needs to be placed first to be
# correctly linked. As some of the functions are used before we have

View File

@ -137,7 +137,6 @@ CRUNCH_ALIAS_bsdlabel= disklabel
.endif
.if ${MACHINE} == "pc98"
CRUNCH_PROGS_sbin+= bsdlabel
CRUNCH_SRCDIR_fdisk= $(.CURDIR)/../../sbin/fdisk_pc98
.endif

View File

@ -7,7 +7,7 @@ MAN= fdisk.8
.PATH: ${.CURDIR}/../../sys/geom
DPADD += ${LIBGEOM}
LDADD += -lgeom
DPADD+= ${LIBGEOM} ${LIBBSDXML} ${LIBSBUF}
LDADD+= -lgeom -lbsdxml -lsbuf
.include <bsd.prog.mk>

View File

@ -28,7 +28,7 @@
.\" From: @(#)ifconfig.8 8.3 (Berkeley) 1/5/94
.\" $FreeBSD$
.\"
.Dd September 9, 2014
.Dd October 1, 2014
.Dt IFCONFIG 8
.Os
.Sh NAME
@ -2331,9 +2331,16 @@ Remove the interface named by
from the aggregation interface.
.It Cm laggproto Ar proto
Set the aggregation protocol.
The default is failover.
The available options are failover, lacp, loadbalance, roundrobin, broadcast
and none.
The default is
.Li failover .
The available options are
.Li failover ,
.Li lacp ,
.Li loadbalance ,
.Li roundrobin ,
.Li broadcast
and
.Li none .
.It Cm lagghash Ar option Ns Oo , Ns Ar option Oc
Set the packet layers to hash for aggregation protocols which load balance.
The default is
@ -2348,6 +2355,34 @@ src/dst address for IPv4 or IPv6.
.It Cm l4
src/dst port for TCP/UDP/SCTP.
.El
.It Cm use_flowid
Enable local hash computation for RSS hash on the interface.
The
.Li loadbalance
and
.Li lacp
modes will use the RSS hash from the network card if available
to avoid computing one, this may give poor traffic distribution
if the hash is invalid or uses less of the protocol header information.
.Cm use_flowid
disables use of RSS hash from the network card.
The default value can be set via the
.Va net.link.lagg.default_use_flowid
.Xr sysctl 8
variable.
.Li 0
means
.Dq disabled
and
.Li 1
means
.Dq enabled .
.It Cm -use_flowid
Disable local hash computation for RSS hash on the interface.
.It Cm flowid_shift Ar number
Set a shift parameter for RSS local hash computation.
Hash is calculated by using flowid bits in a packet header mbuf
which are shifted by the number of this parameter.
.El
.Pp
The following parameters are specific to IP tunnel interfaces,

View File

@ -903,7 +903,7 @@ unsetifdescr(const char *val, int value, int s, const struct afswtch *afp)
"\020\1RXCSUM\2TXCSUM\3NETCONS\4VLAN_MTU\5VLAN_HWTAGGING\6JUMBO_MTU\7POLLING" \
"\10VLAN_HWCSUM\11TSO4\12TSO6\13LRO\14WOL_UCAST\15WOL_MCAST\16WOL_MAGIC" \
"\17TOE4\20TOE6\21VLAN_HWFILTER\23VLAN_HWTSO\24LINKSTATE\25NETMAP" \
"\26RXCSUM_IPV6\27TXCSUM_IPV6"
"\26RXCSUM_IPV6\27TXCSUM_IPV6\30HWSTATS"
/*
* Print the status of the interface. If an address family was

View File

@ -68,7 +68,7 @@ setlaggproto(const char *val, int d, int s, const struct afswtch *afp)
bzero(&ra, sizeof(ra));
ra.ra_proto = LAGG_PROTO_MAX;
for (i = 0; i < (sizeof(lpr) / sizeof(lpr[0])); i++) {
for (i = 0; i < nitems(lpr); i++) {
if (strcmp(val, lpr[i].lpr_name) == 0) {
ra.ra_proto = lpr[i].lpr_proto;
break;
@ -82,6 +82,48 @@ setlaggproto(const char *val, int d, int s, const struct afswtch *afp)
err(1, "SIOCSLAGG");
}
static void
setlaggflowidshift(const char *val, int d, int s, const struct afswtch *afp)
{
struct lagg_reqall ra;
bzero(&ra, sizeof(ra));
ra.ra_opts = LAGG_OPT_FLOWIDSHIFT;
strlcpy(ra.ra_ifname, name, sizeof(ra.ra_ifname));
ra.ra_flowid_shift = (int)strtol(val, NULL, 10);
if (ra.ra_flowid_shift & ~LAGG_OPT_FLOWIDSHIFT_MASK)
errx(1, "Invalid flowid_shift option: %s", val);
if (ioctl(s, SIOCSLAGG, &ra) != 0)
err(1, "SIOCSLAGG");
}
static void
setlaggsetopt(const char *val, int d, int s, const struct afswtch *afp)
{
struct lagg_reqall ra;
bzero(&ra, sizeof(ra));
ra.ra_opts = d;
switch (ra.ra_opts) {
case LAGG_OPT_USE_FLOWID:
case -LAGG_OPT_USE_FLOWID:
case LAGG_OPT_LACP_STRICT:
case -LAGG_OPT_LACP_STRICT:
case LAGG_OPT_LACP_TXTEST:
case -LAGG_OPT_LACP_TXTEST:
case LAGG_OPT_LACP_RXTEST:
case -LAGG_OPT_LACP_RXTEST:
break;
default:
err(1, "Invalid lagg option");
}
strlcpy(ra.ra_ifname, name, sizeof(ra.ra_ifname));
if (ioctl(s, SIOCSLAGG, &ra) != 0)
err(1, "SIOCSLAGG");
}
static void
setlagghash(const char *val, int d, int s, const struct afswtch *afp)
{
@ -169,7 +211,7 @@ lagg_status(int s)
if (ioctl(s, SIOCGLAGG, &ra) == 0) {
lp = (struct lacp_opreq *)&ra.ra_lacpreq;
for (i = 0; i < (sizeof(lpr) / sizeof(lpr[0])); i++) {
for (i = 0; i < nitems(lpr); i++) {
if (ra.ra_proto == lpr[i].lpr_proto) {
proto = lpr[i].lpr_name;
break;
@ -197,9 +239,28 @@ lagg_status(int s)
if (isport)
printf(" laggdev %s", rp.rp_ifname);
putchar('\n');
if (verbose && ra.ra_proto == LAGG_PROTO_LACP)
printf("\tlag id: %s\n",
lacp_format_peer(lp, "\n\t\t "));
if (verbose) {
printf("\tlagg options:\n");
printf("\t\tuse_flowid: %d\n",
(ra.ra_opts & LAGG_OPT_USE_FLOWID) ? 1 : 0);
printf("\t\tflowid_shift: %d\n", ra.ra_flowid_shift);
switch (ra.ra_proto) {
case LAGG_PROTO_LACP:
printf("\t\tlacp_strict: %d\n",
(ra.ra_opts & LAGG_OPT_LACP_STRICT) ? 1 : 0);
printf("\t\tlacp_rxtest: %d\n",
(ra.ra_opts & LAGG_OPT_LACP_RXTEST) ? 1 : 0);
printf("\t\tlacp_txtest: %d\n",
(ra.ra_opts & LAGG_OPT_LACP_TXTEST) ? 1 : 0);
}
printf("\tlagg statistics:\n");
printf("\t\tactive ports: %d\n", ra.ra_active);
printf("\t\tflapping: %u\n", ra.ra_flapping);
if (ra.ra_proto == LAGG_PROTO_LACP) {
printf("\tlag id: %s\n",
lacp_format_peer(lp, "\n\t\t "));
}
}
for (i = 0; i < ra.ra_ports; i++) {
lp = (struct lacp_opreq *)&rpbuf[i].rp_lacpreq;
@ -226,6 +287,15 @@ static struct cmd lagg_cmds[] = {
DEF_CMD_ARG("-laggport", unsetlaggport),
DEF_CMD_ARG("laggproto", setlaggproto),
DEF_CMD_ARG("lagghash", setlagghash),
DEF_CMD("use_flowid", LAGG_OPT_USE_FLOWID, setlaggsetopt),
DEF_CMD("-use_flowid", -LAGG_OPT_USE_FLOWID, setlaggsetopt),
DEF_CMD("lacp_strict", LAGG_OPT_LACP_STRICT, setlaggsetopt),
DEF_CMD("-lacp_strict", -LAGG_OPT_LACP_STRICT, setlaggsetopt),
DEF_CMD("lacp_txtest", LAGG_OPT_LACP_TXTEST, setlaggsetopt),
DEF_CMD("-lacp_txtest", -LAGG_OPT_LACP_TXTEST, setlaggsetopt),
DEF_CMD("lacp_rxtest", LAGG_OPT_LACP_RXTEST, setlaggsetopt),
DEF_CMD("-lacp_rxtest", -LAGG_OPT_LACP_RXTEST, setlaggsetopt),
DEF_CMD_ARG("flowid_shift", setlaggflowidshift),
};
static struct afswtch af_lagg = {
.af_name = "af_lagg",

View File

@ -28,7 +28,7 @@
.\" @(#)icmp.4 8.1 (Berkeley) 6/5/93
.\" $FreeBSD$
.\"
.Dd February 9, 2007
.Dd September 30, 2014
.Dt ICMP 4
.Os
.Sh NAME
@ -216,6 +216,10 @@ instead of the possibly different return path.
Number of bytes from original packet to quote in ICMP reply.
This number is internally enforced to be at least 8 bytes (per RFC792)
and at most the maximal space left in the ICMP reply mbuf.
.It Va tstamprepl
.Pq Vt boolean
Enable/disable replies to ICMP Timestamp packets.
Defaults to true.
.El
.Sh ERRORS
A socket operation may fail with one of the following errors returned:

View File

@ -27,12 +27,12 @@
.\"
.\" $FreeBSD$
.\"
.Dd September 25, 2014
.Dd September 30, 2014
.Dt IPHETH 4
.Os
.Sh NAME
.Nm ipheth
.Nd "USB Apple iPhone/iPad Ethernet driver"
.Nd "USB Apple iPhone/iPad tethered Ethernet driver"
.Sh SYNOPSIS
To load the driver as a module at boot time, place the
following line in
@ -61,6 +61,7 @@ In most cases this must be explicitly enabled on the device first.
.Pp
For more information on configuring this device, see
.Xr ifconfig 8 .
The device does not support different media types or options.
.Sh HARDWARE
The following devices are supported by the
.Nm
@ -68,9 +69,9 @@ driver:
.Pp
.Bl -bullet -compact
.It
Apple iPhone (all models)
Apple iPhone tethering (all models)
.It
Apple iPad (all models)
Apple iPad tethering (all models)
.El
.Sh SEE ALSO
.Xr arp 4 ,
@ -80,6 +81,7 @@ Apple iPad (all models)
.Xr urndis 4 ,
.Xr usb 4 ,
.Xr ifconfig 8
.Xr usbconfig 8
.Sh HISTORY
The
.Nm
@ -91,3 +93,14 @@ The
.Nm
driver was written by
.An Hans Petter Selasky Aq Mt hselasky@FreeBSD.org .
.Sh BUGS
Some devices may need to be manually configured to use an alternative
configuration with the
.Xr usbconfig 8
utility.
A command similar to
.Dl usbconfig -u 1 -a 2 set_config 3
may be required if the device is not recognised automatically by
.Nm
after it is connected.

View File

@ -16,7 +16,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd February 23, 2012
.Dd October 1, 2014
.Dt LAGG 4
.Os
.Sh NAME
@ -143,9 +143,9 @@ modes will use the RSS hash from the network card if available to avoid
computing one, this may give poor traffic distribution if the hash is invalid
or uses less of the protocol header information.
Local hash computation can be forced per interface by setting the
.Va net.link.lagg.X.use_flowid
.Xr sysctl 8
variable to zero where X is the interface number.
.Cm use_flowid
.Xr ifconfig 8
flag.
The default for new interfaces is set via the
.Va net.link.lagg.default_use_flowid
.Xr sysctl 8 .

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd February 8, 2012
.Dd September 30, 2014
.Dt SFXGE 4
.Os
.Sh NAME
@ -76,6 +76,39 @@ The
.Nm
driver supports all 10Gb Ethernet adapters based on Solarflare SFC9000
family controllers.
.Sh LOADER TUNABLES
Tunables can be set at the
.Xr loader 8
prompt before booting the kernel or stored in
.Xr loader.conf 5 .
Actual values can be obtained using
.Xr sysctl 8 .
.Bl -tag -width indent
.It Va hw.sfxge.rx_ring
The maximum number of descriptors in a receive queue ring.
Supported values are: 512, 1024, 2048 and 4096.
.It Va hw.sfxge.tx_ring
The maximum number of descriptors in a transmit queue ring.
Supported values are: 512, 1024, 2048 and 4096.
.It Va hw.sfxge.tx_dpl_get_max
The maximum length of the deferred packet
.Dq get-list
for queued transmit
packets, used only if the transmit queue lock can be acquired.
If a packet is dropped, the
.Va tx_early_drops
counter is incremented and the local sender receives ENOBUFS.
The value must be greater than 0.
.It Va hw.sfxge.tx_dpl_put_max
The maximum length of the deferred packet
.Dq put-list
for queued transmit
packets, used if the transmit queue lock cannot be acquired.
If a packet is dropped, the
.Va tx_early_drops
counter is incremented and the local sender receives ENOBUFS.
The value must be greater than or equal to 0.
.El
.Sh SUPPORT
For general information and support,
go to the Solarflare support website at:

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd April 7, 2014
.Dd October 1, 2014
.Dt UDPLITE 4
.Os
.Sh NAME
@ -55,16 +55,16 @@ and tested with
.Bl -tag -width ".Dv UDPLITE_SEND_CSCOV"
.It Dv UDPLITE_SEND_CSCOV
This option sets the sender checksum coverage.
A value of zero indicates that the entire packet
is covered by the checksum.
A value of 1 to 7 must be discarded by the receiver.
A value of zero indicates that all sent packets will have
full checksum coverage.
A value of 8 to 65535 limits the checksum coverage of all sent packets
to the value given.
.It Dv UDPLITE_RECV_CSCOV
This option is the receiver-side analogue.
It is truly optional, i.e. not required to enable traffic
with partial checksum coverage.
Its function is that of a traffic filter:
when enabled, it instructs the kernel to drop
all packets which have a coverage less than this value.
A value of zero instructs the kernel to drop all received packets
not having full checksum coverage.
A value of 8 to 65535 instructs the kernel to drop all received
packets with a partial checksum coverage smaller than the value specified.
.El
.Sh ERRORS
A socket operation may fail with one of the following errors returned:

View File

@ -19,7 +19,7 @@
.Os
.Sh NAME
.Nm urtwn
.Nd Realtek RTL8188CU/RTL8188EU/RTL8192CU USB IEEE 802.11b/g/n wireless network device
.Nd Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU USB IEEE 802.11b/g/n wireless network device
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following lines in your
@ -82,10 +82,11 @@ firmware license
.Sh HARDWARE
The
.Nm
driver supports Realtek RTL8188CU/RTL8188EU/RTL8192CU based USB
driver supports Realtek RTL8188CU/RTL8188RU/RTL8188EU/RTL8192CU based USB
IEEE 802.11b/g/n wireless network adapters, including:
.Pp
.Bl -tag -width Ds -offset indent -compact
.It Alfa AWUS036NHR v2
.It ASUS USB-N10 NANO
.It Belkin F7D1102 Surf Wireless Micro
.It D-Link DWA-125 rev D1

View File

@ -123,8 +123,8 @@ ${_YC:R}.o: ${_YC}
# DTrace probe definitions
# libelf is currently needed for drti.o
.if ${SRCS:M*.d}
LDFLAGS+= -lelf
LDADD+= ${LIBELF}
LDADD+= -lelf
DPADD+= ${LIBELF}
CFLAGS+= -I${.OBJDIR}
.endif
.for _DSRC in ${SRCS:M*.d:N*/*}

View File

@ -2,16 +2,13 @@
.if ${MACHINE_ARCH} == "amd64" || \
${MACHINE_ARCH} == "i386" || \
${MACHINE_ARCH} == "arm" || \
${MACHINE_ARCH} == "armv6" || \
${MACHINE_ARCH} == "armv6hf" || \
(${MACHINE} == "arm" && ${MACHINE_ARCH:Marm*eb*} == "") || \
${MACHINE_ARCH:Mmips*el} != ""
TARGET_ENDIANNESS= 1234
.elif ${MACHINE_ARCH} == "powerpc" || \
${MACHINE_ARCH} == "powerpc64" || \
${MACHINE_ARCH} == "sparc64" || \
${MACHINE_ARCH} == "armeb" || \
${MACHINE_ARCH} == "armv6eb" || \
(${MACHINE} == "arm" && ${MACHINE_ARCH:Marm*eb*} != "") || \
${MACHINE_ARCH:Mmips*} != ""
TARGET_ENDIANNESS= 4321
.endif

View File

@ -1,6 +1,18 @@
# $FreeBSD$
PORTSDIR?= /usr/ports
.if !defined(PORTSDIR)
# Autodetect if the command is being run in a ports tree that's not rooted
# in the default /usr/ports. The ../../.. case is in case ports ever grows
# a third level.
.for RELPATH in . .. ../.. ../../..
.if !defined(_PORTSDIR) && exists(${.CURDIR}/${RELPATH}/Mk/bsd.port.mk)
_PORTSDIR= ${.CURDIR}/${RELPATH}
.endif
.endfor
_PORTSDIR?= /usr/ports
PORTSDIR!= realpath ${_PORTSDIR}
.endif
BSDPORTMK?= ${PORTSDIR}/Mk/bsd.port.mk
# Needed to keep bsd.own.mk from reading in /etc/src.conf

View File

@ -1,6 +1,18 @@
# $FreeBSD$
PORTSDIR?= /usr/ports
.if !defined(PORTSDIR)
# Autodetect if the command is being run in a ports tree that's not rooted
# in the default /usr/ports. The ../../.. case is in case ports ever grows
# a third level.
.for RELPATH in . .. ../.. ../../..
.if !defined(_PORTSDIR) && exists(${.CURDIR}/${RELPATH}/Mk/bsd.port.mk)
_PORTSDIR= ${.CURDIR}/${RELPATH}
.endif
.endfor
_PORTSDIR?= /usr/ports
PORTSDIR!= realpath ${_PORTSDIR}
.endif
BSDPORTSUBDIRMK?= ${PORTSDIR}/Mk/bsd.port.subdir.mk
.include "${BSDPORTSUBDIRMK}"

View File

@ -48,7 +48,6 @@ __DEFAULT_YES_OPTIONS = \
ACPI \
AMD \
APM \
ARM_EABI \
AT \
ATM \
AUDIT \
@ -194,7 +193,7 @@ __TT=${MACHINE}
# Clang is only for x86, powerpc and little-endian arm right now, by default.
.if ${__T} == "amd64" || ${__T} == "i386" || ${__T:Mpowerpc*}
__DEFAULT_YES_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP
.elif ${__T} == "arm" || ${__T} == "armv6" || ${__T} == "armv6hf"
.elif ${__TT} == "arm" && ${__T:Marm*eb*} == ""
__DEFAULT_YES_OPTIONS+=CLANG CLANG_BOOTSTRAP
# GCC is unable to build the full clang on arm, disable it by default.
__DEFAULT_NO_OPTIONS+=CLANG_FULL
@ -202,8 +201,8 @@ __DEFAULT_NO_OPTIONS+=CLANG_FULL
__DEFAULT_NO_OPTIONS+=CLANG CLANG_FULL CLANG_BOOTSTRAP
.endif
# Clang the default system compiler only on little-endian arm and x86.
.if ${__T} == "amd64" || ${__T} == "arm" || ${__T} == "armv6" || \
${__T} == "armv6hf" || ${__T} == "i386"
.if ${__T} == "amd64" || (${__TT} == "arm" && ${__T:Marm*eb*} == "") || \
${__T} == "i386"
__DEFAULT_YES_OPTIONS+=CLANG_IS_CC
__DEFAULT_NO_OPTIONS+=GCC GCC_BOOTSTRAP GNUCXX
.else

View File

@ -177,6 +177,7 @@ struct init_ops init_ops = {
.mp_bootaddress = mp_bootaddress,
.start_all_aps = native_start_all_aps,
#endif
.msi_init = msi_init,
};
/*

View File

@ -94,23 +94,18 @@ __FBSDID("$FreeBSD$");
#define PROCBASED_CTLS2_ONE_SETTING PROCBASED2_ENABLE_EPT
#define PROCBASED_CTLS2_ZERO_SETTING 0
#define VM_EXIT_CTLS_ONE_SETTING_NO_PAT \
#define VM_EXIT_CTLS_ONE_SETTING \
(VM_EXIT_HOST_LMA | \
VM_EXIT_SAVE_EFER | \
VM_EXIT_LOAD_EFER)
#define VM_EXIT_CTLS_ONE_SETTING \
(VM_EXIT_CTLS_ONE_SETTING_NO_PAT | \
VM_EXIT_LOAD_EFER | \
VM_EXIT_ACKNOWLEDGE_INTERRUPT | \
VM_EXIT_SAVE_PAT | \
VM_EXIT_LOAD_PAT)
#define VM_EXIT_CTLS_ZERO_SETTING VM_EXIT_SAVE_DEBUG_CONTROLS
#define VM_ENTRY_CTLS_ONE_SETTING_NO_PAT VM_ENTRY_LOAD_EFER
#define VM_ENTRY_CTLS_ONE_SETTING (VM_ENTRY_LOAD_EFER | VM_ENTRY_LOAD_PAT)
#define VM_ENTRY_CTLS_ONE_SETTING \
(VM_ENTRY_CTLS_ONE_SETTING_NO_PAT | \
VM_ENTRY_LOAD_PAT)
#define VM_ENTRY_CTLS_ZERO_SETTING \
(VM_ENTRY_LOAD_DEBUG_CONTROLS | \
VM_ENTRY_INTO_SMM | \
@ -152,10 +147,6 @@ SYSCTL_INT(_hw_vmm_vmx, OID_AUTO, initialized, CTLFLAG_RD,
*/
static SYSCTL_NODE(_hw_vmm_vmx, OID_AUTO, cap, CTLFLAG_RW, NULL, NULL);
static int vmx_patmsr;
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, patmsr, CTLFLAG_RD, &vmx_patmsr, 0,
"PAT MSR saved and restored in VCMS");
static int cap_halt_exit;
SYSCTL_INT(_hw_vmm_vmx_cap, OID_AUTO, halt_exit, CTLFLAG_RD, &cap_halt_exit, 0,
"HLT triggers a VM-exit");
@ -615,48 +606,24 @@ vmx_init(int ipinum)
}
/* Check support for VM-exit controls */
vmx_patmsr = 1;
error = vmx_set_ctlreg(MSR_VMX_EXIT_CTLS, MSR_VMX_TRUE_EXIT_CTLS,
VM_EXIT_CTLS_ONE_SETTING,
VM_EXIT_CTLS_ZERO_SETTING,
&exit_ctls);
if (error) {
/* Try again without the PAT MSR bits */
error = vmx_set_ctlreg(MSR_VMX_EXIT_CTLS,
MSR_VMX_TRUE_EXIT_CTLS,
VM_EXIT_CTLS_ONE_SETTING_NO_PAT,
VM_EXIT_CTLS_ZERO_SETTING,
&exit_ctls);
if (error) {
printf("vmx_init: processor does not support desired "
"exit controls\n");
return (error);
} else {
if (bootverbose)
printf("vmm: PAT MSR access not supported\n");
vmx_patmsr = 0;
}
printf("vmx_init: processor does not support desired "
"exit controls\n");
return (error);
}
/* Check support for VM-entry controls */
if (vmx_patmsr) {
error = vmx_set_ctlreg(MSR_VMX_ENTRY_CTLS,
MSR_VMX_TRUE_ENTRY_CTLS,
VM_ENTRY_CTLS_ONE_SETTING,
VM_ENTRY_CTLS_ZERO_SETTING,
&entry_ctls);
} else {
error = vmx_set_ctlreg(MSR_VMX_ENTRY_CTLS,
MSR_VMX_TRUE_ENTRY_CTLS,
VM_ENTRY_CTLS_ONE_SETTING_NO_PAT,
VM_ENTRY_CTLS_ZERO_SETTING,
&entry_ctls);
}
error = vmx_set_ctlreg(MSR_VMX_ENTRY_CTLS, MSR_VMX_TRUE_ENTRY_CTLS,
VM_ENTRY_CTLS_ONE_SETTING, VM_ENTRY_CTLS_ZERO_SETTING,
&entry_ctls);
if (error) {
printf("vmx_init: processor does not support desired "
"entry controls\n");
return (error);
"entry controls\n");
return (error);
}
/*
@ -889,6 +856,10 @@ vmx_vminit(struct vm *vm, pmap_t pmap)
* VM exit and entry respectively. It is also restored from the
* host VMCS area on a VM exit.
*
* MSR_PAT is saved and restored in the guest VMCS are on a VM exit
* and entry respectively. It is also restored from the host VMCS
* area on a VM exit.
*
* The TSC MSR is exposed read-only. Writes are disallowed as that
* will impact the host TSC.
* XXX Writes would be implemented with a wrmsr trap, and
@ -900,19 +871,10 @@ vmx_vminit(struct vm *vm, pmap_t pmap)
guest_msr_rw(vmx, MSR_SYSENTER_ESP_MSR) ||
guest_msr_rw(vmx, MSR_SYSENTER_EIP_MSR) ||
guest_msr_rw(vmx, MSR_EFER) ||
guest_msr_rw(vmx, MSR_PAT) ||
guest_msr_ro(vmx, MSR_TSC))
panic("vmx_vminit: error setting guest msr access");
/*
* MSR_PAT is saved and restored in the guest VMCS are on a VM exit
* and entry respectively. It is also restored from the host VMCS
* area on a VM exit. However, if running on a system with no
* MSR_PAT save/restore support, leave access disabled so accesses
* will be trapped.
*/
if (vmx_patmsr && guest_msr_rw(vmx, MSR_PAT))
panic("vmx_vminit: error setting guest pat msr access");
vpid_alloc(vpid, VM_MAXCPU);
if (virtual_interrupt_delivery) {

View File

@ -72,7 +72,7 @@ __FBSDID("$FreeBSD$");
#define TIMER_ENABLE (1<<0)
#define TIMER_AUTORELOAD (1<<1)
#define TIMER_OSC24M (1<<2) /* oscillator = 24mhz */
#define TIMER_PRESCALAR (4<<4) /* prescalar = 16 */
#define TIMER_PRESCALAR (0<<4) /* prescalar = 1 */
#define SYS_TIMER_CLKSRC 24000000 /* clock source */

View File

@ -168,6 +168,12 @@ regions_to_avail(vm_paddr_t *avail, uint32_t exflags)
end = hwp->size + start;
realmem += arm32_btop(end - start);
for (exi = 0, exp = exregions; exi < excnt; ++exi, ++exp) {
/*
* If the excluded region does not match given flags,
* continue checking with the next excluded region.
*/
if ((exp->flags & exflags) == 0)
continue;
xstart = exp->addr;
xend = exp->size + xstart;
/*

196
sys/arm/arm/syscall.c Normal file
View File

@ -0,0 +1,196 @@
/* $NetBSD: fault.c,v 1.45 2003/11/20 14:44:36 scw Exp $ */
/*-
* Copyright 2004 Olivier Houchard
* Copyright 2003 Wasabi Systems, Inc.
* All rights reserved.
*
* Written by Steve C. Woodford for Wasabi Systems, Inc.
*
* 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed for the NetBSD Project by
* Wasabi Systems, Inc.
* 4. The name of Wasabi Systems, Inc. may not be used to endorse
* or promote products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
* 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.
*/
/*-
* Copyright (c) 1994-1997 Mark Brinicombe.
* Copyright (c) 1994 Brini.
* All rights reserved.
*
* This code is derived from software written for Brini by Mark Brinicombe
*
* 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Brini.
* 4. The name of the company nor the name of the author may be used to
* endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY BRINI ``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 BRINI 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.
*
* RiscBSD kernel project
*
* fault.c
*
* Fault handlers
*
* Created : 28/11/94
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/syscall.h>
#include <sys/sysent.h>
#include <sys/signalvar.h>
#include <sys/ptrace.h>
#include <sys/pioctl.h>
#include <machine/frame.h>
void swi_handler(struct trapframe *);
static __inline void
call_trapsignal(struct thread *td, int sig, u_long code)
{
ksiginfo_t ksi;
ksiginfo_init_trap(&ksi);
ksi.ksi_signo = sig;
ksi.ksi_code = (int)code;
trapsignal(td, &ksi);
}
int
cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
{
struct proc *p;
register_t *ap;
int error;
sa->code = td->td_frame->tf_r7;
ap = &td->td_frame->tf_r0;
if (sa->code == SYS_syscall) {
sa->code = *ap++;
sa->nap--;
} else if (sa->code == SYS___syscall) {
sa->code = ap[_QUAD_LOWWORD];
sa->nap -= 2;
ap += 2;
}
p = td->td_proc;
if (p->p_sysent->sv_mask)
sa->code &= p->p_sysent->sv_mask;
if (sa->code >= p->p_sysent->sv_size)
sa->callp = &p->p_sysent->sv_table[0];
else
sa->callp = &p->p_sysent->sv_table[sa->code];
sa->narg = sa->callp->sy_narg;
error = 0;
memcpy(sa->args, ap, sa->nap * sizeof(register_t));
if (sa->narg > sa->nap) {
error = copyin((void *)td->td_frame->tf_usr_sp, sa->args +
sa->nap, (sa->narg - sa->nap) * sizeof(register_t));
}
if (error == 0) {
td->td_retval[0] = 0;
td->td_retval[1] = 0;
}
return (error);
}
#include "../../kern/subr_syscall.c"
static void
syscall(struct thread *td, struct trapframe *frame)
{
struct syscall_args sa;
int error;
sa.nap = 4;
error = syscallenter(td, &sa);
KASSERT(error != 0 || td->td_ar == NULL,
("returning from syscall with td_ar set!"));
syscallret(td, error, &sa);
}
void
swi_handler(struct trapframe *frame)
{
struct thread *td = curthread;
td->td_frame = frame;
td->td_pticks = 0;
/*
* Make sure the program counter is correctly aligned so we
* don't take an alignment fault trying to read the opcode.
* XXX: Fix for Thumb mode
*/
if (__predict_false(((frame->tf_pc - INSN_SIZE) & 3) != 0)) {
call_trapsignal(td, SIGILL, 0);
userret(td, frame);
return;
}
/*
* Enable interrupts if they were enabled before the exception.
* Since all syscalls *should* come from user mode it will always
* be safe to enable them, but check anyway.
*/
if (td->td_md.md_spinlock_count == 0) {
if (__predict_true(frame->tf_spsr & PSR_I) == 0)
enable_interrupts(PSR_I);
if (__predict_true(frame->tf_spsr & PSR_F) == 0)
enable_interrupts(PSR_F);
}
syscall(td, frame);
}

View File

@ -79,28 +79,15 @@
*/
#include "opt_ktrace.h"
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/syscall.h>
#include <sys/sysent.h>
#include <sys/signalvar.h>
#include <sys/ktr.h>
#ifdef KTRACE
#include <sys/uio.h>
#include <sys/ktrace.h>
#endif
#include <sys/ptrace.h>
#include <sys/pioctl.h>
#include <vm/vm.h>
#include <vm/pmap.h>
@ -108,28 +95,16 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_map.h>
#include <vm/vm_extern.h>
#include <machine/armreg.h>
#include <machine/cpuconf.h>
#include <machine/vmparam.h>
#include <machine/frame.h>
#include <machine/cpu.h>
#include <machine/intr.h>
#include <machine/frame.h>
#include <machine/machdep.h>
#include <machine/pcb.h>
#include <machine/proc.h>
#include <machine/swi.h>
#include <security/audit/audit.h>
#include <machine/vmparam.h>
#ifdef KDB
#include <sys/kdb.h>
#endif
void swi_handler(struct trapframe *);
#include <machine/disassem.h>
#include <machine/machdep.h>
extern char fusubailout[];
#ifdef DEBUG
@ -776,105 +751,3 @@ badaddr_read(void *addr, size_t size, void *rptr)
/* Return EFAULT if the address was invalid, else zero */
return (rv);
}
int
cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa)
{
struct proc *p;
register_t *ap;
int error;
#ifdef __ARM_EABI__
sa->code = td->td_frame->tf_r7;
#else
sa->code = sa->insn & 0x000fffff;
#endif
ap = &td->td_frame->tf_r0;
if (sa->code == SYS_syscall) {
sa->code = *ap++;
sa->nap--;
} else if (sa->code == SYS___syscall) {
sa->code = ap[_QUAD_LOWWORD];
sa->nap -= 2;
ap += 2;
}
p = td->td_proc;
if (p->p_sysent->sv_mask)
sa->code &= p->p_sysent->sv_mask;
if (sa->code >= p->p_sysent->sv_size)
sa->callp = &p->p_sysent->sv_table[0];
else
sa->callp = &p->p_sysent->sv_table[sa->code];
sa->narg = sa->callp->sy_narg;
error = 0;
memcpy(sa->args, ap, sa->nap * sizeof(register_t));
if (sa->narg > sa->nap) {
error = copyin((void *)td->td_frame->tf_usr_sp, sa->args +
sa->nap, (sa->narg - sa->nap) * sizeof(register_t));
}
if (error == 0) {
td->td_retval[0] = 0;
td->td_retval[1] = 0;
}
return (error);
}
#include "../../kern/subr_syscall.c"
static void
syscall(struct thread *td, struct trapframe *frame)
{
struct syscall_args sa;
int error;
#ifndef __ARM_EABI__
sa.insn = *(uint32_t *)(frame->tf_pc - INSN_SIZE);
switch (sa.insn & SWI_OS_MASK) {
case 0: /* XXX: we need our own one. */
break;
default:
call_trapsignal(td, SIGILL, 0);
userret(td, frame);
return;
}
#endif
sa.nap = 4;
error = syscallenter(td, &sa);
KASSERT(error != 0 || td->td_ar == NULL,
("returning from syscall with td_ar set!"));
syscallret(td, error, &sa);
}
void
swi_handler(struct trapframe *frame)
{
struct thread *td = curthread;
td->td_frame = frame;
td->td_pticks = 0;
/*
* Make sure the program counter is correctly aligned so we
* don't take an alignment fault trying to read the opcode.
*/
if (__predict_false(((frame->tf_pc - INSN_SIZE) & 3) != 0)) {
call_trapsignal(td, SIGILL, 0);
userret(td, frame);
return;
}
/*
* Enable interrupts if they were enabled before the exception.
* Since all syscalls *should* come from user mode it will always
* be safe to enable them, but check anyway.
*/
if (td->td_md.md_spinlock_count == 0) {
if (__predict_true(frame->tf_spsr & PSR_I) == 0)
enable_interrupts(PSR_I);
if (__predict_true(frame->tf_spsr & PSR_F) == 0)
enable_interrupts(PSR_F);
}
syscall(td, frame);
}

View File

@ -34,6 +34,8 @@
#ifndef MACHINE_SYSREG_H
#define MACHINE_SYSREG_H
#include <machine/acle-compat.h>
/*
* CP15 C0 registers
*/

View File

@ -1,4 +1,3 @@
# $FreeBSD$
# Blank, to override Makefile.i386 since Makefile.$MACHINE is included before
# Makefile.$MACHINE_ARCH
SUBDIR+= libstand32

View File

@ -17,9 +17,7 @@ FILES=${P}
SRCS=arm_init.S boot2.c ${BOOT_FLAVOR:tl}_board.c
SRCS+=memchr.c memcmp.c memcpy.c memmem.c memset.c printf.c strcmp.c strcpy.c
SRCS+=strlen.c ashldi3.c divsi3.S muldi3.c
.if ${MK_ARM_EABI} != "no"
SRCS+=aeabi_unwind.c
.endif
MAN=
KERNPHYSADDR=0x180000

View File

@ -37,7 +37,7 @@ CFLAGS= -Os \
-Wall -Waggregate-return -Wbad-function-cast -Wcast-align \
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \
-Winline \
-Winline
CFLAGS.gcc+= -fno-guess-branch-probability \
-fno-unit-at-a-time \

View File

@ -67,9 +67,6 @@ SRCS+= bcmp.c bcopy.c bzero.c ffs.c memccpy.c memchr.c memcmp.c memcpy.c \
.if ${MACHINE_CPUARCH} == "arm"
.PATH: ${LIBC}/arm/gen
.if ${MK_ARM_EABI} == "no"
SRCS+= divsi3.S
.else
# Compiler support functions
.PATH: ${.CURDIR}/../../../contrib/compiler-rt/lib/
# __clzsi2 and ctzsi2 for various builtin functions
@ -81,7 +78,6 @@ SRCS+= udivmoddi4.c udivmodsi4.c udivdi3.c udivsi3.c umoddi3.c umodsi3.c
.PATH: ${.CURDIR}/../../../contrib/compiler-rt/lib/arm/
SRCS+= aeabi_idivmod.S aeabi_ldivmod.S aeabi_uidivmod.S aeabi_uldivmod.S
SRCS+= aeabi_memcmp.S aeabi_memcpy.S aeabi_memmove.S aeabi_memset.S
.endif
.endif
.if ${MACHINE_CPUARCH} == "powerpc"

View File

@ -2,10 +2,6 @@
.include <bsd.own.mk>
# XXX: clang can compile the boot code just fine, but boot2 gets too big
#CC:= gcc
#COMPILER_TYPE:= gcc
FILES= boot boot1 boot2
NM?= nm
@ -114,4 +110,5 @@ boot2.h: boot1.out
.include <bsd.prog.mk>
# XXX: clang integrated-as doesn't grok .codeNN directives yet
CFLAGS+= ${CLANG_NO_IAS}
CFLAGS.boot1.S= ${CLANG_NO_IAS}
CFLAGS+= ${CFLAGS.${.IMPSRC:T}}

View File

@ -11,9 +11,6 @@
# 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. Neither the name of the author nor the names of any co-contributors
# may 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

View File

@ -44,4 +44,7 @@ CFLAGS+= -I${.CURDIR}/../../common \
# the location of libstand
CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/
# Suppress warning from clang for FreeBSD %b and %D formats
CFLAGS+= -fformat-extensions
.include <bsd.lib.mk>

View File

@ -56,6 +56,8 @@ LDFLAGS= -static -Ttext 0x0
LIBPC98= ${.OBJDIR}/../libpc98/libpc98.a
CFLAGS+= -I${.CURDIR}/..
LIBSTAND= ${.OBJDIR}/../../libstand32/libstand.a
# BTX components
CFLAGS+= -I${.CURDIR}/../btx/lib

View File

@ -10480,7 +10480,7 @@ ctl_inquiry_std(struct ctl_scsiio *ctsio)
struct ctl_softc *ctl_softc;
struct ctl_lun *lun;
char *val;
uint32_t alloc_len;
uint32_t alloc_len, data_len;
ctl_port_type port_type;
ctl_softc = control_softc;
@ -10504,16 +10504,17 @@ ctl_inquiry_std(struct ctl_scsiio *ctsio)
* in. If the user only asks for less, we'll give him
* that much.
*/
ctsio->kern_data_ptr = malloc(sizeof(*inq_ptr), M_CTL, M_WAITOK | M_ZERO);
data_len = offsetof(struct scsi_inquiry_data, vendor_specific1);
ctsio->kern_data_ptr = malloc(data_len, M_CTL, M_WAITOK | M_ZERO);
inq_ptr = (struct scsi_inquiry_data *)ctsio->kern_data_ptr;
ctsio->kern_sg_entries = 0;
ctsio->kern_data_resid = 0;
ctsio->kern_rel_offset = 0;
if (sizeof(*inq_ptr) < alloc_len) {
ctsio->residual = alloc_len - sizeof(*inq_ptr);
ctsio->kern_data_len = sizeof(*inq_ptr);
ctsio->kern_total_len = sizeof(*inq_ptr);
if (data_len < alloc_len) {
ctsio->residual = alloc_len - data_len;
ctsio->kern_data_len = data_len;
ctsio->kern_total_len = data_len;
} else {
ctsio->residual = 0;
ctsio->kern_data_len = alloc_len;
@ -10593,8 +10594,7 @@ ctl_inquiry_std(struct ctl_scsiio *ctsio)
*/
inq_ptr->response_format = SID_HiSup | 2;
inq_ptr->additional_length =
offsetof(struct scsi_inquiry_data, vendor_specific1) -
inq_ptr->additional_length = data_len -
(offsetof(struct scsi_inquiry_data, additional_length) + 1);
CTL_DEBUG_PRINT(("additional_length = %d\n",
inq_ptr->additional_length));

View File

@ -1812,6 +1812,7 @@ tpc_create_token(struct ctl_lun *lun, struct ctl_port *port, off_t len,
static int id = 0;
struct scsi_vpd_id_descriptor *idd = NULL;
struct scsi_ec_cscd_id *cscd;
struct scsi_read_capacity_data_long *dtsd;
int targid_len;
scsi_ulto4b(ROD_TYPE_AUR, token->type);
@ -1830,9 +1831,19 @@ tpc_create_token(struct ctl_lun *lun, struct ctl_port *port, off_t len,
cscd->type_code = EC_CSCD_ID;
cscd->luidt_pdt = T_DIRECT;
memcpy(&cscd->codeset, idd, 4 + idd->length);
scsi_ulto3b(lun->be_lun->blocksize, cscd->dtsp.block_length);
}
scsi_u64to8b(0, &token->body[40]);
scsi_u64to8b(0, &token->body[40]); /* XXX: Should be 128bit value. */
scsi_u64to8b(len, &token->body[48]);
/* ROD token device type specific data (RC16 without first field) */
dtsd = (struct scsi_read_capacity_data_long *)&token->body[88 - 8];
scsi_ulto4b(lun->be_lun->blocksize, dtsd->length);
dtsd->prot_lbppbe = lun->be_lun->pblockexp & SRC16_LBPPBE;
scsi_ulto2b(lun->be_lun->pblockoff & SRC16_LALBA_A, dtsd->lalba_lbp);
if (lun->be_lun->flags & CTL_LUN_FLAG_UNMAP)
dtsd->lalba_lbp[0] |= SRC16_LBPME | SRC16_LBPRZ;
if (port->target_devid) {
targid_len = port->target_devid->len;
memcpy(&token->body[120], port->target_devid->data, targid_len);
@ -1938,6 +1949,8 @@ ctl_populate_token(struct ctl_scsiio *ctsio)
token->range = &data->desc[0];
token->nrange = scsi_2btoul(data->range_descriptor_length) /
sizeof(struct scsi_range_desc);
list->cursectors = tpc_ranges_length(token->range, token->nrange);
list->curbytes = (off_t)list->cursectors * lun->be_lun->blocksize;
tpc_create_token(lun, port, list->curbytes,
(struct scsi_token *)token->token);
token->active = 0;
@ -1954,8 +1967,6 @@ ctl_populate_token(struct ctl_scsiio *ctsio)
}
memcpy(list->res_token, token->token, sizeof(list->res_token));
list->res_token_valid = 1;
list->cursectors = tpc_ranges_length(token->range, token->nrange);
list->curbytes = (off_t)list->cursectors * lun->be_lun->blocksize;
list->curseg = 0;
list->completed = 1;
list->last_active = time_uptime;

View File

@ -1135,6 +1135,7 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
u_int8_t periph_qual;
path->device->flags |= CAM_DEV_INQUIRY_DATA_VALID;
scsi_find_quirk(path->device);
inq_buf = &path->device->inq_data;
periph_qual = SID_QUAL(inq_buf);
@ -1163,8 +1164,6 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
goto out;
}
scsi_find_quirk(path->device);
scsi_devise_transport(path);
if (path->device->lun_id == 0 &&
@ -1192,15 +1191,9 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
xpt_schedule(periph, priority);
goto out;
} else if (path->device->lun_id == 0 &&
SID_ANSI_REV(inq_buf) > SCSI_REV_SPC2 &&
SID_ANSI_REV(inq_buf) >= SCSI_REV_SPC2 &&
(SCSI_QUIRK(path->device)->quirks &
CAM_QUIRK_NORPTLUNS) == 0) {
if (path->device->flags &
CAM_DEV_UNCONFIGURED) {
path->device->flags &=
~CAM_DEV_UNCONFIGURED;
xpt_acquire_device(path->device);
}
PROBE_SET_ACTION(softc, PROBE_REPORT_LUNS);
periph->path->target->rpl_size = 16;
xpt_release_ccb(done_ccb);
@ -1213,10 +1206,13 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
: SF_RETRY_UA,
&softc->saved_ccb) == ERESTART) {
goto outr;
} else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) {
/* Don't wedge the queue */
xpt_release_devq(done_ccb->ccb_h.path, /*count*/1,
/*run_queue*/TRUE);
} else {
if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) {
/* Don't wedge the queue */
xpt_release_devq(done_ccb->ccb_h.path,
/*count*/1, /*run_queue*/TRUE);
}
path->device->flags &= ~CAM_DEV_INQUIRY_DATA_VALID;
}
/*
* If we get to this point, we got an error status back
@ -1308,14 +1304,6 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
tlun, 8);
CAM_DEBUG(path, CAM_DEBUG_PROBE,
("lun 0 in position %u\n", idx));
} else {
/*
* There is no lun 0 in our list. Destroy
* the validity of the inquiry data so we
* bail here and now.
*/
path->device->flags &=
~CAM_DEV_INQUIRY_DATA_VALID;
}
}
/*
@ -1328,7 +1316,8 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
probe_purge_old(path, lp, softc->flags);
lp = NULL;
}
if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID) {
if (path->device->flags & CAM_DEV_INQUIRY_DATA_VALID &&
SID_QUAL(&path->device->inq_data) == SID_QUAL_LU_CONNECTED) {
struct scsi_inquiry_data *inq_buf;
inq_buf = &path->device->inq_data;
if (INQ_DATA_TQ_ENABLED(inq_buf))
@ -1343,6 +1332,8 @@ probedone(struct cam_periph *periph, union ccb *done_ccb)
if (lp) {
free(lp, M_CAMXPT);
}
PROBE_SET_ACTION(softc, PROBE_INVALID);
xpt_release_ccb(done_ccb);
break;
}
case PROBE_MODE_SENSE:
@ -1975,7 +1966,7 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
struct cam_path *path, *oldpath;
scsi_scan_bus_info *scan_info;
struct cam_et *target;
struct cam_ed *device;
struct cam_ed *device, *nextdev;
int next_target;
path_id_t path_id;
target_id_t target_id;
@ -1984,18 +1975,10 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
oldpath = request_ccb->ccb_h.path;
status = cam_ccb_status(request_ccb);
/* Reuse the same CCB to query if a device was really found */
scan_info = (scsi_scan_bus_info *)request_ccb->ccb_h.ppriv_ptr0;
xpt_setup_ccb(&request_ccb->ccb_h, request_ccb->ccb_h.path,
request_ccb->ccb_h.pinfo.priority);
request_ccb->ccb_h.func_code = XPT_GDEV_TYPE;
path_id = request_ccb->ccb_h.path_id;
target_id = request_ccb->ccb_h.target_id;
lun_id = request_ccb->ccb_h.target_lun;
xpt_action(request_ccb);
target = request_ccb->ccb_h.path->target;
next_target = 1;
@ -2068,56 +2051,39 @@ scsi_scan_bus(struct cam_periph *periph, union ccb *request_ccb)
}
}
} else {
mtx_unlock(&target->luns_mtx);
if (request_ccb->ccb_h.status != CAM_REQ_CMP) {
int phl;
/*
* If we already probed lun 0 successfully, or
* we have additional configured luns on this
* target that might have "gone away", go onto
* the next lun.
*/
/*
* We may touch devices that we don't
* hold references too, so ensure they
* don't disappear out from under us.
* The target above is referenced by the
* path in the request ccb.
*/
phl = 0;
device = TAILQ_FIRST(&target->ed_entries);
if (device != NULL) {
phl = CAN_SRCH_HI_SPARSE(device);
if (device->lun_id == 0)
device = TAILQ_NEXT(device, links);
}
if ((lun_id != 0) || (device != NULL)) {
if (lun_id < (CAM_SCSI2_MAXLUN-1) || phl) {
lun_id++;
next_target = 0;
}
}
if (lun_id == request_ccb->ccb_h.target_lun
|| lun_id > scan_info->cpi->max_lun)
next_target = 1;
} else {
mtx_unlock(&target->luns_mtx);
device = request_ccb->ccb_h.path->device;
if ((SCSI_QUIRK(device)->quirks &
CAM_QUIRK_NOLUNS) == 0) {
/* Try the next lun */
if (lun_id < (CAM_SCSI2_MAXLUN-1)
|| CAN_SRCH_HI_DENSE(device)) {
lun_id++;
next_target = 0;
}
}
if (lun_id == request_ccb->ccb_h.target_lun
|| lun_id > scan_info->cpi->max_lun)
/* Continue sequential LUN scan if: */
/* -- we have more LUNs that need recheck */
mtx_lock(&target->bus->eb_mtx);
nextdev = device;
while ((nextdev = TAILQ_NEXT(nextdev, links)) != NULL)
if ((nextdev->flags & CAM_DEV_UNCONFIGURED) == 0)
break;
mtx_unlock(&target->bus->eb_mtx);
if (nextdev != NULL) {
next_target = 0;
/* -- stop if CAM_QUIRK_NOLUNS is set. */
} else if (SCSI_QUIRK(device)->quirks & CAM_QUIRK_NOLUNS) {
next_target = 1;
}
/* -- this LUN is connected and its SCSI version
* allows more LUNs. */
} else if ((device->flags & CAM_DEV_UNCONFIGURED) == 0) {
if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
CAN_SRCH_HI_DENSE(device))
next_target = 0;
/* -- this LUN is disconnected, its SCSI version
* allows more LUNs and we guess they may be. */
} else if ((device->flags & CAM_DEV_INQUIRY_DATA_VALID) != 0) {
if (lun_id < (CAM_SCSI2_MAXLUN-1) ||
CAN_SRCH_HI_SPARSE(device))
next_target = 0;
}
if (next_target == 0) {
lun_id++;
if (lun_id > scan_info->cpi->max_lun)
next_target = 1;
}
}
/*

View File

@ -82,6 +82,17 @@ lz4_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int dum
*/
#endif
/*
* Unaligned memory access is automatically enabled for "common" CPU,
* such as x86. For others CPU, the compiler will be more cautious, and
* insert extra code to ensure aligned access is respected. If you know
* your target CPU supports unaligned memory access, you may want to
* force this option manually to improve performance
*/
#if defined(__ARM_FEATURE_UNALIGNED)
#define LZ4_FORCE_UNALIGNED_ACCESS 1
#endif
/*
* Compiler Options
*/
@ -113,6 +124,10 @@ lz4_decompress(void *s_start, void *d_start, size_t s_len, size_t d_len, int dum
#define S32 int32_t
#define U64 uint64_t
#ifndef LZ4_FORCE_UNALIGNED_ACCESS
#pragma pack(1)
#endif
typedef struct _U16_S {
U16 v;
} U16_S;
@ -123,6 +138,10 @@ typedef struct _U64_S {
U64 v;
} U64_S;
#ifndef LZ4_FORCE_UNALIGNED_ACCESS
#pragma pack()
#endif
#define A64(x) (((U64_S *)(x))->v)
#define A32(x) (((U32_S *)(x))->v)
#define A16(x) (((U16_S *)(x))->v)

View File

@ -3550,7 +3550,12 @@ zfs_ioc_destroy_snaps(const char *poolname, nvlist_t *innvl, nvlist_t *outnvl)
for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL;
pair = nvlist_next_nvpair(snaps, pair)) {
(void) zfs_unmount_snap(nvpair_name(pair));
const char *name = nvpair_name(pair);
(void) zfs_unmount_snap(name);
#if defined(__FreeBSD__)
(void) zvol_remove_minor(name);
#endif
}
return (dsl_destroy_snapshots_nvl(snaps, defer, outnvl));
@ -3644,7 +3649,6 @@ zfs_ioc_destroy_bookmarks(const char *poolname, nvlist_t *innvl,
if (strncmp(name, poolname, poollen) != 0 ||
(name[poollen] != '/' && name[poollen] != '#'))
return (SET_ERROR(EXDEV));
(void) zvol_remove_minor(name);
}
error = dsl_bookmark_destroy(innvl, outnvl);

View File

@ -870,6 +870,17 @@ zfsvfs_create(const char *osname, zfsvfs_t **zfvp)
int i, error;
uint64_t sa_obj;
/*
* XXX: Fix struct statfs so this isn't necessary!
*
* The 'osname' is used as the filesystem's special node, which means
* it must fit in statfs.f_mntfromname, or else it can't be
* enumerated, so libzfs_mnttab_find() returns NULL, which causes
* 'zfs unmount' to think it's not mounted when it is.
*/
if (strlen(osname) >= MNAMELEN)
return (SET_ERROR(ENAMETOOLONG));
zfsvfs = kmem_zalloc(sizeof (zfsvfs_t), KM_SLEEP);
/*

View File

@ -42,11 +42,7 @@ STRIP_FLAGS = -S
# We don't support gcc's thump interwork stuff, so disable it
CFLAGS.gcc += -mno-thumb-interwork
.if empty(DDB_ENABLED)
.if ${MK_ARM_EABI} == "no"
CFLAGS.gcc += -mno-apcs-frame
.endif
.elif ${MK_ARM_EABI} != "no"
.if !empty(DDB_ENABLED)
CFLAGS += -funwind-tables
# clang requires us to tell it to emit assembly with unwind information
CFLAGS.clang += -mllvm -arm-enable-ehabi

View File

@ -2638,6 +2638,9 @@ dev/xen/netfront/netfront.c optional xen | xenhvm
dev/xen/xenpci/xenpci.c optional xenpci
dev/xen/timer/timer.c optional xen | xenhvm
dev/xen/pvcpu/pvcpu.c optional xen | xenhvm
dev/xen/xenstore/xenstore.c optional xen | xenhvm
dev/xen/xenstore/xenstore_dev.c optional xen | xenhvm
dev/xen/xenstore/xenstored_dev.c optional xen | xenhvm
dev/xl/if_xl.c optional xl pci
dev/xl/xlphy.c optional xl pci
fs/autofs/autofs.c optional autofs
@ -3976,8 +3979,6 @@ xen/xenbus/xenbusb_if.m optional xen | xenhvm
xen/xenbus/xenbusb.c optional xen | xenhvm
xen/xenbus/xenbusb_front.c optional xen | xenhvm
xen/xenbus/xenbusb_back.c optional xen | xenhvm
xen/xenstore/xenstore.c optional xen | xenhvm
xen/xenstore/xenstore_dev.c optional xen | xenhvm
xdr/xdr.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
xdr/xdr_array.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd
xdr/xdr_mbuf.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd

View File

@ -582,3 +582,5 @@ x86/xen/pvcpu_enum.c optional xenhvm
x86/xen/xen_apic.c optional xenhvm
x86/xen/xenpv.c optional xenhvm
x86/xen/xen_nexus.c optional xenhvm
x86/xen/xen_msi.c optional xenhvm
x86/xen/xen_pci.c optional xenhvm

View File

@ -49,6 +49,7 @@ arm/arm/stdatomic.c standard \
arm/arm/support.S standard
arm/arm/swtch.S standard
arm/arm/sys_machdep.c standard
arm/arm/syscall.c standard
arm/arm/trap.c standard
arm/arm/uio_machdep.c standard
arm/arm/undefined.c standard

View File

@ -599,3 +599,4 @@ x86/xen/xen_intr.c optional xen | xenhvm
x86/xen/xen_apic.c optional xenhvm
x86/xen/xenpv.c optional xen | xenhvm
x86/xen/xen_nexus.c optional xen | xenhvm
x86/xen/xen_msi.c optional xen | xenhvm

View File

@ -23,7 +23,6 @@
# src tree.
__DEFAULT_YES_OPTIONS = \
ARM_EABI \
BLUETOOTH \
CDDL \
CRYPT \

View File

@ -1181,10 +1181,11 @@ struct ath_hal;
extern struct ath_hal_9300 * ar9300_new_state(u_int16_t devid,
HAL_SOFTC sc, HAL_BUS_TAG st, HAL_BUS_HANDLE sh, uint16_t *eepromdata,
HAL_OPS_CONFIG *ah_config,
HAL_STATUS *status);
extern struct ath_hal * ar9300_attach(u_int16_t devid,
HAL_SOFTC sc, HAL_BUS_TAG st, HAL_BUS_HANDLE sh, uint16_t *eepromdata,
HAL_STATUS *status);
HAL_OPS_CONFIG *ah_config, HAL_STATUS *status);
extern void ar9300_detach(struct ath_hal *ah);
extern void ar9300_read_revisions(struct ath_hal *ah);
extern HAL_BOOL ar9300_chip_test(struct ath_hal *ah);

View File

@ -618,7 +618,8 @@ ar9300_read_revisions(struct ath_hal *ah)
*/
struct ath_hal *
ar9300_attach(u_int16_t devid, HAL_SOFTC sc, HAL_BUS_TAG st,
HAL_BUS_HANDLE sh, uint16_t *eepromdata, HAL_STATUS *status)
HAL_BUS_HANDLE sh, uint16_t *eepromdata, HAL_OPS_CONFIG *ah_config,
HAL_STATUS *status)
{
struct ath_hal_9300 *ahp;
struct ath_hal *ah;
@ -628,7 +629,7 @@ ar9300_attach(u_int16_t devid, HAL_SOFTC sc, HAL_BUS_TAG st,
HAL_NO_INTERSPERSED_READS;
/* NB: memory is returned zero'd */
ahp = ar9300_new_state(devid, sc, st, sh, eepromdata, status);
ahp = ar9300_new_state(devid, sc, st, sh, eepromdata, ah_config, status);
if (ahp == AH_NULL) {
return AH_NULL;
}
@ -654,12 +655,6 @@ ar9300_attach(u_int16_t devid, HAL_SOFTC sc, HAL_BUS_TAG st,
/* XXX FreeBSD: enable RX mitigation */
ah->ah_config.ath_hal_intr_mitigation_rx = 1;
/*
* XXX what's this do? Check in the qcamain driver code
* as to what it does.
*/
ah->ah_config.ath_hal_ext_atten_margin_cfg = 0;
/* interrupt mitigation */
#ifdef AR5416_INT_MITIGATION
if (ah->ah_config.ath_hal_intr_mitigation_rx != 0) {
@ -2378,7 +2373,9 @@ ar9300_detach(struct ath_hal *ah)
struct ath_hal_9300 *
ar9300_new_state(u_int16_t devid, HAL_SOFTC sc,
HAL_BUS_TAG st, HAL_BUS_HANDLE sh,
uint16_t *eepromdata, HAL_STATUS *status)
uint16_t *eepromdata,
HAL_OPS_CONFIG *ah_config,
HAL_STATUS *status)
{
static const u_int8_t defbssidmask[IEEE80211_ADDR_LEN] =
{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
@ -2430,7 +2427,7 @@ ar9300_new_state(u_int16_t devid, HAL_SOFTC sc,
** Initialize factory defaults in the private space
*/
// ath_hal_factory_defaults(AH_PRIVATE(ah), hal_conf_parm);
ar9300_config_defaults_freebsd(ah);
ar9300_config_defaults_freebsd(ah, ah_config);
/* XXX FreeBSD: cal is always in EEPROM */
#if 0
@ -2456,6 +2453,7 @@ ar9300_new_state(u_int16_t devid, HAL_SOFTC sc,
AH_PRIVATE(ah)->ah_tpScale = HAL_TP_SCALE_MAX; /* no scaling */
ahp->ah_atim_window = 0; /* [0..1000] */
ahp->ah_diversity_control =
ah->ah_config.ath_hal_diversity_control;
ahp->ah_antenna_switch_swap =
@ -3835,6 +3833,11 @@ ar9300_ant_div_comb_get_config(struct ath_hal *ah,
} else {
div_comb_conf->antdiv_configgroup = DEFAULT_ANTDIV_CONFIG_GROUP;
}
/*
* XXX TODO: allow the HAL to override the rssithres and fast_div_bias
* values (eg CUS198.)
*/
}
void

View File

@ -1606,6 +1606,7 @@ HAL_BOOL ar9300_ant_ctrl_apply(struct ath_hal *ah, HAL_BOOL is_2ghz)
if ( AR_SREV_POSEIDON(ah) && (ahp->ah_lna_div_use_bt_ant_enable == TRUE) ) {
value &= ~AR_SWITCH_TABLE_COM2_ALL;
value |= ah->ah_config.ath_hal_ant_ctrl_comm2g_switch_enable;
HALDEBUG(ah, HAL_DEBUG_RESET, "%s: com2=0x%08x\n", __func__, value)
}
#endif /* ATH_ANT_DIV_COMB */
OS_REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM_2, AR_SWITCH_TABLE_COM2_ALL, value);
@ -1711,6 +1712,8 @@ HAL_BOOL ar9300_ant_ctrl_apply(struct ath_hal *ah, HAL_BOOL is_2ghz)
/* For WB225, need to swith ANT2 from BT to Wifi
* This will not affect HB125 LNA diversity feature.
*/
HALDEBUG(ah, HAL_DEBUG_RESET, "%s: com2=0x%08x\n", __func__,
ah->ah_config.ath_hal_ant_ctrl_comm2g_switch_enable)
OS_REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM_2, AR_SWITCH_TABLE_COM2_ALL,
ah->ah_config.ath_hal_ant_ctrl_comm2g_switch_enable);
break;
@ -1776,6 +1779,7 @@ ar9300_attenuation_margin_chain_get(struct ath_hal *ah, int chain,
return 0;
}
#if 0
HAL_BOOL ar9300_attenuation_apply(struct ath_hal *ah, u_int16_t channel)
{
u_int32_t value;
@ -1814,6 +1818,75 @@ HAL_BOOL ar9300_attenuation_apply(struct ath_hal *ah, u_int16_t channel)
}
return 0;
}
#endif
HAL_BOOL
ar9300_attenuation_apply(struct ath_hal *ah, u_int16_t channel)
{
int i;
uint32_t value;
uint32_t ext_atten_reg[3] = {
AR_PHY_EXT_ATTEN_CTL_0,
AR_PHY_EXT_ATTEN_CTL_1,
AR_PHY_EXT_ATTEN_CTL_2
};
/*
* If it's an AR9462 and we're receiving on the second
* chain only, set the chain 0 details from chain 1
* calibration.
*
* This is from ath9k.
*/
if (AR_SREV_JUPITER(ah) && (AH9300(ah)->ah_rx_chainmask == 0x2)) {
value = ar9300_attenuation_chain_get(ah, 1, channel);
OS_REG_RMW_FIELD(ah, ext_atten_reg[0],
AR_PHY_EXT_ATTEN_CTL_XATTEN1_DB, value);
value = ar9300_attenuation_margin_chain_get(ah, 1, channel);
OS_REG_RMW_FIELD(ah, ext_atten_reg[0],
AR_PHY_EXT_ATTEN_CTL_XATTEN1_MARGIN, value);
}
/*
* Now, loop over the configured transmit chains and
* load in the attenuation/margin settings as appropriate.
*/
for (i = 0; i < 3; i++) {
if ((AH9300(ah)->ah_tx_chainmask & (1 << i)) == 0)
continue;
value = ar9300_attenuation_chain_get(ah, i, channel);
OS_REG_RMW_FIELD(ah, ext_atten_reg[i],
AR_PHY_EXT_ATTEN_CTL_XATTEN1_DB,
value);
if (AR_SREV_POSEIDON(ah) &&
(ar9300_rx_gain_index_get(ah) == 0) &&
ah->ah_config.ath_hal_ext_atten_margin_cfg) {
value = 5;
} else {
value = ar9300_attenuation_margin_chain_get(ah, 0,
channel);
}
/*
* I'm not sure why it's loading in this setting into
* the chain 0 margin regardless of the current chain.
*/
if (ah->ah_config.ath_hal_min_gainidx)
OS_REG_RMW_FIELD(ah,
AR_PHY_EXT_ATTEN_CTL_0,
AR_PHY_EXT_ATTEN_CTL_XATTEN1_MARGIN,
value);
OS_REG_RMW_FIELD(ah,
ext_atten_reg[i],
AR_PHY_EXT_ATTEN_CTL_XATTEN1_MARGIN,
value);
}
return (0);
}
static u_int16_t ar9300_quick_drop_get(struct ath_hal *ah,
int chain, u_int16_t channel)

View File

@ -252,9 +252,6 @@ ar9300_attach_freebsd_ops(struct ath_hal *ah)
/* LNA diversity functions */
ah->ah_divLnaConfGet = ar9300_ant_div_comb_get_config;
ah->ah_divLnaConfSet = ar9300_ant_div_comb_set_config;
/* Setup HAL configuration defaults */
ah->ah_config.ath_hal_ant_ctrl_comm2g_switch_enable = 0x000bbb88;
}
HAL_BOOL
@ -338,9 +335,11 @@ ar9300_ani_poll_freebsd(struct ath_hal *ah,
* wants.
*/
void
ar9300_config_defaults_freebsd(struct ath_hal *ah)
ar9300_config_defaults_freebsd(struct ath_hal *ah, HAL_OPS_CONFIG *ah_config)
{
/* Until FreeBSD's HAL does this by default - just copy */
OS_MEMCPY(&ah->ah_config, ah_config, sizeof(HAL_OPS_CONFIG));
ah->ah_config.ath_hal_enable_ani = AH_TRUE;
}

View File

@ -11,7 +11,8 @@ extern HAL_STATUS ar9300_eeprom_get_freebsd(struct ath_hal *, int param,
extern HAL_BOOL ar9300_stop_tx_dma_freebsd(struct ath_hal *ah, u_int q);
extern void ar9300_ani_poll_freebsd(struct ath_hal *ah,
const struct ieee80211_channel *chan);
extern void ar9300_config_defaults_freebsd(struct ath_hal *ah);
extern void ar9300_config_defaults_freebsd(struct ath_hal *ah,
HAL_OPS_CONFIG *ah_config);
extern HAL_BOOL ar9300_stop_dma_receive_freebsd(struct ath_hal *ah);
extern HAL_BOOL ar9300_get_pending_interrupts_freebsd(struct ath_hal *ah,
HAL_INT *masked);

View File

@ -6151,6 +6151,7 @@ ar9300_ant_ctrl_set_lna_div_use_bt_ant(struct ath_hal *ah, HAL_BOOL enable, cons
value &= ~AR_SWITCH_TABLE_COM2_ALL;
value |= ah->ah_config.ath_hal_ant_ctrl_comm2g_switch_enable;
}
HALDEBUG(ah, HAL_DEBUG_RESET, "%s: com2=0x%08x\n", __func__, value);
OS_REG_RMW_FIELD(ah, AR_PHY_SWITCH_COM_2, AR_SWITCH_TABLE_COM2_ALL, value);
value = ar9300_eeprom_get(ahp, EEP_ANTDIV_control);

View File

@ -59,6 +59,13 @@ static int acpi_max_tasks = ACPI_MAX_TASKS;
SYSCTL_INT(_debug_acpi, OID_AUTO, max_tasks, CTLFLAG_RDTUN, &acpi_max_tasks,
0, "Maximum acpi tasks");
/*
* Track and report the system's demand for task slots.
*/
static int acpi_tasks_hiwater;
SYSCTL_INT(_debug_acpi, OID_AUTO, tasks_hiwater, CTLFLAG_RD,
&acpi_tasks_hiwater, 1, "Peak demand for ACPI event task slots.");
/*
* Allow the user to tune the number of task threads we start. It seems
* some systems have problems with increased parallelism.
@ -151,6 +158,10 @@ acpi_task_enqueue(int priority, ACPI_OSD_EXEC_CALLBACK Function, void *Context)
acpi_task_count++;
break;
}
if (i > acpi_tasks_hiwater)
atomic_cmpset_int(&acpi_tasks_hiwater, acpi_tasks_hiwater, i);
if (at == NULL) {
printf("AcpiOsExecute: failed to enqueue task, consider increasing "
"the debug.acpi.max_tasks tunable\n");

View File

@ -282,7 +282,7 @@ acpi_pci_probe(device_t dev)
if (acpi_get_handle(dev) == NULL)
return (ENXIO);
device_set_desc(dev, "ACPI PCI bus");
return (0);
return (BUS_PROBE_DEFAULT);
}
static int

View File

@ -55,7 +55,9 @@ ath_hal_probe(uint16_t vendorid, uint16_t devid)
*/
struct ath_hal*
ath_hal_attach(uint16_t devid, HAL_SOFTC sc,
HAL_BUS_TAG st, HAL_BUS_HANDLE sh, uint16_t *eepromdata, HAL_STATUS *error)
HAL_BUS_TAG st, HAL_BUS_HANDLE sh, uint16_t *eepromdata,
HAL_OPS_CONFIG *ah_config,
HAL_STATUS *error)
{
struct ath_hal_chip * const *pchip;
@ -66,7 +68,8 @@ ath_hal_attach(uint16_t devid, HAL_SOFTC sc,
/* XXX don't have vendorid, assume atheros one works */
if (chip->probe(ATHEROS_VENDOR_ID, devid) == AH_NULL)
continue;
ah = chip->attach(devid, sc, st, sh, eepromdata, error);
ah = chip->attach(devid, sc, st, sh, eepromdata, ah_config,
error);
if (ah != AH_NULL) {
/* copy back private state to public area */
ah->ah_devid = AH_PRIVATE(ah)->ah_devid;

View File

@ -1264,6 +1264,7 @@ typedef struct
int ath_hal_show_bb_panic;
int ath_hal_ant_ctrl_comm2g_switch_enable;
int ath_hal_ext_atten_margin_cfg;
int ath_hal_min_gainidx;
int ath_hal_war70c;
uint32_t ath_hal_mci_config;
} HAL_OPS_CONFIG;
@ -1616,7 +1617,8 @@ extern const char *__ahdecl ath_hal_probe(uint16_t vendorid, uint16_t devid);
* be returned if the status parameter is non-zero.
*/
extern struct ath_hal * __ahdecl ath_hal_attach(uint16_t devid, HAL_SOFTC,
HAL_BUS_TAG, HAL_BUS_HANDLE, uint16_t *eepromdata, HAL_STATUS* status);
HAL_BUS_TAG, HAL_BUS_HANDLE, uint16_t *eepromdata,
HAL_OPS_CONFIG *ah_config, HAL_STATUS* status);
extern const char *ath_hal_mac_name(struct ath_hal *);
extern const char *ath_hal_rf_name(struct ath_hal *);

View File

@ -91,6 +91,7 @@ struct ath_hal_chip {
const char *(*probe)(uint16_t vendorid, uint16_t devid);
struct ath_hal *(*attach)(uint16_t devid, HAL_SOFTC,
HAL_BUS_TAG, HAL_BUS_HANDLE, uint16_t *eepromdata,
HAL_OPS_CONFIG *ah,
HAL_STATUS *error);
};
#ifndef AH_CHIP

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