History log of /freebsd-10.3-release/sys/dev/xen/netfront/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
316722 12-Apr-2017 delphij

Fix multiple vulnerabilities of ntp. [SA-17:03]

Xen migration enhancements. [EN-17:05]

Approved by: so


/freebsd-10.3-release/UPDATING
/freebsd-10.3-release/contrib/ntp/COPYRIGHT
/freebsd-10.3-release/contrib/ntp/ChangeLog
/freebsd-10.3-release/contrib/ntp/CommitLog
/freebsd-10.3-release/contrib/ntp/Makefile.in
/freebsd-10.3-release/contrib/ntp/NEWS
/freebsd-10.3-release/contrib/ntp/aclocal.m4
/freebsd-10.3-release/contrib/ntp/adjtimed/Makefile.am
/freebsd-10.3-release/contrib/ntp/adjtimed/Makefile.in
/freebsd-10.3-release/contrib/ntp/clockstuff/Makefile.am
/freebsd-10.3-release/contrib/ntp/clockstuff/Makefile.in
/freebsd-10.3-release/contrib/ntp/compile
/freebsd-10.3-release/contrib/ntp/config.guess
/freebsd-10.3-release/contrib/ntp/config.h.in
/freebsd-10.3-release/contrib/ntp/config.sub
/freebsd-10.3-release/contrib/ntp/configure
/freebsd-10.3-release/contrib/ntp/configure.ac
/freebsd-10.3-release/contrib/ntp/depcomp
/freebsd-10.3-release/contrib/ntp/html/copyright.html
/freebsd-10.3-release/contrib/ntp/include/Makefile.in
/freebsd-10.3-release/contrib/ntp/include/isc/Makefile.in
/freebsd-10.3-release/contrib/ntp/include/libssl_compat.h
/freebsd-10.3-release/contrib/ntp/include/ntp_crypto.h
/freebsd-10.3-release/contrib/ntp/include/ntp_fp.h
/freebsd-10.3-release/contrib/ntp/include/ntp_md5.h
/freebsd-10.3-release/contrib/ntp/include/ntp_stdlib.h
/freebsd-10.3-release/contrib/ntp/include/ntpd.h
/freebsd-10.3-release/contrib/ntp/include/ssl_applink.c
/freebsd-10.3-release/contrib/ntp/install-sh
/freebsd-10.3-release/contrib/ntp/kernel/Makefile.in
/freebsd-10.3-release/contrib/ntp/kernel/sys/Makefile.in
/freebsd-10.3-release/contrib/ntp/lib/isc/inet_pton.c
/freebsd-10.3-release/contrib/ntp/libntp/Makefile.am
/freebsd-10.3-release/contrib/ntp/libntp/Makefile.in
/freebsd-10.3-release/contrib/ntp/libntp/a_md5encrypt.c
/freebsd-10.3-release/contrib/ntp/libntp/audio.c
/freebsd-10.3-release/contrib/ntp/libntp/authkeys.c
/freebsd-10.3-release/contrib/ntp/libntp/emalloc.c
/freebsd-10.3-release/contrib/ntp/libntp/libssl_compat.c
/freebsd-10.3-release/contrib/ntp/libntp/ntp_intres.c
/freebsd-10.3-release/contrib/ntp/libntp/recvbuff.c
/freebsd-10.3-release/contrib/ntp/libntp/ssl_init.c
/freebsd-10.3-release/contrib/ntp/libntp/statestr.c
/freebsd-10.3-release/contrib/ntp/libntp/work_fork.c
/freebsd-10.3-release/contrib/ntp/libparse/Makefile.am
/freebsd-10.3-release/contrib/ntp/libparse/Makefile.in
/freebsd-10.3-release/contrib/ntp/libparse/clk_trimtsip.c
/freebsd-10.3-release/contrib/ntp/libparse/gpstolfp.c
/freebsd-10.3-release/contrib/ntp/ltmain.sh
/freebsd-10.3-release/contrib/ntp/missing
/freebsd-10.3-release/contrib/ntp/ntpd/Makefile.am
/freebsd-10.3-release/contrib/ntp/ntpd/Makefile.in
/freebsd-10.3-release/contrib/ntp/ntpd/invoke-ntp.conf.texi
/freebsd-10.3-release/contrib/ntp/ntpd/invoke-ntp.keys.texi
/freebsd-10.3-release/contrib/ntp/ntpd/invoke-ntpd.texi
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.conf.5man
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.conf.5mdoc
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.conf.html
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.conf.man.in
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.conf.mdoc.in
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.keys.5man
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.keys.5mdoc
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.keys.html
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.keys.man.in
/freebsd-10.3-release/contrib/ntp/ntpd/ntp.keys.mdoc.in
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_config.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_control.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_crypto.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_io.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_loopfilter.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_parser.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_parser.h
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_peer.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_proto.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_restrict.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntp_scanner.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd-opts.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd-opts.h
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.1ntpdman
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.1ntpdmdoc
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.c
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.html
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.man.in
/freebsd-10.3-release/contrib/ntp/ntpd/ntpd.mdoc.in
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_datum.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_gpsdjson.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_jjy.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_mx4200.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_nmea.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_oncore.c
/freebsd-10.3-release/contrib/ntp/ntpd/refclock_parse.c
/freebsd-10.3-release/contrib/ntp/ntpdate/Makefile.am
/freebsd-10.3-release/contrib/ntp/ntpdate/Makefile.in
/freebsd-10.3-release/contrib/ntp/ntpdate/ntpdate.c
/freebsd-10.3-release/contrib/ntp/ntpdc/Makefile.am
/freebsd-10.3-release/contrib/ntp/ntpdc/Makefile.in
/freebsd-10.3-release/contrib/ntp/ntpdc/invoke-ntpdc.texi
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc-opts.c
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc-opts.h
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.1ntpdcman
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.1ntpdcmdoc
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.c
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.html
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.man.in
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc.mdoc.in
/freebsd-10.3-release/contrib/ntp/ntpdc/ntpdc_ops.c
/freebsd-10.3-release/contrib/ntp/ntpq/Makefile.am
/freebsd-10.3-release/contrib/ntp/ntpq/Makefile.in
/freebsd-10.3-release/contrib/ntp/ntpq/invoke-ntpq.texi
/freebsd-10.3-release/contrib/ntp/ntpq/libntpq.c
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq-opts.c
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq-opts.h
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq-subs.c
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.1ntpqman
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.1ntpqmdoc
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.c
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.html
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.man.in
/freebsd-10.3-release/contrib/ntp/ntpq/ntpq.mdoc.in
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/Makefile.am
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/Makefile.in
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/invoke-ntpsnmpd.texi
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.c
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd-opts.h
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdman
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd.html
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd.man.in
/freebsd-10.3-release/contrib/ntp/ntpsnmpd/ntpsnmpd.mdoc.in
/freebsd-10.3-release/contrib/ntp/packageinfo.sh
/freebsd-10.3-release/contrib/ntp/parseutil/Makefile.am
/freebsd-10.3-release/contrib/ntp/parseutil/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/build/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjman
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/calc_tickadj.html
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/calc_tickadj.man.in
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/calc_tickadj.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/calc_tickadj/invoke-calc_tickadj.texi
/freebsd-10.3-release/contrib/ntp/scripts/invoke-plot_summary.texi
/freebsd-10.3-release/contrib/ntp/scripts/invoke-summary.texi
/freebsd-10.3-release/contrib/ntp/scripts/lib/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/invoke-ntp-wait.texi
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait-opts
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitman
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait.1ntp-waitmdoc
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait.html
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait.man.in
/freebsd-10.3-release/contrib/ntp/scripts/ntp-wait/ntp-wait.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/invoke-ntpsweep.texi
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep-opts
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepman
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep.1ntpsweepmdoc
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep.html
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep.man.in
/freebsd-10.3-release/contrib/ntp/scripts/ntpsweep/ntpsweep.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/invoke-ntptrace.texi
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace-opts
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace.1ntptraceman
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace.1ntptracemdoc
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace.html
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace.man.in
/freebsd-10.3-release/contrib/ntp/scripts/ntptrace/ntptrace.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary-opts
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary.1plot_summaryman
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary.1plot_summarymdoc
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary.html
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary.man.in
/freebsd-10.3-release/contrib/ntp/scripts/plot_summary.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/summary-opts
/freebsd-10.3-release/contrib/ntp/scripts/summary.1summaryman
/freebsd-10.3-release/contrib/ntp/scripts/summary.1summarymdoc
/freebsd-10.3-release/contrib/ntp/scripts/summary.html
/freebsd-10.3-release/contrib/ntp/scripts/summary.man.in
/freebsd-10.3-release/contrib/ntp/scripts/summary.mdoc.in
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/Makefile.in
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/invoke-update-leap.texi
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap-opts
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap.1update-leapman
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap.1update-leapmdoc
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap.html
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap.man.in
/freebsd-10.3-release/contrib/ntp/scripts/update-leap/update-leap.mdoc.in
/freebsd-10.3-release/contrib/ntp/sntp/COPYRIGHT
/freebsd-10.3-release/contrib/ntp/sntp/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/aclocal.m4
/freebsd-10.3-release/contrib/ntp/sntp/compile
/freebsd-10.3-release/contrib/ntp/sntp/config.guess
/freebsd-10.3-release/contrib/ntp/sntp/config.h.in
/freebsd-10.3-release/contrib/ntp/sntp/config.sub
/freebsd-10.3-release/contrib/ntp/sntp/configure
/freebsd-10.3-release/contrib/ntp/sntp/configure.ac
/freebsd-10.3-release/contrib/ntp/sntp/crypto.c
/freebsd-10.3-release/contrib/ntp/sntp/depcomp
/freebsd-10.3-release/contrib/ntp/sntp/include/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/include/copyright.def
/freebsd-10.3-release/contrib/ntp/sntp/include/version.def
/freebsd-10.3-release/contrib/ntp/sntp/include/version.texi
/freebsd-10.3-release/contrib/ntp/sntp/install-sh
/freebsd-10.3-release/contrib/ntp/sntp/invoke-sntp.texi
/freebsd-10.3-release/contrib/ntp/sntp/kod_management.c
/freebsd-10.3-release/contrib/ntp/sntp/libevent/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/libevent/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/compile
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/config.guess
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/config.sub
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/depcomp
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/install-sh
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/ltmain.sh
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/missing
/freebsd-10.3-release/contrib/ntp/sntp/libevent/build-aux/ylwrap
/freebsd-10.3-release/contrib/ntp/sntp/libevent/config.h.in
/freebsd-10.3-release/contrib/ntp/sntp/libevent/configure
/freebsd-10.3-release/contrib/ntp/sntp/libevent/configure.ac
/freebsd-10.3-release/contrib/ntp/sntp/libevent/m4/libtool.m4
/freebsd-10.3-release/contrib/ntp/sntp/libevent/m4/ltoptions.m4
/freebsd-10.3-release/contrib/ntp/sntp/libevent/m4/ltsugar.m4
/freebsd-10.3-release/contrib/ntp/sntp/libevent/m4/ltversion.m4
/freebsd-10.3-release/contrib/ntp/sntp/libevent/m4/lt~obsolete.m4
/freebsd-10.3-release/contrib/ntp/sntp/libevent/test/regress_ssl.c
/freebsd-10.3-release/contrib/ntp/sntp/libopts/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/libopts/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/ltmain.sh
/freebsd-10.3-release/contrib/ntp/sntp/m4/libtool.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ltoptions.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ltsugar.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ltversion.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/lt~obsolete.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ntp_compiler.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ntp_libevent.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ntp_libntp.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ntp_openssl.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/ntp_prog_cc.m4
/freebsd-10.3-release/contrib/ntp/sntp/m4/version.m4
/freebsd-10.3-release/contrib/ntp/sntp/missing
/freebsd-10.3-release/contrib/ntp/sntp/scm-rev
/freebsd-10.3-release/contrib/ntp/sntp/scripts/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/scripts/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/sntp-opts.c
/freebsd-10.3-release/contrib/ntp/sntp/sntp-opts.h
/freebsd-10.3-release/contrib/ntp/sntp/sntp.1sntpman
/freebsd-10.3-release/contrib/ntp/sntp/sntp.1sntpmdoc
/freebsd-10.3-release/contrib/ntp/sntp/sntp.html
/freebsd-10.3-release/contrib/ntp/sntp/sntp.man.in
/freebsd-10.3-release/contrib/ntp/sntp/sntp.mdoc.in
/freebsd-10.3-release/contrib/ntp/sntp/tests/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/tests/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/unity/Makefile.am
/freebsd-10.3-release/contrib/ntp/sntp/unity/Makefile.in
/freebsd-10.3-release/contrib/ntp/sntp/version.c
/freebsd-10.3-release/contrib/ntp/util/Makefile.am
/freebsd-10.3-release/contrib/ntp/util/Makefile.in
/freebsd-10.3-release/contrib/ntp/util/invoke-ntp-keygen.texi
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen-opts.c
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen-opts.h
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.1ntp-keygenman
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.1ntp-keygenmdoc
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.c
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.html
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.man.in
/freebsd-10.3-release/contrib/ntp/util/ntp-keygen.mdoc.in
/freebsd-10.3-release/contrib/ntp/ylwrap
/freebsd-10.3-release/sys/conf/newvers.sh
/freebsd-10.3-release/sys/dev/xen/blkfront/blkfront.c
/freebsd-10.3-release/sys/dev/xen/control/control.c
netfront.c
/freebsd-10.3-release/sys/xen/xen-os.h
/freebsd-10.3-release/sys/xen/xenbus/xenbusb.c
/freebsd-10.3-release/sys/xen/xenstore/xenstore.c
/freebsd-10.3-release/sys/xen/xenstore/xenstorevar.h
/freebsd-10.3-release/usr.sbin/ntp/config.h
/freebsd-10.3-release/usr.sbin/ntp/doc/ntp-keygen.8
/freebsd-10.3-release/usr.sbin/ntp/doc/ntp.conf.5
/freebsd-10.3-release/usr.sbin/ntp/doc/ntp.keys.5
/freebsd-10.3-release/usr.sbin/ntp/doc/ntpd.8
/freebsd-10.3-release/usr.sbin/ntp/doc/ntpdc.8
/freebsd-10.3-release/usr.sbin/ntp/doc/ntpq.8
/freebsd-10.3-release/usr.sbin/ntp/doc/sntp.8
/freebsd-10.3-release/usr.sbin/ntp/scripts/mkver
296373 04-Mar-2016 marius

- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1
builds.
- Update newvers.sh to reflect RC1.
- Update __FreeBSD_version to reflect 10.3.
- Update default pkg(8) configuration to use the quarterly branch.

Approved by: re (implicit)

291239 24-Nov-2015 royger

MFC r286999:

xen: allow disabling PV disks and nics

Sponsored by: Citrix Systems R&D


285737 21-Jul-2015 royger

MFC: r285089

netfront: preserve configuration across migrations

Approved by: re (gjb)


283218 21-May-2015 royger

MFC: r282908

netfront: wait for backend to connect before sending ARP

Sponsored by: Citrix Systems R&D


274043 03-Nov-2014 hselasky

MFC r271946 and r272595:
Improve transmit sending offload, TSO, algorithm in general. This
change allows all HCAs from Mellanox Technologies to function properly
when TSO is enabled. See r271946 and r272595 for more details about
this commit.

Sponsored by: Mellanox Technologies


273736 27-Oct-2014 hselasky

MFC r263710, r273377, r273378, r273423 and r273455:

- De-vnet hash sizes and hash masks.
- Fix multiple issues related to arguments passed to SYSCTL macros.

Sponsored by: Mellanox Technologies


259541 18-Dec-2013 glebius

Merge r256868,257276-257277,257515,257913 from head. These are fixes
required to make Xen buтldable w/o INET.

