...
Check if
wperf-driver
correctly loads and unloads its resources.Implement PMU (driver) resource acquisition lock and release.
wperf-driver
should be able to release PMU resources if they are not used by user space applicationwperf
.
Make sure only one user space application can access
wperf-driver
’s PMU resources.Introduce “busy” state to
wperf-driver
.All
wperf
user space instances should be able to tell if driver is currently “in use” by anotherwperf
instance(s).Note: this will be extended in Device Tree feature. Each driver will be able to communicate user space if resource is ready, acquired and ready to use (other “states” may be added later).
In DT architecture there will be N drivers, user space can acquire driver(s) leaving other driver for users' disposal. Currently if user space is for example counting core, other
wperf
instance can’t use DMC resource.
unCore PMU Driver Improvements
Current wperf-driver
implementation is not auto detecting unCore PMU.
...
Currently
wperf
user space application is usingcfgmgr32.lib
to detect uncore PMU resources. We should be able to move this to the driver side.
Driver Verifier
Driver Verifier monitors Windows kernel-mode drivers and graphics drivers to detect illegal function calls or actions that might corrupt the system. Driver Verifier can subject Windows drivers to a variety of stresses and tests to find improper behavior. See
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
...
Isolate and fix most critical findings from DV.
Other (sort out other issues that may influence driver’s performance or stability).
wperf-devgen
Project wperf-devgen
is a help utility to install the WindowsPerf Driver using the Software Device API.
...
Code review of current solution.
Fix issue related to device being uninstalled after restart.
Add bulletproof install / remove / driver status functionality to
wperf-devgen
.Note: in the future we will introduce Device Tree feature.
This will expand on
wperf-devgen
tool which should be able to manage set of WindowsPerf drivers.
Driver Testing Framework
Current project lacks wperf-driver
testing infrastructure. WindowsPerf DTF should introduce simple smoke test / canary test framework we can use to verify driver during development and CI/CD testing. Current
...
Add stress tests for
wperf-driver
features.Add stress test for driver load/unload functionality.
Add stress test for driver install / remove functionality.
Add tests and checks based on Driver Verifier
Add tests for functionality we’ve added with
beta
branch https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/beta?ref_type=heads.
Vulnerability analysis
The current driver never went through any sort of analysis of possible security vulnerabilities. We need to evaluate and solve all issues.
Goal: Evaluate and report possible driver vulnerabilities and solve them.
IOCTRL
Check and refactor / evaluate IOCTRL strategy.
Misc
Evaluate all DPCs and interrupt handlers. We want to make sure each DPC and interrupt handle is efficient.
See example issue
where we use few events to count. We want to make sure all interrupts are being handled so that user space can collect from driver accurate sapling data.Jira Legacy server System JIRA serverId 59107c6f-1e52-32bc-b58f-400d54bba998 key WPERF-451
Evaluate changes done in https://gitlab.com/Linaro/WindowsPerf/windowsperf/-/tree/beta?ref_type=heads.
Add testing when one or more GPCs are not available.
.
Functions inside
device.c
are too big and complex, we want all this to be broken down and become more easily maneageable.Looks like when we stop counting/sampling some events are spilled over to the next iteration. See comments on [wperf-scripts] Add to regression tests sleep between core loads (!389) · Merge requests · linaro / WindowsPerf / WindowsPerf · GitLab and here [wperf-driver] Reset the counters on PMU_CTL_RESET (!388) · Merge requests · linaro / WindowsPerf / WindowsPerf · GitLab