[LCOW Builder] fix CPUGroup, VPMEM controller and StorageQoS parsing#2630
[LCOW Builder] fix CPUGroup, VPMEM controller and StorageQoS parsing#2630rawahars wants to merge 1 commit intomicrosoft:mainfrom
Conversation
afdedb3 to
f10adfc
Compare
|
Verified this PR against our parity tests ( Results: 23/24 PASS (up from 21/24 before this fix)
The VPMem controller fix works correctly — v2 now allocates the controller even for initrd boot. The remaining initrd failure is a kernel cmdline leading space difference in the legacy builder:
This is a harmless legacy quirk, not a v2 issue. HCS trims whitespace from kernel args. Otherwise LGTM. |
|
Adding the exact diff for the remaining initrd kernel cmdline failure: Test case: Legacy KernelCmdLine: V2 KernelCmdLine: The only difference is the leading space in the legacy output. This happens in The v2 builder in VPMem controller, StorageQoS, CpuGroup, and all other fields match perfectly after this fix PR. |
As this is an improvement in the newer v2 shim we are ignoring it in testing. |
…uirk Add 19 permutation tests covering CPU, memory, boot mode, feature flags, device interactions, cross-group combos, override priority, and kernel args. Kernel cmdline leading space difference (legacy initrd+KernelDirect quirk) is logged as a WARNING instead of failing — this is a known harmless legacy behavior that v2 correctly omits. 3 gap tests expose v2 builder bugs (CpuGroup, StorageQoS, VPMem initrd) which are being fixed in PR microsoft#2630. Signed-off-by: Shreyansh Sancheti <shsancheti@microsoft.com>
The CPUGroup was being set unconditionally while it needs to be set only if the value is non-empty. StorageQoS should only be set if IopsMaximum and BandwidthMaximum are both non-zero. If VPMEM count is greater than 0, we must initialize the controller. Signed-off-by: Harsh Rawat <harshrawat@microsoft.com>
f10adfc to
6db0e48
Compare
Summary
The CPUGroup was being set unconditionally while it needs to be set only if the value is non-empty.
StorageQoS was always set unconditionally but should only be set if
IopsMaximumandBandwidthMaximumare both non-zero.If VPMEM count is greater than 0, we must initialize the controller.
Unit tests are augmented to account for these changes.