[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v2 0/7] Implement forced unplug and forced activation



The goal of these two features is to simplify driver servicing and avoid
requiring storing driver state in Registry.

Forced unplug, as name implies, forcefully unplugs emulated devices when
a driver is present, rather than when it's active. It defines a Registry
key at CurrentControlSet\XEN\ForceUnplug. Drivers can opt into forced
unplug by creating an appropriate value (DISKS/NICS) in this key.

Forced activation is the companion to forced unplug. It aims to make
activation of Xenbus FDOs deterministic and stateless, using a
precedence mapping based on device IDs, prioritizing the vendor device
over the generic ones. This avoids situations where the wrong FDO is
activated, which will prevent Windows Update from working.

With forced activation, Xenfilt is now installed via INF on top of the
current installation routines. This means PV drivers can be injected
offline without needing another reboot to be reconfigured.

To avoid affecting older drivers, the two features are conditioned
behind new build variables FORCE_UNPLUG and FORCE_ACTIVATE.

The following scenarios have been successfully tested, both requiring
only one reboot:
* Offline driver installation via DISM
* Toggling vendor device

Tu Dinh (7):
  Add forced unplug support
  xenfilt: Add Xenbus device precedence mechanism
  Add EMULATED v3
  xenbus: Use nonpaged pool in FdoQueryId
  Use EMULATED v3 to force activate Xenbus FDOs
  Enable Xenbus precedence
  Install Xenfilt with INF AddReg

 include/emulated_interface.h |  52 ++++++++++++---
 include/revision.h           |   3 +-
 scripts/genfiles.ps1         |   2 +
 src/xen/driver.c             |  79 ++++++++++++++++++-----
 src/xen/driver.h             |   5 ++
 src/xen/unplug.c             |  13 +++-
 src/xenbus.inf               |  11 ++++
 src/xenbus/fdo.c             | 122 +++++++++++++++++++++++++----------
 src/xenfilt/driver.c         |  51 ++++++++++++++-
 src/xenfilt/driver.h         |   7 ++
 src/xenfilt/emulated.c       |  62 ++++++++++++++++--
 src/xenfilt/emulated.h       |   1 +
 src/xenfilt/fdo.c            |  25 ++++++-
 src/xenfilt/pdo.c            |  80 +++++++++++++++++++----
 src/xenfilt/pdo.h            |  10 ++-
 15 files changed, 435 insertions(+), 88 deletions(-)

-- 
2.50.1.windows.1



Ngoc Tu Dinh | Vates XCP-ng Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.