Sponsored by: Nginx, Inc.


256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


255040 29-Aug-2013 gibbs

Implement vector callback for PVHVM and unify event channel implementations

Re-structure Xen HVM support so that:
- Xen is detected and hypercalls can be performed very
early in system startup.
- Xen interrupt services are implemented using FreeBSD's native
interrupt delivery infrastructure.
- the Xen interrupt service implementation is shared between PV
and HVM guests.
- Xen interrupt handlers can optionally use a filter handler
in order to avoid the overhead of dispatch to an interrupt
thread.
- interrupt load can be distributed among all available CPUs.
- the overhead of accessing the emulated local and I/O apics
on HVM is removed for event channel port events.
- a similar optimization can eventually, and fairly easily,
be used to optimize MSI.

Early Xen detection, HVM refactoring, PVHVM interrupt infrastructure,
and misc Xen cleanups:

Sponsored by: Spectra Logic Corporation

Unification of PV & HVM interrupt infrastructure, bug fixes,
and misc Xen cleanups:

Submitted by: Roger Pau Monné
Sponsored by: Citrix Systems R&D

sys/x86/x86/local_apic.c:
sys/amd64/include/apicvar.h:
sys/i386/include/apicvar.h:
sys/amd64/amd64/apic_vector.S:
sys/i386/i386/apic_vector.s:
sys/amd64/amd64/machdep.c:
sys/i386/i386/machdep.c:
sys/i386/xen/exception.s:
sys/x86/include/segments.h:
Reserve IDT vector 0x93 for the Xen event channel upcall
interrupt handler. On Hypervisors that support the direct
vector callback feature, we can request that this vector be
called directly by an injected HVM interrupt event, instead
of a simulated PCI interrupt on the Xen platform PCI device.
This avoids all of the overhead of dealing with the emulated
I/O APIC and local APIC. It also means that the Hypervisor
can inject these events on any CPU, allowing upcalls for
different ports to be handled in parallel.

sys/amd64/amd64/mp_machdep.c:
sys/i386/i386/mp_machdep.c:
Map Xen per-vcpu area during AP startup.

sys/amd64/include/intr_machdep.h:
sys/i386/include/intr_machdep.h:
Increase the FreeBSD IRQ vector table to include space
for event channel interrupt sources.

sys/amd64/include/pcpu.h:
sys/i386/include/pcpu.h:
Remove Xen HVM per-cpu variable data. These fields are now
allocated via the dynamic per-cpu scheme. See xen_intr.c
for details.

sys/amd64/include/xen/hypercall.h:
sys/dev/xen/blkback/blkback.c:
sys/i386/include/xen/xenvar.h:
sys/i386/xen/clock.c:
sys/i386/xen/xen_machdep.c:
sys/xen/gnttab.c:
Prefer FreeBSD primatives to Linux ones in Xen support code.

