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

Re: [PATCH v2 0/5] Remove CoInstallers



This is referring to XenBus's coinstaller checking DriverDesc of the current driver and PRODUCT_NAME_STR

Owen

On Thu, Sep 28, 2023 at 1:15 PM Paul Durrant <xadimgnik@xxxxxxxxx> wrote:
[CAUTION - EXTERNAL EMAIL] DO NOT reply, click links, or open attachments unless you have verified the sender and know the content is safe.

On 13/09/2023 15:15, Owen Smith wrote:
> Windows 11 22H2 WHQL testing has highlighted the need to remove CoInstallers.
> The current CoInstaller handle several edge cases that will need replacement
> implementations. This patch series for most drivers offers a potential solution
> to the removal of CoInstallers and the required changes to avoid upgrade issues.
>
> CoInstallers have several uses currently:
> - Adds an upgrade block function with the "AllowUpgrade" value blocking driver
>    upgrades when set.
> - Adds a check to prevent XenBus upgrades from a different vendor / brand.

BTW I guess you meant XenVif here :-)

   Paul

>    This checks the current device name (if it exists) matches the new device name.
> - Checks all currently installed child devices have a supported set of interfaces
>    common with the new parent device.
> - Clears the Unplug keys only when required.
> - Correctly cleans up user mode services on uninstall.
>
> The AllowUpgrade function has not been replaced - I have not seen this used in
> the current implementations of the drivers.
>
> The vendor naming check is specific to XenBus, and I dont think there is a
> reliable replacement, and was intended to prevent different vendor drivers from
> attempting to coexist, or upgrade cases from particularly old versions which had
> a different naming scheme.
>
> The interface compatability checks can be replaced with the matching if RevisionIDs
> in the INF files, so that child devices will only install on parent devices that
> expose a matching HardwareID or CompatibleID. This does leave the case where the
> new parent driver could drop support for an interface version that is currently in
> use. This will mandate a further driver upgrade, and should remove the Unplug keys
> and mandate a reboot where the emulated devices are present, to ensure continued
> operation. After this reboot using emulated devices, updates to the child devices
> should be detected and installed, requiring another reboot to revert to PV devices.
>
> Unplug keys getting cleared on all upgrades should allow the next boot to use emulated
> devices, unless a subsequent install updates dependent drivers to use a working set
> of new interfaces. The requirement here is that updating any driver should always
> allow a reboot with emulated devices, should any further issues be detected.
>
> I believe that, going forward, changing the DeviceID to remove the RevisionID will
> avoid the need to set network IDs and copy settings from the previous network
> connection to the new network connection. This change will mean the driver selection
> during installation/upgrade will use the HardwareIDs (with RevisionIDs) to match the
> ID in the DDInstall INF section (with RevisionID), and use the DeviceID to generate
> the Matching Device ID and Instance ID. This means that once drivers have been
> upgraded, the InstanceIDs should not change, and Windows should not generate a new
> network connection (with default settings) for the upgraded driver set - meaning the
> correct network settings are persisted.
>
> I dont have a good replacement for cleaning up user mode services (xenbus_monitor
> xenagent and xencons_monitor) on device uninstall. This *should* be handled correctly
> by the PnP manager, but failing to stop either service should not be detremental to
> the operation of the VM. Selecting the "Delete Drivers" option during uninstall will
> stop and disable these services, not selecting this option will leave these services
> running.
>
> Owen Smith (5):
>    Fix Length calculation in PdoQueryId
>    Remove REV from DeviceID
>    Add Unplug v2 (REV_0900000A)
>    Remove CoInstaller from INF
>    Delete CoInstaller code
>
>   include/unplug_interface.h                    |   30 +-
>   src/coinst/coinst.c                           | 1732 -----------------
>   src/coinst/xenvif_coinst.def                  |   38 -
>   src/coinst/xenvif_coinst.rc                   |   57 -
>   src/xenvif.inf                                |   23 +-
>   src/xenvif/pdo.c                              |   38 +-
>   vs2015/package/package.vcxproj                |    3 -
>   vs2015/xenvif.sln                             |   26 -
>   vs2015/xenvif_coinst/xenvif_coinst.vcxproj    |   65 -
>   .../xenvif_coinst/xenvif_coinst.vcxproj.user  |    8 -
>   vs2017/package/package.vcxproj                |    3 -
>   vs2017/xenvif.sln                             |   27 -
>   vs2017/xenvif_coinst/xenvif_coinst.vcxproj    |   65 -
>   .../xenvif_coinst/xenvif_coinst.vcxproj.user  |    8 -
>   vs2019/package/package.vcxproj                |    3 -
>   vs2019/xenvif.sln                             |   27 -
>   vs2019/xenvif_coinst/xenvif_coinst.vcxproj    |   71 -
>   .../xenvif_coinst/xenvif_coinst.vcxproj.user  |    8 -
>   vs2022/package/package.vcxproj                |    3 -
>   vs2022/xenvif.sln                             |   27 -
>   vs2022/xenvif_coinst/xenvif_coinst.vcxproj    |   71 -
>   .../xenvif_coinst/xenvif_coinst.vcxproj.user  |    8 -
>   22 files changed, 62 insertions(+), 2279 deletions(-)
>   delete mode 100644 src/coinst/coinst.c
>   delete mode 100644 src/coinst/xenvif_coinst.def
>   delete mode 100644 src/coinst/xenvif_coinst.rc
>   delete mode 100644 vs2015/xenvif_coinst/xenvif_coinst.vcxproj
>   delete mode 100644 vs2015/xenvif_coinst/xenvif_coinst.vcxproj.user
>   delete mode 100644 vs2017/xenvif_coinst/xenvif_coinst.vcxproj
>   delete mode 100644 vs2017/xenvif_coinst/xenvif_coinst.vcxproj.user
>   delete mode 100644 vs2019/xenvif_coinst/xenvif_coinst.vcxproj
>   delete mode 100644 vs2019/xenvif_coinst/xenvif_coinst.vcxproj.user
>   delete mode 100644 vs2022/xenvif_coinst/xenvif_coinst.vcxproj
>   delete mode 100644 vs2022/xenvif_coinst/xenvif_coinst.vcxproj.user
>



 


Rackspace

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