SlideShare a Scribd company logo
HCK-CI: Enabling CI for Windows guest
paravirtualized drivers
Kostiantyn Kostiuk - Software engineer, Daynix
https://github.com/HCK-CI
Agenda
• virtio-win drivers
• Why do we need CI for virtio-win drivers?
• What is WHQL certification and what are HCKHLK?
• How we can leverage WHQL certification for CI?
• What are the challenges with WHQL certification?
• Automating WHQL certification
• Examples of configuration and usage
2
• Upstream: https://github.com/virtio-win/kvm-guest-
drivers-windows/
• Drivers for the major virtio devices:
• virtio-net
• virtio-blk, virtio-scsi
• virtio-balloon, virtio-serial, virtio-vsock, virtio-input,
virtio-rng
• virtio-gpu
VirtIO-Win 3
• Enable easy upstream
contribution
• We want PRs to pass
WHQL certification tests
for each driver category
• Not easy to setup and
execute
Why do we need CI for virtio-win? 4
• Microsoft driver certification
• HLK and HCK are the test kits used for
certifications
What are WHQL and HLKHCK? 5
Test clients
Controller Device
Under
Test
Support
Device
VM types 6
Certification overview
Device certification
Networking
Storage
USB
Other categories
System certification
(SVVP for hypervisors)
7
Different kits
HCK
Windows 7
Windows 8
Windows 8.1
Windows Server 2008R2
Windows Server 2012
Windows Server 2012R2
HLK1607
Windows 10, Windows Server 2016
HLK
HLK1809
Windows 10, Windows Server 2019
HLK2022
Windows Server 2022
8
Sample configuration - network
control bridge
Device Under Test
VM
Controller VM
Support Device
VM
test bridge
world connection
9
Controller VM
Sample configuration - other devices
control bridge
DUT VM
world connection
10
• Run certification tests as part of CI process
• Can be used by individual developer
• The ultimate goal - to be used for actual
certification
What do we need? 11
• Used by individual developer
• Orchestrates network and storage for the test
• Runs VMs on top of QEMU-KVM
History: VirtHCK 12
What should be automated?
Host Automation: VM and networking
orchestration
Guest communication layer
Guest automation
Test manager and reports
13
AutoHCK - architecture
Result uploaders
Setup managers
Engines
Guest communication
layers
Auxiliary
14
• Driver installation (including test certificate)
• HCKHLK studio control using MS API
– Orchestration of HCKHLK setup
– Running tests
• Filter and playlist application
• Get back the results in a parsed human
readable manner and test package
Guest automation - toolsHCK 15
⮚ createpool “NetKVM-pool”
⮚ createproject “NetKVM-Win2022x64”
⮚ createprojecttarget
“PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_
003&267A616A&0&20” “NetKVM-Win2022x64” “CL2”
“NetKVM-pool”
toolsHCK - examples 16
⮚ queuetest “bbcc1b46-d0bf-46c8-85b4-2cd62df34a20”
“PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_0
03&267A616A&0&20” “NetKVM-Win2022x64” “CL2”
“NetKVM-pool”
⮚ listtestresults “bbcc1b46-d0bf-46c8-85b4-2cd62df34a20”
“PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_0
03&267A616A&0&20” “NetKVM-Win2022x64” “CL2”
“NetKVM-pool”
⮚ createprojectpackage “NetKVM-Win2022x64” [<package>]
toolsHCK - examples 17
• Communication between Controller VM and the
test manager on the host using WinRM
• Communication between the Controller and Client
VMs
• A gateway to toolsHCK
Guest communication layer - rtoolsHCK 18
• Creates VMs images with corresponding software
• Orchestrates network and storage for the test
• Creates snapshots that will be used for the tests
• Runs VMs and monitors their status
Host automation – AutoHCK 19
• Manages test configurations
• Platforms, OSes, devices, HLK / custom test play
lists, test black lists, HLK filter
• Orchestrates test setup in HLK studio and run the
tests
• Monitors test process
Test Manager - AutoHCK 20
• Result uploading
– uploading results to DropBox
• Parsed HLKHCK results
• Mini-dump files, if BSOD occurred during the
tests’ run
• Symbol and binary files for debugging
– updates Github pull requests with CI status
• HLK test package
Report Manager - AutoHCK 21
Installation
Server requirements
Processor 12 x vCPUs (minimal)
Memory 14 GB RAM (minimal)
Storage 512 GB (SSD is preferred)
Host OS Linux based
Internet connection Recommended
22
• Project source:
– AutoHCK
– toolsHCK
– HLK-Setup-Scripts
– extra-software
Installation 23
Configuration
• JSON – Format
• Global configuration
• Setup managers
• Engines
24
Configuration
• Global configuration
– config.json
– drivers.json
– svvp.json
{
"iso_path": "/home/hck-ci/HCK-CI/iso",
"extra_software": "/home/hck-ci/HCK-CI/extra-software",
"workspace_path": "/home/hck-ci/HCK-CI/workspace",
"ip_segment": "192.168.0.",
"id_range": [ 2, 90 ],
"winrm_port": "5985",
"repository": "virtio-win/kvm-guest-drivers-windows",
"toolshck_path": "./toolsHCK.ps1",
"studio_username": "Administrator",
"studio_password": "*******",
"result_uploaders": [ "dropbox" ],
"test_engine": "hcktest",
"install_engine": "hckinstall",
"setupmanager": "qemuhck",
"time_out": "9"
}
25
Configuration
• Setup managers
– qemu_machine.json
– physhck.json
[
{
"name": "PhyWin2016",
"st_ip": "10.20.30.40",
"kit": "HLK1607"
},
{
"name": "PhyWin2019",
"st_ip": "10.20.30.41",
"kit": "HLK1809"
}
]
26
Configuration
• Engines
– hlkinstall.json
• HLK Install
– studio_platform.json
– kit.json
– iso.json
• HLK Test
– <platform>.json
{
"name": "Win2022x64",
"kit": "HLK2022",
"st_image": "HLK2022.qcow2",
"clients": {
"c1": {
"name": "CL1",
"cpus": "4",
"memory": "4G",
"winrm_port": "4002",
"image": "HLK2022-C1-Win2022x64.qcow2"
},
"c2": {
"name": "CL2",
"cpus": "4",
"memory": "4G",
"winrm_port": "4003",
"image": "HLK2022-C2-Win2022x64.qcow2"
}
}
}
27
Optional software - Jenkins 28
Optional software - Sentry 29
Image installation
ruby ./bin/auto_hck install -p Win10_2004x86
30
Running sample test
ruby ./bin/auto_hck test 
--platform Win2019x64 --drivers ivshmem 
--driver-path "${HOME}/workspace/ivshmem-Win2019x64-build"
31
Running sample test 32
Running sample test 33
Projects using HCK-CI
virtio-win CI OpenVPN CI
34
Current Status
• Running as upstream CI for several projects
• Modular architecture allowing adding support for other
hypervisors or bare metal support (vDPA on Windows)
• Support for automating SVVP (hypervisor) certification tests
• Integration with GitHub (modularity allowing integration with
other services)
• Integration with DropBox to upload the results
• Parsing the results so they can be viewed by people without
installation of HLKHCK Studio
35
Future
• Adding support for other hypervisors
• Adding support for additional results’ storage
36
konstantin@daynix.com
Links – source code
• HCK-CI Framework source:
– https://github.com/HCK-CI/AutoHCK
– https://github.com/HCK-CI/toolsHCK
– https://github.com/HCK-CI/HLK-Setup-Scripts
– https://github.com/HCK-CI/extra-software
• virtio-win drivers source code (upstream CI):
– https://github.com/virtio-win/kvm-guest-drivers-windows
• OpenVPN TAP-Windows driver source code (upstream CI):
– https://github.com/OpenVPN/tap-windows6
38
Links – related information
• Windows Unattended Setup:
– https://docs.microsoft.com/en-us/windows-
hardware/manufacture/desktop/automate-windows-setup
– https://docs.microsoft.com/en-us/windows-
hardware/manufacture/desktop/update-windows-settings-
and-scripts-create-your-own-answer-file-sxs
• HLK Test Reference
– https://docs.microsoft.com/en-us/windows-
hardware/test/hlk/testref/hardware-lab-kit-test-reference
39
Links – related presentations
• KVM Forum 2012 WHQL Process for Windows Drivers and What the Community Can
Learn From It - Yan Vugenfirer, Daynix :
– https://www.linux-kvm.org/images/8/82/2012-forum-WHQLAndTheCommunity.pdf
• HLK Test Reference
– https://www.slideshare.net/YanVugenfirer/virt-hck-kvmforum2013
40
HCK-CI: Enabling CI for Windows Guest Paravirtualized Drivers (KVM Forum 2021)