sys/amd64/include/xen/xen-os.h:
sys/i386/include/xen/xen-os.h:
sys/xen/xen-os.h:
sys/dev/xen/balloon/balloon.c:
sys/dev/xen/blkback/blkback.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/console/xencons_ring.c:
sys/dev/xen/control/control.c:
sys/dev/xen/netback/netback.c:
sys/dev/xen/netfront/netfront.c:
sys/dev/xen/xenpci/xenpci.c:
sys/i386/i386/machdep.c:
sys/i386/include/pmap.h:
sys/i386/include/xen/xenfunc.h:
sys/i386/isa/npx.c:
sys/i386/xen/clock.c:
sys/i386/xen/mp_machdep.c:
sys/i386/xen/mptable.c:
sys/i386/xen/xen_clock_util.c:
sys/i386/xen/xen_machdep.c:
sys/i386/xen/xen_rtc.c:
sys/xen/evtchn/evtchn_dev.c:
sys/xen/features.c:
sys/xen/gnttab.c:
sys/xen/gnttab.h:
sys/xen/hvm.h:
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbus_if.m:
sys/xen/xenbus/xenbusb_front.c:
sys/xen/xenbus/xenbusvar.h:
sys/xen/xenstore/xenstore.c:
sys/xen/xenstore/xenstore_dev.c:
sys/xen/xenstore/xenstorevar.h:
Pull common Xen OS support functions/settings into xen/xen-os.h.

sys/amd64/include/xen/xen-os.h:
sys/i386/include/xen/xen-os.h:
sys/xen/xen-os.h:
Remove constants, macros, and functions unused in FreeBSD's Xen
support.

sys/xen/xen-os.h:
sys/i386/xen/xen_machdep.c:
sys/x86/xen/hvm.c:
Introduce new functions xen_domain(), xen_pv_domain(), and
xen_hvm_domain(). These are used in favor of #ifdefs so that
FreeBSD can dynamically detect and adapt to the presence of
a hypervisor. The goal is to have an HVM optimized GENERIC,
but more is necessary before this is possible.

sys/amd64/amd64/machdep.c:
sys/dev/xen/xenpci/xenpcivar.h:
sys/dev/xen/xenpci/xenpci.c:
sys/x86/xen/hvm.c:
sys/sys/kernel.h:
Refactor magic ioport, Hypercall table and Hypervisor shared
information page setup, and move it to a dedicated HVM support
module.

HVM mode initialization is now triggered during the
SI_SUB_HYPERVISOR phase of system startup. This currently
occurs just after the kernel VM is fully setup which is
just enough infrastructure to allow the hypercall table
and shared info page to be properly mapped.

sys/xen/hvm.h:
sys/x86/xen/hvm.c:
Add definitions and a method for configuring Hypervisor event
delievery via a direct vector callback.

sys/amd64/include/xen/xen-os.h:
sys/x86/xen/hvm.c:

sys/conf/files:
sys/conf/files.amd64:
sys/conf/files.i386:
Adjust kernel build to reflect the refactoring of early
Xen startup code and Xen interrupt services.

sys/dev/xen/blkback/blkback.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkfront/block.h:
sys/dev/xen/control/control.c:
sys/dev/xen/evtchn/evtchn_dev.c:
sys/dev/xen/netback/netback.c:
sys/dev/xen/netfront/netfront.c:
sys/xen/xenstore/xenstore.c:
sys/xen/evtchn/evtchn_dev.c:
sys/dev/xen/console/console.c:
sys/dev/xen/console/xencons_ring.c
Adjust drivers to use new xen_intr_*() API.

sys/dev/xen/blkback/blkback.c:
Since blkback defers all event handling to a taskqueue,
convert this task queue to a "fast" taskqueue, and schedule
it via an interrupt filter. This avoids an unnecessary
ithread context switch.

sys/xen/xenstore/xenstore.c:
The xenstore driver is MPSAFE. Indicate as much when
registering its interrupt handler.

sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbusvar.h:
Remove unused event channel APIs.

sys/xen/evtchn.h:
Remove all kernel Xen interrupt service API definitions
from this file. It is now only used for structure and
ioctl definitions related to the event channel userland
device driver.

Update the definitions in this file to match those from
NetBSD. Implementing this interface will be necessary for
Dom0 support.

sys/xen/evtchn/evtchnvar.h:
Add a header file for implemenation internal APIs related
to managing event channels event delivery. This is used
to allow, for example, the event channel userland device
driver to access low-level routines that typical kernel
consumers of event channel services should never access.

sys/xen/interface/event_channel.h:
sys/xen/xen_intr.h:
Standardize on the evtchn_port_t type for referring to
an event channel port id. In order to prevent low-level
event channel APIs from leaking to kernel consumers who
should not have access to this data, the type is defined
twice: Once in the Xen provided event_channel.h, and again
in xen/xen_intr.h. The double declaration is protected by
__XEN_EVTCHN_PORT_DEFINED__ to ensure it is never declared
twice within a given compilation unit.

sys/xen/xen_intr.h:
sys/xen/evtchn/evtchn.c:
sys/x86/xen/xen_intr.c:
sys/dev/xen/xenpci/evtchn.c:
sys/dev/xen/xenpci/xenpcivar.h:
New implementation of Xen interrupt services. This is
similar in many respects to the i386 PV implementation with
the exception that events for bound to event channel ports
(i.e. not IPI, virtual IRQ, or physical IRQ) are further
optimized to avoid mask/unmask operations that aren't
necessary for these edge triggered events.

Stubs exist for supporting physical IRQ binding, but will
need additional work before this implementation can be
fully shared between PV and HVM.

sys/amd64/amd64/mp_machdep.c:
sys/i386/i386/mp_machdep.c:
sys/i386/xen/mp_machdep.c
sys/x86/xen/hvm.c:
Add support for placing vcpu_info into an arbritary memory
page instead of using HYPERVISOR_shared_info->vcpu_info.
This allows the creation of domains with more than 32 vcpus.

sys/i386/i386/machdep.c:
sys/i386/xen/clock.c:
sys/i386/xen/xen_machdep.c:
sys/i386/xen/exception.s:
Add support for new event channle implementation.


251729 14-Jun-2013 gibbs

sys/dev/xen/netfront/netfront.c:
In netif_free(), call ifmedia_removeall() after ether_ifdetach()
so that bpf listeners are detached, any link state processing
is completed, and there is no chance for external reference to media
information.

Suggested by: yongari
MFC after: 1 week


251297 03-Jun-2013 andre

Specify a maximum TSO length limiting the segment chain to what the
Xen host side can handle after defragmentation.

This prevents the driver from throwing away too long TSO chains and
improves the performance on Amazon AWS instances with 10GigE virtual
interfaces to the normally expected throughput.

Submitted by: cperciva (earlier version)
Reviewed by: cperciva
Tested by: cperciva
MFC after: 1 week


251176 31-May-2013 gibbs

Make netif_free() safe to call on a partially initialized softc.

