]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC r215818, r216405, r216437, r216448, r216956, r221827, r222975, r223059,
authorken <ken@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 15 Feb 2012 14:23:01 +0000 (14:23 +0000)
committerken <ken@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 15 Feb 2012 14:23:01 +0000 (14:23 +0000)
commita34dc4ff6c8c845e75caa096eb807b1c63cbf351
treebcf751490061287412aaa19b73a7eaf50c824d81
parentc8655c50f7514daff357ce3bd3a93cef17697e1f
MFC r215818, r216405, r216437, r216448, r216956, r221827, r222975, r223059,
r225343, r225704, r225705, r225706, r225707, r225709, r226029, r220647,
r230183, r230587, r230916, r228526, r230879:

Bring Xen support in stable/8 up to parity with head.  Almost all
outstanding Xen support differences between head and stable/8 are included,
except for the just added r231743.

  r215818 | cperciva | 2010-11-25 08:05:21 -0700 (Thu, 25 Nov 2010) | 5 lines

  Rename HYPERVISOR_multicall (which performs the multicall hypercall) to
  _HYPERVISOR_multicall, and create a new HYPERVISOR_multicall function which
  invokes _HYPERVISOR_multicall and checks that the individual hypercalls all
  succeeded.

  r216405 | rwatson | 2010-12-13 05:15:46 -0700 (Mon, 13 Dec 2010) | 7 lines

  Add options NO_ADAPTIVE_SX to the XENHVM kernel configuration, matching
  its similar disabling of adaptive mutexes and rwlocks.  The existing
  comment on why this is the case also applies to sx locks.

  MFC after: 3 days
  Discussed with: attilio

  r216437 | gibbs | 2010-12-14 10:23:49 -0700 (Tue, 14 Dec 2010) | 2 lines

  Remove spurious printf left over from debugging our XenStore support.

  r216448 | gibbs | 2010-12-14 13:57:40 -0700 (Tue, 14 Dec 2010) | 4 lines

  Fix a typo in a comment.

  Noticed by: Attila Nagy <bra@fsn.hu>

  r216956 | rwatson | 2011-01-04 07:49:54 -0700 (Tue, 04 Jan 2011) | 8 lines

  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

  r221827 | mav | 2011-05-12 21:40:16 -0600 (Thu, 12 May 2011) | 2 lines

  Fix msleep() usage in Xen balloon driver to not wake up on every HZ tick.

  r222975 | gibbs | 2011-06-10 22:59:01 -0600 (Fri, 10 Jun 2011) | 63 lines

  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

  r223059 | gibbs | 2011-06-13 14:36:29 -0600 (Mon, 13 Jun 2011) | 36 lines

  Several enhancements to the Xen block back driver.

  sys/dev/xen/blkback/blkback.c:
   o Implement front-end request coalescing.  This greatly improves the
     performance of front-end clients that are unaware of the dynamic
     request-size/number of requests negotiation available in the
     FreeBSD backend driver.  This required a large restructuring
     in how this driver records in-flight transactions and how those
     transactions are mapped into kernel KVA.  For example, the driver
     now includes a mini "KVA manager" that allocates ranges of
     contiguous KVA to patches of requests that are physically
     contiguous in the backing store so that a single bio or UIO
     segment can be used to represent the I/O.

   o Refuse to open any backend files or devices if the system
     has yet to mount root.  This avoids a panic.

   o Properly handle "onlined" devices.  An "onlined" backend
     device stays attached to its backing store across front-end
     disconnections.  This feature is intended to reduce latency
     when a front-end does a hand-off to another driver (e.g.
     PV aware bootloader to OS kernel) or during a VM reboot.

   o Harden the driver against a pathological/buggy front-end
     by carefully vetting front-end XenStore data such as the
     front-end state.

   o Add sysctls that report the negotiated number of
     segments per-request and the number of requests that
     can be concurrently in flight.

  Submitted by: kdm
  Reviewed by: gibbs
  Sponsored by: Spectra Logic Corporation
  MFC after: 1 week

  r225343 | rwatson | 2011-09-02 11:36:01 -0600 (Fri, 02 Sep 2011) | 7 lines

  Add support for alternative break-to-debugger support on the Xen console.
  This should help debug boot-time hangs experienced in 9.0-BETA.

  MFC after: 3 weeks
  Tested by: sbruno
  Approved by: re (kib)

  r225704 | gibbs | 2011-09-20 17:44:34 -0600 (Tue, 20 Sep 2011) | 29 lines

  Properly handle suspend/resume events in the Xen device framework.

  Sponsored by: BQ Internet

  sys/xen/xenbus/xenbusb.c:
   o In xenbusb_resume(), publish the state transition of the
     resuming device into XenbusStateIntiailising so that the
     remote peer can see it.  Recording the state locally is
     not sufficient to trigger a re-connect sequence.
   o In xenbusb_resume(), defer new-bus resume processing until
     after the remote peer's XenStore address has been updated.
     The drivers may need to refer to this information during
     resume processing.

  sys/xen/xenbus/xenbusb_back.c:
  sys/xen/xenbus/xenbusb_front.c:
   Register xenbusb_resume() rather than bus_generic_resume()
   as the handler for device_resume events.

  sys/xen/xenstore/xenstore.c:
   o Fix grammer in a comment.
   o In xs_suspend(), pass suspend events on to the child
     devices (e.g. xenbusb_front/back, that are attached
     to the XenStore.

  Approved by: re
  MFC after: 1 week

  r225705 | gibbs | 2011-09-20 18:02:44 -0600 (Tue, 20 Sep 2011) | 35 lines

  Add suspend/resume support to the Xen blkfront driver.

  Sponsored by: BQ Internet

  sys/dev/xen/blkfront/block.h:
  sys/dev/xen/blkfront/blkfront.c:
   Remove now unused blkif_vdev_t from the blkfront soft.

  sys/dev/xen/blkfront/blkfront.c:
   o In blkfront_suspend(), indicate the desire to suspend
     by changing the softc connected state to SUSPENDED, and
     then wait for any I/O pending on the remote peer to
     drain.  Cancel suspend processing if I/O does not
     drain within 30 seconds.
   o Enable and update blkfront_resume().  Since I/O is
     drained prior to the suspension of the VM, the complicated
     recovery process performed by other Xen blkfront
     implementations is avoided.  We simply tear down the
     connection to our old peer, and then re-connect.
   o In blkif_initialize(), fix a resource leak and botched
     return if we cannot allocate shadow memory for our
     requests.
   o In blkfront_backend_changed(), correct our response to
     the XenbusStateInitialised state.  This state indicates
     that our backend peer has published sufficient data for
     blkfront to publish ring information and other XenStore
     data, not that a connection can occur.  Blkfront now
     will only perform connection processing in response to
     the XenbusStateConnected state.  This corrects an issue
     where blkfront connected before the backend was ready
     during resume processing.

  Approved by: re
  MFC after: 1 week

  r225706 | gibbs | 2011-09-20 18:06:02 -0600 (Tue, 20 Sep 2011) | 11 lines

  [ Forced commit.  Actual changes accidentally included in r225704 ]

  sys/dev/xen/control/control.c:
   Fix locking violations in Xen HVM suspend processing
   and have it perform similar actions to those performed
   during an ACPI triggered suspend.

  Sponsored by: BQ Internet
  Approved by: re
  MFC after: 1 week

  r225707 | gibbs | 2011-09-20 18:08:25 -0600 (Tue, 20 Sep 2011) | 21 lines

  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

  r225709 | gibbs | 2011-09-20 18:15:29 -0600 (Tue, 20 Sep 2011) | 19 lines

  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

  r226029 | jkim | 2011-10-04 17:53:47 -0600 (Tue, 04 Oct 2011) | 2 lines

  Add strnlen() to libkern.

  r220647 | jkim | 2011-04-14 16:17:39 -0600 (Thu, 14 Apr 2011) | 4 lines

  Add event handlers for (ACPI) suspend/resume events.  Suspend event handlers
  are invoked right before device drivers go into sleep state and resume event
  handlers are invoked right after all device drivers are waken up.

  r230183 | cperciva | 2012-01-15 19:38:45 -0700 (Sun, 15 Jan 2012) | 3 lines

  Make XENHVM work on i386.  The __ffs() function counts bits starting from
  zero, unlike ffs(3), which starts counting from 1.

  r230587 | ken | 2012-01-26 09:35:09 -0700 (Thu, 26 Jan 2012) | 38 lines

  Xen netback driver rewrite.

  share/man/man4/Makefile,
  share/man/man4/xnb.4,
  sys/dev/xen/netback/netback.c,
  sys/dev/xen/netback/netback_unit_tests.c:

   Rewrote the netback driver for xen to attach properly via newbus
   and work properly in both HVM and PVM mode (only HVM is tested).
   Works with the in-tree FreeBSD netfront driver or the Windows
   netfront driver from SuSE.  Has not been extensively tested with
   a Linux netfront driver.  Does not implement LRO, TSO, or
   polling.  Includes unit tests that may be run through sysctl
   after compiling with XNB_DEBUG defined.

  sys/dev/xen/blkback/blkback.c,
  sys/xen/interface/io/netif.h:

   Comment elaboration.

  sys/kern/uipc_mbuf.c:

   Fix page fault in kernel mode when calling m_print() on a
   null mbuf.  Since m_print() is only used for debugging, there
   are no performance concerns for extra error checking code.

  sys/kern/subr_scanf.c:

   Add the "hh" and "ll" width specifiers from C99 to scanf().
   A few callers were already using "ll" even though scanf()
   was handling it as "l".

  Submitted by: Alan Somers <alans@spectralogic.com>
  Submitted by: John Suykerbuyk <johns@spectralogic.com>
  Sponsored by: Spectra Logic
  MFC after: 1 week
  Reviewed by: ken

  r230916 | ken | 2012-02-02 10:54:35 -0700 (Thu, 02 Feb 2012) | 13 lines

  Fix the netback driver build for i386.

  netback.c: Add missing VM includes.

  xen/xenvar.h,
  xen/xenpmap.h: Move some XENHVM macros from <machine/xen/xenpmap.h> to
   <machine/xen/xenvar.h> on i386 to match the amd64 headers.

  conf/files: Add netback to the build.

  Submitted by: jhb
  MFC after: 3 days

  r228526 | kevlo | 2011-12-14 23:29:13 -0700 (Wed, 14 Dec 2011) | 2 lines

  s/timout/timeout

  r230879 | ken | 2012-02-01 13:19:33 -0700 (Wed, 01 Feb 2012) | 4 lines

  Add the GSO prefix descriptor define.

  MFC after: 3 days

git-svn-id: svn://svn.freebsd.org/base/stable/8@231759 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
41 files changed:
share/man/man4/Makefile
share/man/man4/xnb.4 [new file with mode: 0644]
sys/amd64/conf/XENHVM
sys/conf/files
sys/dev/acpica/acpi.c
sys/dev/esp/ncr53c9x.c
sys/dev/twa/tw_osl.h
sys/dev/xen/balloon/balloon.c
sys/dev/xen/blkback/blkback.c
sys/dev/xen/blkfront/blkfront.c
sys/dev/xen/blkfront/block.h
sys/dev/xen/console/console.c
sys/dev/xen/control/control.c
sys/dev/xen/netback/netback.c
sys/dev/xen/netback/netback_unit_tests.c [new file with mode: 0644]
sys/dev/xen/netfront/netfront.c
sys/dev/xen/xenpci/evtchn.c
sys/i386/include/pcpu.h
sys/i386/include/pmap.h
sys/i386/include/xen/hypercall.h
sys/i386/include/xen/xen-os.h
sys/i386/include/xen/xenpmap.h
sys/i386/include/xen/xenvar.h
sys/i386/xen/xen_machdep.c
sys/kern/subr_scanf.c
sys/kern/uipc_mbuf.c
sys/libkern/strnlen.c [new file with mode: 0644]
sys/sys/eventhandler.h
sys/sys/libkern.h
sys/xen/interface/io/netif.h
sys/xen/interface/io/xenbus.h
sys/xen/xenbus/xenbus.c
sys/xen/xenbus/xenbus_if.m
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
sys/xen/xenbus/xenbusvar.h
sys/xen/xenstore/xenstore.c
sys/xen/xenstore/xenstorevar.h