More Related Content

What's hot

XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
The Linux Foundation
 
Заполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не оконченаЗаполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не окончена
Positive Hack Days
 
Project ACRN system debug
Project ACRN system debugProject ACRN system debug
Project ACRN system debug
Project ACRN
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
The Linux Foundation
 
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
CanSecWest
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction
Project ACRN
 
Signature verification of kernel module and kexec
Signature verification of kernel module and kexecSignature verification of kernel module and kexec
Signature verification of kernel module and kexec
joeylikernel
 
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
The Linux Foundation
 
XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
XPDS16:  Display Handler, a Client Display Framework for Xen - Brendan Kerrig...XPDS16:  Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
The Linux Foundation
 
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMUKernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
Anne Nicolas
 
LFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project HypervisorLFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project Hypervisor
The Linux Foundation
 
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, IntelXPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
The Linux Foundation
 
Workshop su Android Kernel Hacking
Workshop su Android Kernel HackingWorkshop su Android Kernel Hacking
Workshop su Android Kernel Hacking
Develer S.r.l.
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV Features
Raul Leite
 
Project ACRN Device Model architecture introduction
Project ACRN Device Model architecture introductionProject ACRN Device Model architecture introduction
Project ACRN Device Model architecture introduction
Project ACRN
 
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
XPDS16:  CPUID handling for guests - Andrew Cooper, CitrixXPDS16:  CPUID handling for guests - Andrew Cooper, Citrix
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
The Linux Foundation
 
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
The Linux Foundation
 
QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?
Pradeep Kumar
 
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
Project ACRN
 
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
BlueHat Security Conference
 

What's hot (20)

XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...XPDS16:  Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
XPDS16: Hypervisor-based Security: Vicarious Learning via Introspektioneerin...
 
Заполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не оконченаЗаполучили права администратора домена? Игра еще не окончена
Заполучили права администратора домена? Игра еще не окончена
 
Project ACRN system debug
Project ACRN system debugProject ACRN system debug
Project ACRN system debug
 
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE SystemsXPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
XPDS16: The OpenXT Project in 2016 - Christopher Clark, BAE Systems
 
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
CSW2017 Privilege escalation on high-end servers due to implementation gaps i...
 
Project ACRN hypervisor introduction
Project ACRN hypervisor introduction Project ACRN hypervisor introduction
Project ACRN hypervisor introduction
 
Signature verification of kernel module and kexec
Signature verification of kernel module and kexecSignature verification of kernel module and kexec
Signature verification of kernel module and kexec
 
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...XPDS16:  AMD's virtualization memory encryption technology - Brijesh Singh, A...
XPDS16: AMD's virtualization memory encryption technology - Brijesh Singh, A...
 
XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
XPDS16:  Display Handler, a Client Display Framework for Xen - Brendan Kerrig...XPDS16:  Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
XPDS16: Display Handler, a Client Display Framework for Xen - Brendan Kerrig...
 
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMUKernel Recipes 2015: Speed up your kernel development cycle with QEMU
Kernel Recipes 2015: Speed up your kernel development cycle with QEMU
 
LFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project HypervisorLFNW2014 Advanced Security Features of Xen Project Hypervisor
LFNW2014 Advanced Security Features of Xen Project Hypervisor
 
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, IntelXPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
XPDS16: Live scalability for vGPU using gScale - Xiao Zheng, Intel
 
Workshop su Android Kernel Hacking
Workshop su Android Kernel HackingWorkshop su Android Kernel Hacking
Workshop su Android Kernel Hacking
 
Known basic of NFV Features
Known basic of NFV FeaturesKnown basic of NFV Features
Known basic of NFV Features
 
Project ACRN Device Model architecture introduction
Project ACRN Device Model architecture introductionProject ACRN Device Model architecture introduction
Project ACRN Device Model architecture introduction
 
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
XPDS16:  CPUID handling for guests - Andrew Cooper, CitrixXPDS16:  CPUID handling for guests - Andrew Cooper, Citrix
XPDS16: CPUID handling for guests - Andrew Cooper, Citrix
 
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
XPDS14 - Zero-Footprint Guest Memory Introspection from Xen - Mihai Dontu, Bi...
 
QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?QEMU Disk IO Which performs Better: Native or threads?
QEMU Disk IO Which performs Better: Native or threads?
 
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
ACRN vMeet-Up EU 2021 - Bridging Orchestrator and Hard Realtime Workload Cons...
 
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
BlueHat v17 || Corrupting Memory in Microsoft Office Protected-View Sandbox
 

Similar to HCK-CI: Enabling CI for Windows Guest Paravirtualized Drivers (KVM Forum 2021)

Sprint 138
Sprint 138Sprint 138
Sprint 138
ManageIQ
 
how to use openstack api
how to use openstack apihow to use openstack api
how to use openstack api
Liang Bo
 
New Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQNew Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQ
Matt Leming
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
Pantheon
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud Native
Ben Hall
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
Aleksandr Tarasov
 
Monitoring CloudStack and components
Monitoring CloudStack and componentsMonitoring CloudStack and components
Monitoring CloudStack and components
ShapeBlue
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
NGINX, Inc.
 
Advanced Code Flow, Notes From the Field
Advanced Code Flow, Notes From the FieldAdvanced Code Flow, Notes From the Field
Advanced Code Flow, Notes From the Field
Ariel Moskovich
 
20131015_demo_oshk
20131015_demo_oshk20131015_demo_oshk
20131015_demo_oshkJeff Yang
 
Under the hood of the particular service platform
Under the hood of the particular service platformUnder the hood of the particular service platform
Under the hood of the particular service platform
Particular Software
 
Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19
marketingsyone
 
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout SuiteCloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
OWASP Kyiv
 
Kheirkhabarov24052017_phdays7
Kheirkhabarov24052017_phdays7Kheirkhabarov24052017_phdays7
Kheirkhabarov24052017_phdays7
Teymur Kheirkhabarov
 
Горизонтальные перемещения в инфраструктуре Windows
Горизонтальные перемещения в инфраструктуре WindowsГоризонтальные перемещения в инфраструктуре Windows
Горизонтальные перемещения в инфраструктуре Windows
Positive Hack Days
 
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptxThe Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
lior mazor
 
Cmake kitware
Cmake kitwareCmake kitware
Cmake kitware
achintyalte
 
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-BalancerDevelopment of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Fabrice Servais
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx
ssuserb4d806
 

Similar to HCK-CI: Enabling CI for Windows Guest Paravirtualized Drivers (KVM Forum 2021) (20)

Sprint 138
Sprint 138Sprint 138
Sprint 138
 
how to use openstack api
how to use openstack apihow to use openstack api
how to use openstack api
 
New Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQNew Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQ
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
Automate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon ViennaAutomate Your Automation | DrupalCon Vienna
Automate Your Automation | DrupalCon Vienna
 
The Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud NativeThe Challenges of Becoming Cloud Native
The Challenges of Becoming Cloud Native
 
Docker In Bank Unrated
Docker In Bank UnratedDocker In Bank Unrated
Docker In Bank Unrated
 
Monitoring CloudStack and components
Monitoring CloudStack and componentsMonitoring CloudStack and components
Monitoring CloudStack and components
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
 
Advanced Code Flow, Notes From the Field
Advanced Code Flow, Notes From the FieldAdvanced Code Flow, Notes From the Field
Advanced Code Flow, Notes From the Field
 
20131015_demo_oshk
20131015_demo_oshk20131015_demo_oshk
20131015_demo_oshk
 
Under the hood of the particular service platform
Under the hood of the particular service platformUnder the hood of the particular service platform
Under the hood of the particular service platform
 
Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19Francisco Javier Ramirez Urea - Hopla - OSL19
Francisco Javier Ramirez Urea - Hopla - OSL19
 
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout SuiteCloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
Cloud Security Hardening та аудит хмарної безпеки за допомогою Scout Suite
 
Kheirkhabarov24052017_phdays7
Kheirkhabarov24052017_phdays7Kheirkhabarov24052017_phdays7
Kheirkhabarov24052017_phdays7
 
Горизонтальные перемещения в инфраструктуре Windows
Горизонтальные перемещения в инфраструктуре WindowsГоризонтальные перемещения в инфраструктуре Windows
Горизонтальные перемещения в инфраструктуре Windows
 
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptxThe Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
The Hacking Games - A Road to Post Exploitation Meetup - 20240222.pptx
 
Cmake kitware
Cmake kitwareCmake kitware
Cmake kitware
 
Development of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-BalancerDevelopment of a Cisco ACI device package for NGINX as a Load-Balancer
Development of a Cisco ACI device package for NGINX as a Load-Balancer
 