Sponsored by: Spectra Logic Corporation
MFC after: 1 week


250913 22-May-2013 gibbs

Correct panic on detach of Xen PV network interfaces.

dev/xen/netfront:
In netif_free(), properly stop the interface and drain any pending
timers prior to disconnecting from the backend device.

Remove all media and detach our interface object from the system
prior to deleting it.

PR: kern/176471
Submitted by: Roger Pau Monne <roger.pau@citrix.com>
Reviewed by: gibbs
MFC after: 1 week


244991 03-Jan-2013 marius

- Replace partially incorrect function names in panic(9) strings with
__func__ and add some missing ones.
- Remove a stale comment.
- Remove unused NUM_ELEMENTS macro.
- Remove extra empty lines.
- Use DEVMETHOD_END.
- Use NULL rather than 0 for pointers.

MFC after: 3 days


243857 04-Dec-2012 glebius

Mechanically substitute flags from historic mbuf allocator with
malloc(9) flags in sys/dev.


229767 07-Jan-2012 kevlo

ether_ifattach() sets if_mtu to ETHERMTU, don't bother set it again

Reviewed by: yongari


225709 21-Sep-2011 gibbs

Update netfront so that it queries and honors published
back-end features.

sys/dev/xen/netfront/netfront.c:
o Add xn_query_features() which reads the XenStore and
records the TSO, LRO, and chained ring-request support
of the backend.
o Rename xn_configure_lro() to xn_configure_features() and
use this routine to manage the setup of TSO, LRO, and
checksum offload.
o In create_netdev(), initialize if_capabilities and
if_hwassist to the capabilities found on all backends.
Delegate configuration of if_capenable and the TSO flag
if if_hwassist to xn_configure_features().

Reported by: Hugo Silva (fix inspired by patch provided)
Approved by: re
MFC after: 1 week


225708 21-Sep-2011 gibbs

Modify the netfront driver so it can successfully attach to
PV devices with the ioemu attribute set.

sys/dev/xen/netfront/netfront.c:
o If a mac address for the interface cannot be found
in the front-side XenStore tree, look for an entry
in the back-side tree. With ioemu devices, the
emulator does not populate the front side tree and
neither does Xend.
o Return an error rather than panic when an attach
attempt fails.

Reported by: Janne Snabb (fix inspired by patch provided)
PR: kern/154302
Approved by: re


225707 21-Sep-2011 gibbs

Correct suspend/resume support in the Netfront driver.

Sponsored by: BQ Internet

sys/dev/xen/netfront/netfront.c:
o Implement netfront_suspend(), a specialized suspend
handler for the netfront driver. This routine simply
disables the carrier so the driver is idle during
system suspend processing.
o Fix a leak when re-initializing LRO during a link reset.
o In netif_release_tx_bufs(), when cleaning up the grant
references for our TX ring, use gnttab_end_foreign_access_ref
instead of attempting to grant the page again.
o In netif_release_tx_bufs(), we do not track mbufs associated
with mbuf chains, but instead just free each mbuf directly.
Use m_free(), not m_freem(), to avoid double frees of mbufs.
o Refactor some code to enhance clarity.

Approved by: re
MFC after: 1 week


222975 11-Jun-2011 gibbs

Monitor and emit events for XenStore changes to XenBus trees
of the devices we manage. These changes can be due to writes
we make ourselves or due to changes made by the control domain.
The goal of these changes is to insure that all state transitions
can be detected regardless of their source and to allow common
device policies (e.g. "onlined" backend devices) to be centralized
in the XenBus bus code.

sys/xen/xenbus/xenbusvar.h:
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbus_if.m:
Add a new method for XenBus drivers "localend_changed".
This method is invoked whenever a write is detected to
a device's XenBus tree. The default implementation of
this method is a no-op.

sys/xen/xenbus/xenbus_if.m:
sys/dev/xen/netfront/netfront.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkback/blkback.c:
Change the signature of the "otherend_changed" method.
This notification cannot fail, so it should return void.

sys/xen/xenbus/xenbusb_back.c:
Add "online" device handling to the XenBus Back Bus
support code. An online backend device remains active
after a front-end detaches as a reconnect is expected
to occur in the near future.

sys/xen/interface/io/xenbus.h:
Add comment block further explaining the meaning and
driver responsibilities associated with the XenBus
Closed state.

sys/xen/xenbus/xenbusb.c:
sys/xen/xenbus/xenbusb.h:
sys/xen/xenbus/xenbusb_back.c:
sys/xen/xenbus/xenbusb_front.c:
sys/xen/xenbus/xenbusb_if.m:
o Register a XenStore watch against the local XenBus tree
for all devices.
o Cache the string length of the path to our local tree.
o Allow the xenbus front and back drivers to hook/filter both
local and otherend watch processing.
o Update the device ivar version of "state" when we detect
a XenStore update of that node.

sys/dev/xen/control/control.c:
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbusb.c:
sys/xen/xenbus/xenbusb.h:
sys/xen/xenbus/xenbusvar.h:
sys/xen/xenstore/xenstorevar.h:
Allow clients of the XenStore watch mechanism to attach
a single uintptr_t worth of client data to the watch.
This removes the need to carefully place client watch
data within enclosing objects so that a cast or offsetof
calculation can be used to convert from watch to enclosing
object.

Sponsored by: Spectra Logic Corporation
MFC after: 1 week


221130 27-Apr-2011 bz

Make various (pseudo) interfaces compile without INET in the kernel
adding appropriate #ifdefs. For module builds the framework needs
adjustments for at least carp.

Reviewed by: gnn
Sponsored by: The FreeBSD Foundation
Sponsored by: iXsystems
MFC after: 4 days


218056 29-Jan-2011 gibbs

Fix bug in the netfront driver that caused excessive packet drops during
receive processing.

Remove unnecessary restrictions on the mbuf chain length built during an
LRO receive. This restriction was copied from the Linux netfront driver
where the LRO implementation cannot handle more than 18 discontinuities.
The FreeBSD implementation has no such restriction.

MFC after: 1 week


216956 04-Jan-2011 rwatson

Make "options XENHVM" compile for i386, not just amd64 -- a largely
mechanical change. This opens the door for using PV device drivers
under Xen HVM on i386, as well as more general harmonisation of i386
and amd64 Xen support in FreeBSD.

Reviewed by: cperciva
MFC after: 3 weeks


214077 19-Oct-2010 gibbs

Improve the Xen para-virtualized device infrastructure of FreeBSD:

o Add support for backend devices (e.g. blkback)
o Implement extensions to the Xen para-virtualized block API to allow
for larger and more outstanding I/Os.
o Import a completely rewritten block back driver with support for fronting
I/O to both raw devices and files.
o General cleanup and documentation of the XenBus and XenStore support code.
o Robustness and performance updates for the block front driver.
o Fixes to the netfront driver.

Sponsored by: Spectra Logic Corporation

sys/xen/xenbus/init.txt:
Deleted: This file explains the Linux method for XenBus device
enumeration and thus does not apply to FreeBSD's NewBus approach.

sys/xen/xenbus/xenbus_probe_backend.c:
Deleted: Linux version of backend XenBus service routines. It
was never ported to FreeBSD. See xenbusb.c, xenbusb_if.m,
xenbusb_front.c xenbusb_back.c for details of FreeBSD's XenBus
support.

sys/xen/xenbus/xenbusvar.h:
sys/xen/xenbus/xenbus_xs.c:
sys/xen/xenbus/xenbus_comms.c:
sys/xen/xenbus/xenbus_comms.h:
sys/xen/xenstore/xenstorevar.h:
sys/xen/xenstore/xenstore.c:
Split XenStore into its own tree. XenBus is a software layer built
on top of XenStore. The old arrangement and the naming of some
structures and functions blurred these lines making it difficult to
discern what services are provided by which layer and at what times
these services are available (e.g. during system startup and shutdown).

sys/xen/xenbus/xenbus_client.c:
sys/xen/xenbus/xenbus.c:
sys/xen/xenbus/xenbus_probe.c:
sys/xen/xenbus/xenbusb.c:
sys/xen/xenbus/xenbusb.h:
Split up XenBus code into methods available for use by client
drivers (xenbus.c) and code used by the XenBus "bus code" to
enumerate, attach, detach, and service bus drivers.

sys/xen/reboot.c:
sys/dev/xen/control/control.c:
Add a XenBus front driver for handling shutdown, reboot, suspend, and
resume events published in the XenStore. Move all PV suspend/reboot
support from reboot.c into this driver.

sys/xen/blkif.h:
New file from Xen vendor with macros and structures used by
a block back driver to service requests from a VM running a
different ABI (e.g. amd64 back with i386 front).

sys/conf/files:
Adjust kernel build spec for new XenBus/XenStore layout and added
Xen functionality.

sys/dev/xen/balloon/balloon.c:
sys/dev/xen/netfront/netfront.c:
sys/dev/xen/blkfront/blkfront.c:
sys/xen/xenbus/...
sys/xen/xenstore/...
o Rename XenStore APIs and structures from xenbus_* to xs_*.
o Adjust to use of M_XENBUS and M_XENSTORE malloc types for allocation
of objects returned by these APIs.
o Adjust for changes in the bus interface for Xen drivers.

sys/xen/xenbus/...
sys/xen/xenstore/...
Add Doxygen comments for these interfaces and the code that
implements them.

sys/dev/xen/blkback/blkback.c:
o Rewrite the Block Back driver to attach properly via newbus,
operate correctly in both PV and HVM mode regardless of domain
(e.g. can be in a DOM other than 0), and to deal with the latest
metadata available in XenStore for block devices.

o Allow users to specify a file as a backend to blkback, in addition
to character devices. Use the namei lookup of the backend path
to automatically configure, based on file type, the appropriate
backend method.

The current implementation is limited to a single outstanding I/O
at a time to file backed storage.

sys/dev/xen/blkback/blkback.c:
sys/xen/interface/io/blkif.h:
sys/xen/blkif.h:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkfront/block.h:
Extend the Xen blkif API: Negotiable request size and number of
requests.

This change extends the information recorded in the XenStore
allowing block front/back devices to negotiate for optimal I/O
parameters. This has been achieved without sacrificing backward
compatibility with drivers that are unaware of these protocol
enhancements. The extensions center around the connection protocol
which now includes these additions:

o The back-end device publishes its maximum supported values for,
request I/O size, the number of page segments that can be
associated with a request, the maximum number of requests that
can be concurrently active, and the maximum number of pages that
can be in the shared request ring. These values are published
before the back-end enters the XenbusStateInitWait state.

o The front-end waits for the back-end to enter either the InitWait
or Initialize state. At this point, the front end limits it's
own capabilities to the lesser of the values it finds published
by the backend, it's own maximums, or, should any back-end data
be missing in the store, the values supported by the original
protocol. It then initializes it's internal data structures
including allocation of the shared ring, publishes its maximum
capabilities to the XenStore and transitions to the Initialized
state.

o The back-end waits for the front-end to enter the Initalized
state. At this point, the back end limits it's own capabilities
to the lesser of the values it finds published by the frontend,
it's own maximums, or, should any front-end data be missing in
the store, the values supported by the original protocol. It
then initializes it's internal data structures, attaches to the
shared ring and transitions to the Connected state.

o The front-end waits for the back-end to enter the Connnected
state, transitions itself to the connected state, and can
commence I/O.

Although an updated front-end driver must be aware of the back-end's
InitWait state, the back-end has been coded such that it can
tolerate a front-end that skips this step and transitions directly
to the Initialized state without waiting for the back-end.

sys/xen/interface/io/blkif.h:
o Increase BLKIF_MAX_SEGMENTS_PER_REQUEST to 255. This is
the maximum number possible without changing the blkif
request header structure (nr_segs is a uint8_t).

o Add two new constants:
BLKIF_MAX_SEGMENTS_PER_HEADER_BLOCK, and
BLKIF_MAX_SEGMENTS_PER_SEGMENT_BLOCK. These respectively
indicate the number of segments that can fit in the first
ring-buffer entry of a request, and for each subsequent
(sg element only) ring-buffer entry associated with the
"header" ring-buffer entry of the request.

o Add the blkif_request_segment_t typedef for segment
elements.

o Add the BLKRING_GET_SG_REQUEST() macro which wraps the
RING_GET_REQUEST() macro and returns a properly cast
pointer to an array of blkif_request_segment_ts.

o Add the BLKIF_SEGS_TO_BLOCKS() macro which calculates the
number of ring entries that will be consumed by a blkif
request with the given number of segments.

sys/xen/blkif.h:
o Update for changes in interface/io/blkif.h macros.

o Update the BLKIF_MAX_RING_REQUESTS() macro to take the
ring size as an argument to allow this calculation on
multi-page rings.