Labs_BT_20221017.pptx
Labs_BT_20221017.pptxLabs_BT_20221017.pptx
Labs_BT_20221017.pptx
 

Recently uploaded

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 

Recently uploaded (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 

HCK-CI: Enabling CI for Windows Guest Paravirtualized Drivers (KVM Forum 2021)

  • 1. HCK-CI: Enabling CI for Windows guest paravirtualized drivers Kostiantyn Kostiuk - Software engineer, Daynix https://github.com/HCK-CI
  • 2. Agenda • virtio-win drivers • Why do we need CI for virtio-win drivers? • What is WHQL certification and what are HCKHLK? • How we can leverage WHQL certification for CI? • What are the challenges with WHQL certification? • Automating WHQL certification • Examples of configuration and usage 2
  • 3. • Upstream: https://github.com/virtio-win/kvm-guest- drivers-windows/ • Drivers for the major virtio devices: • virtio-net • virtio-blk, virtio-scsi • virtio-balloon, virtio-serial, virtio-vsock, virtio-input, virtio-rng • virtio-gpu VirtIO-Win 3
  • 4. • Enable easy upstream contribution • We want PRs to pass WHQL certification tests for each driver category • Not easy to setup and execute Why do we need CI for virtio-win? 4
  • 5. • Microsoft driver certification • HLK and HCK are the test kits used for certifications What are WHQL and HLKHCK? 5
  • 7. Certification overview Device certification Networking Storage USB Other categories System certification (SVVP for hypervisors) 7
  • 8. Different kits HCK Windows 7 Windows 8 Windows 8.1 Windows Server 2008R2 Windows Server 2012 Windows Server 2012R2 HLK1607 Windows 10, Windows Server 2016 HLK HLK1809 Windows 10, Windows Server 2019 HLK2022 Windows Server 2022 8
  • 9. Sample configuration - network control bridge Device Under Test VM Controller VM Support Device VM test bridge world connection 9
  • 10. Controller VM Sample configuration - other devices control bridge DUT VM world connection 10
  • 11. • Run certification tests as part of CI process • Can be used by individual developer • The ultimate goal - to be used for actual certification What do we need? 11
  • 12. • Used by individual developer • Orchestrates network and storage for the test • Runs VMs on top of QEMU-KVM History: VirtHCK 12
  • 13. What should be automated? Host Automation: VM and networking orchestration Guest communication layer Guest automation Test manager and reports 13
  • 14. AutoHCK - architecture Result uploaders Setup managers Engines Guest communication layers Auxiliary 14
  • 15. • Driver installation (including test certificate) • HCKHLK studio control using MS API – Orchestration of HCKHLK setup – Running tests • Filter and playlist application • Get back the results in a parsed human readable manner and test package Guest automation - toolsHCK 15
  • 16. ⮚ createpool “NetKVM-pool” ⮚ createproject “NetKVM-Win2022x64” ⮚ createprojecttarget “PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_ 003&267A616A&0&20” “NetKVM-Win2022x64” “CL2” “NetKVM-pool” toolsHCK - examples 16
  • 17. ⮚ queuetest “bbcc1b46-d0bf-46c8-85b4-2cd62df34a20” “PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_0 03&267A616A&0&20” “NetKVM-Win2022x64” “CL2” “NetKVM-pool” ⮚ listtestresults “bbcc1b46-d0bf-46c8-85b4-2cd62df34a20” “PCIVEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_0 03&267A616A&0&20” “NetKVM-Win2022x64” “CL2” “NetKVM-pool” ⮚ createprojectpackage “NetKVM-Win2022x64” [<package>] toolsHCK - examples 17
  • 18. • Communication between Controller VM and the test manager on the host using WinRM • Communication between the Controller and Client VMs • A gateway to toolsHCK Guest communication layer - rtoolsHCK 18
  • 19. • Creates VMs images with corresponding software • Orchestrates network and storage for the test • Creates snapshots that will be used for the tests • Runs VMs and monitors their status Host automation – AutoHCK 19
  • 20. • Manages test configurations • Platforms, OSes, devices, HLK / custom test play lists, test black lists, HLK filter • Orchestrates test setup in HLK studio and run the tests • Monitors test process Test Manager - AutoHCK 20
  • 21. • Result uploading – uploading results to DropBox • Parsed HLKHCK results • Mini-dump files, if BSOD occurred during the tests’ run • Symbol and binary files for debugging – updates Github pull requests with CI status • HLK test package Report Manager - AutoHCK 21
  • 22. Installation Server requirements Processor 12 x vCPUs (minimal) Memory 14 GB RAM (minimal) Storage 512 GB (SSD is preferred) Host OS Linux based Internet connection Recommended 22
  • 23. • Project source: – AutoHCK – toolsHCK – HLK-Setup-Scripts – extra-software Installation 23
  • 24. Configuration • JSON – Format • Global configuration • Setup managers • Engines 24
  • 25. Configuration • Global configuration – config.json – drivers.json – svvp.json { "iso_path": "/home/hck-ci/HCK-CI/iso", "extra_software": "/home/hck-ci/HCK-CI/extra-software", "workspace_path": "/home/hck-ci/HCK-CI/workspace", "ip_segment": "192.168.0.", "id_range": [ 2, 90 ], "winrm_port": "5985", "repository": "virtio-win/kvm-guest-drivers-windows", "toolshck_path": "./toolsHCK.ps1", "studio_username": "Administrator", "studio_password": "*******", "result_uploaders": [ "dropbox" ], "test_engine": "hcktest", "install_engine": "hckinstall", "setupmanager": "qemuhck", "time_out": "9" } 25
  • 26. Configuration • Setup managers – qemu_machine.json – physhck.json [ { "name": "PhyWin2016", "st_ip": "10.20.30.40", "kit": "HLK1607" }, { "name": "PhyWin2019", "st_ip": "10.20.30.41", "kit": "HLK1809" } ] 26
  • 27. Configuration • Engines – hlkinstall.json • HLK Install – studio_platform.json – kit.json – iso.json • HLK Test – <platform>.json { "name": "Win2022x64", "kit": "HLK2022", "st_image": "HLK2022.qcow2", "clients": { "c1": { "name": "CL1", "cpus": "4", "memory": "4G", "winrm_port": "4002", "image": "HLK2022-C1-Win2022x64.qcow2" }, "c2": { "name": "CL2", "cpus": "4", "memory": "4G", "winrm_port": "4003", "image": "HLK2022-C2-Win2022x64.qcow2" } } } 27
  • 28. Optional software - Jenkins 28
  • 29. Optional software - Sentry 29
  • 30. Image installation ruby ./bin/auto_hck install -p Win10_2004x86 30
  • 31. Running sample test ruby ./bin/auto_hck test --platform Win2019x64 --drivers ivshmem --driver-path "${HOME}/workspace/ivshmem-Win2019x64-build" 31
  • 35. Current Status • Running as upstream CI for several projects • Modular architecture allowing adding support for other hypervisors or bare metal support (vDPA on Windows) • Support for automating SVVP (hypervisor) certification tests • Integration with GitHub (modularity allowing integration with other services) • Integration with DropBox to upload the results • Parsing the results so they can be viewed by people without installation of HLKHCK Studio 35
  • 36. Future • Adding support for other hypervisors • Adding support for additional results’ storage 36
  • 38. Links – source code • HCK-CI Framework source: – https://github.com/HCK-CI/AutoHCK – https://github.com/HCK-CI/toolsHCK – https://github.com/HCK-CI/HLK-Setup-Scripts – https://github.com/HCK-CI/extra-software • virtio-win drivers source code (upstream CI): – https://github.com/virtio-win/kvm-guest-drivers-windows • OpenVPN TAP-Windows driver source code (upstream CI): – https://github.com/OpenVPN/tap-windows6 38
  • 39. Links – related information • Windows Unattended Setup: – https://docs.microsoft.com/en-us/windows- hardware/manufacture/desktop/automate-windows-setup – https://docs.microsoft.com/en-us/windows- hardware/manufacture/desktop/update-windows-settings- and-scripts-create-your-own-answer-file-sxs • HLK Test Reference – https://docs.microsoft.com/en-us/windows- hardware/test/hlk/testref/hardware-lab-kit-test-reference 39
  • 40. Links – related presentations • KVM Forum 2012 WHQL Process for Windows Drivers and What the Community Can Learn From It - Yan Vugenfirer, Daynix : – https://www.linux-kvm.org/images/8/82/2012-forum-WHQLAndTheCommunity.pdf • HLK Test Reference – https://www.slideshare.net/YanVugenfirer/virt-hck-kvmforum2013 40