o Add a companion macro to BLKIF_MAX_RING_REQUESTS(),
BLKIF_RING_PAGES(). This macro determines the number of
ring pages required in order to support a ring with the
supplied number of request blocks.

sys/dev/xen/blkback/blkback.c:
sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkfront/block.h:
o Negotiate with the other-end with the following limits:
Reqeust Size: MAXPHYS
Max Segments: (MAXPHYS/PAGE_SIZE) + 1
Max Requests: 256
Max Ring Pages: Sufficient to support Max Requests with
Max Segments.

o Dynamically allocate request pools and segemnts-per-request.

o Update ring allocation/attachment code to support a
multi-page shared ring.

o Update routines that access the shared ring to handle
multi-block requests.

sys/dev/xen/blkfront/blkfront.c:
o Track blkfront allocations in a blkfront driver specific
malloc pool.

o Strip out XenStore transaction retry logic in the
connection code. Transactions only need to be used when
the update to multiple XenStore nodes must be atomic.
That is not the case here.

o Fully disable blkif_resume() until it can be fixed
properly (it didn't work before this change).

o Destroy bus-dma objects during device instance tear-down.

o Properly handle backend devices with powef-of-2 sector
sizes larger than 512b.

sys/dev/xen/blkback/blkback.c:
Advertise support for and implement the BLKIF_OP_WRITE_BARRIER
and BLKIF_OP_FLUSH_DISKCACHE blkif opcodes using BIO_FLUSH and
the BIO_ORDERED attribute of bios.

sys/dev/xen/blkfront/blkfront.c:
sys/dev/xen/blkfront/block.h:
Fix various bugs in blkfront.

o gnttab_alloc_grant_references() returns 0 for success and
non-zero for failure. The check for < 0 is a leftover
Linuxism.

o When we negotiate with blkback and have to reduce some of our
capabilities, print out the original and reduced capability before
changing the local capability. So the user now gets the correct
information.

o Fix blkif_restart_queue_callback() formatting. Make sure we hold
the mutex in that function before calling xb_startio().

o Fix a couple of KASSERT()s.

o Fix a check in the xb_remove_* macro to be a little more specific.

sys/xen/gnttab.h:
sys/xen/gnttab.c:
Define GNTTAB_LIST_END publicly as GRANT_REF_INVALID.

sys/dev/xen/netfront/netfront.c:
Use GRANT_REF_INVALID instead of driver private definitions of the
same constant.

sys/xen/gnttab.h:
sys/xen/gnttab.c:
Add the gnttab_end_foreign_access_references() API.

This API allows a client to batch the release of an array of grant
references, instead of coding a private for loop. The implementation
takes advantage of this batching to reduce lock overhead to one
acquisition and release per-batch instead of per-freed grant reference.

While here, reduce the duration the gnttab_list_lock is held during
gnttab_free_grant_references() operations. The search to find the
tail of the incoming free list does not rely on global state and so
can be performed without holding the lock.

sys/dev/xen/xenpci/evtchn.c:
sys/dev/xen/evtchn/evtchn.c:
sys/xen/xen_intr.h:
o Implement the bind_interdomain_evtchn_to_irqhandler API for HVM mode.
This allows an HVM domain to serve back end devices to other domains.
This API is already implemented for PV mode.

o Synchronize the API between HVM and PV.

sys/dev/xen/xenpci/xenpci.c:
o Scan the full region of CPUID space in which the Xen VMM interface
may be implemented. On systems using SuSE as a Dom0 where the
Viridian API is also exported, the VMM interface is above the region
we used to search.

o Pass through bus_alloc_resource() calls so that XenBus drivers
attaching on an HVM system can allocate unused physical address
space from the nexus. The block back driver makes use of this
facility.

sys/i386/xen/xen_machdep.c:
Use the correct type for accessing the statically mapped xenstore
metadata.

sys/xen/interface/hvm/params.h:
sys/xen/xenstore/xenstore.c:
Move hvm_get_parameter() to the correct global header file instead
of as a private method to the XenStore.

sys/xen/interface/io/protocols.h:
Sync with vendor.

sys/xeninterface/io/ring.h:
Add macro for calculating the number of ring pages needed for an N
deep ring.

To avoid duplication within the macros, create and use the new
__RING_HEADER_SIZE() macro. This macro calculates the size of the
ring book keeping struct (producer/consumer indexes, etc.) that
resides at the head of the ring.

Add the __RING_PAGES() macro which calculates the number of shared
ring pages required to support a ring with the given number of
requests.

These APIs are used to support the multi-page ring version of the
Xen block API.

sys/xeninterface/io/xenbus.h:
Add Comments.

sys/xen/xenbus/...
o Refactor the FreeBSD XenBus support code to allow for both front and
backend device attachments.

o Make use of new config_intr_hook capabilities to allow front and back
devices to be probed/attached in parallel.

o Fix bugs in probe/attach state machine that could cause the system to
hang when confronted with a failure either in the local domain or in
a remote domain to which one of our driver instances is attaching.

o Publish all required state to the XenStore on device detach and
failure. The majority of the missing functionality was for serving
as a back end since the typical "hot-plug" scripts in Dom0 don't
handle the case of cleaning up for a "service domain" that is not
itself.

o Add dynamic sysctl nodes exposing the generic ivars of
XenBus devices.

o Add doxygen style comments to the majority of the code.

o Cleanup types, formatting, etc.

sys/xen/xenbus/xenbusb.c:
Common code used by both front and back XenBus busses.

sys/xen/xenbus/xenbusb_if.m:
Method definitions for a XenBus bus.

sys/xen/xenbus/xenbusb_front.c:
sys/xen/xenbus/xenbusb_back.c:
XenBus bus specialization for front and back devices.

MFC after: 1 month


208901 08-Jun-2010 ken

A number of netfront fixes and stability improvements:

- Re-enable TSO. This was broken previously due to CSUM_TSO clearing the
CSUM_TCP flag, so our checksum flags were incorrectly set going to the
netback driver. That was fixed in r206844 in tcp_output.c, so we can
turn TSO back on here.

- Fix the way transmit slots are calculated, so that we can't overfill
the ring.

- Avoid sending packets with more fragments/segments than netback can
handle. The Linux netback code can only handle packets of
MAX_SKB_FRAGS, which turns out to be 18 on machines with 4K pages. We
can easily generate packets with 32 or so fragments with TSO turned on.
Right now the solution is just to drop the packets (since netback
doesn't seem to handle it gracefully), but we should come up with a way
to allow a driver to tell the TCP stack the maximum number of fragments
it can handle in a single packet.

- Fix the way the consumer is tracked in the receive path. It could get
out of sync fairly easily.

- Use standard Xen ring macros to make it clearer how netfront is using
the rings.

- Get rid of Linux-ish negative errno return values.

- Added more documentation to the driver.

- Refactored code to make it easier to read.

- Some other minor fixes.

Reviewed by: gibbs

Reviewed by: gibbs
Sponsored by: Spectra Logic
MFC after: 7 days


207673 05-May-2010 joel

Switch to our preferred 2-clause BSD license.

Approved by: kmacy


204158 21-Feb-2010 kmacy

- make printf conditional
- fix witness warnings by making configuration lock a mutex


199997 01-Dec-2009 gibbs

Add media ioctl support and link notifications so that devd will attempt
to run dhclient on a netfront (xn) device that is setup for DHCP in
/etc/rc.conf.

PR: kern/136251 (fixed differently than the submitted patch)


199549 19-Nov-2009 jhb

Remove commented out reference to if_watchdog and an assignment of zero to
if_timer.

Reviewed by: scottl


196327 17-Aug-2009 jhb

- Remove self-referential mergeinfo from xen/netfront and xen/xenpci that
claims those directories were merged into themselves.
- Remove mergeinfo on xen/xenpci that claims the stable/7 xenpci was merged
into head.

Approved by: re (mergeinfo blanket)


194130 13-Jun-2009 kmacy

update backend_changed to reflect .m prototype


193618 07-Jun-2009 adrian

Fix compilation when compiled w/out WITNESS.

Submitted by: Edwin Shao <poleris@gmail.com>


192927 27-May-2009 adrian

Delete useless #ifdef; make it more obvious if setting TSO fails.


192894 27-May-2009 adrian

Clear IFF_DRV_OACTIVE if at least one TX xen/mbuf ring slot has been freed.


192876 27-May-2009 adrian

Enforce that there are actually enough xenbus TX ring descriptors available
before attempting to queue the packet.


192875 27-May-2009 adrian

Comment tidyup; comment where the next explicit check should
appear.


192871 27-May-2009 adrian

Ensure that there are enough TX mbuf ring slots available before beginning
to dequeue a packet.

The tx path was trying to ensure that enough Xenbus TX ring slots existed but
it didn't check to see whether the mbuf TX ring slots were also available.
They get freed in xn_txeof() which occurs after transmission, rather than earlier
on in the process. (The same happens under Linux too.)

Due to whatever reason (CPU use, scheduling, memory constraints, whatever) the
mbuf TX ring may not have enough slots free and would allocate slot 0. This is
used as the freelist head pointer to represent "free" mbuf TX ring slots; setting
this to an actual mbuf value rather than an id crashes the code.

This commit introduces some basic code to track the TX mbuf ring use and then
(hopefully!) ensures that enough slots are free in said TX mbuf ring before it
enters the actual work loop.

A few notes:

* Similar logic needs to be introduced to check there are enough actual slots
available in the xenbuf TX ring. There's some logic which is invoked earlier
but it doesn't hard-check against the number of available ring slots.
Its trivial to do; I'll do it in a subsequent commit.

* As I've now commented in the source, it is likely possible to deadlock the
driver under certain conditions where the rings aren't receiving any changes
(which I should enumerate) and thus Xen doesn't send any further software
interrupts. I need to make sure that the timer(s) are running right and
the queues are periodically kicked.

PR: 134926


192870 27-May-2009 adrian

Do the invariant check before the mbuf is dereferenced.


192869 27-May-2009 adrian

Flesh out some inline documentation which hopefully reflect the intended
reality of these functions.


192868 27-May-2009 adrian

Add in some INVARIANT checks in the TX mbuf descriptor "freelist" management code.

Slot 0 must always remain "free" and be a pointer to the first free entry in the
mbuf descriptor list. It is thus an error to have code allocate or push slot 0
back into the list.


192286 18-May-2009 adrian

The merge in r189699 reverted part of the work done in a previous commit
(r188036.)

Re-revert that change so the Xen networking functions again.


190633 01-Apr-2009 piso

Implement an ipfw action to reassemble ip packets: reass.


190581 30-Mar-2009 mav

Integrate user/mav/ata branch:

Add ch_suspend/ch_resume methods for PCI controllers and implement them
for AHCI. Refactor AHCI channel initialization according to it.

Fix Port Multipliers operation. It is far from perfect yet, but works now.
Tested with JMicron JMB363 AHCI + SiI 3726 PMP pair.
Previous version was also tested with SiI 4726 PMP.

Hardware sponsored by: Vitsch Electronics / VEHosting.nl


189699 11-Mar-2009 dfr

Merge in support for Xen HVM on amd64 architecture.


188198 05-Feb-2009 kmacy

fix non-witness compile


188036 02-Feb-2009 kmacy

break out of loop if we run out of mbufs


186557 29-Dec-2008 kmacy

merge 186535, 186537, and 186538 from releng_7_xen

Log:
- merge in latest xenbus from dfr's xenhvm
- fix race condition in xs_read_reply by converting tsleep to mtx_sleep

Log:
unmask evtchn in bind_{virq, ipi}_to_irq

Log:
- remove code for handling case of not being able to sleep
- eliminate tsleep - make sleeps atomic


185605 04-Dec-2008 kmacy

Integrate 185578 from dfr
Use newbus to managed devices


185473 30-Nov-2008 dfr

Don't call ether_ioctl() with locks held. Loop in xn_rxeof() until the backend
stops adding stuff to the ring otherwise we miss RX interrupts which kills
performance.


183375 26-Sep-2008 kmacy

Update xen/interface includes to the latest in mercurial

MFC after: 1 month


183341 25-Sep-2008 kmacy

reflect header change in netfront

MFC after: 1 month


181945 21-Aug-2008 kmacy

For reasons that I have not delved in to Xen 3.2 netback now does header splitting
so packets > 128 bytes are now split in to multiple buffer. This fixes netfront
to handle multiple buffers per rx packet.

MFC after: 1 month


181916 20-Aug-2008 kmacy

change netfront to match xen31_6
fix console locking


181910 20-Aug-2008 kmacy

include vmparam.h for KERNBASE and fix typo


181909 20-Aug-2008 kmacy

register netfront before xenbus does its probing

MFC after: 1 month


181643 12-Aug-2008 kmacy

Import Xen paravirtual drivers.

MFC after: 2 weeks