11/*
2- * Copyright (C) 2023-2024 Intel Corporation
2+ * Copyright (C) 2023-2025 Intel Corporation
33 *
44 * SPDX-License-Identifier: MIT
55 *
@@ -89,7 +89,7 @@ struct WaitPkgEnabledFixture : public WaitPkgFixture {
8989 CpuInfo::cpuidFunc = mockCpuidEnableAll;
9090 WaitUtils::waitpkgSupport = true ;
9191
92- WaitUtils::init ();
92+ WaitUtils::init (false );
9393
9494 CpuIntrinsicsTests::lastUmwaitCounter = 0 ;
9595 CpuIntrinsicsTests::lastUmwaitControl = 0 ;
@@ -123,7 +123,7 @@ TEST_F(WaitPkgTest, givenDefaultSettingsAndWaitpkgSupportTrueWhenWaitInitialized
123123
124124 WaitUtils::waitpkgSupport = true ;
125125
126- WaitUtils::init ();
126+ WaitUtils::init (false );
127127 EXPECT_EQ (WaitUtils::defaultWaitCount, WaitUtils::waitCount);
128128 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
129129 EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
@@ -135,7 +135,7 @@ TEST_F(WaitPkgTest, givenEnabledWaitPkgSettingsAndWaitpkgSupportFalseWhenWaitIni
135135
136136 debugManager.flags .EnableWaitpkg .set (1 );
137137
138- WaitUtils::init ();
138+ WaitUtils::init (false );
139139 EXPECT_EQ (WaitUtils::defaultWaitCount, WaitUtils::waitCount);
140140 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
141141 EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
@@ -147,7 +147,7 @@ TEST_F(WaitPkgTest, givenDisabledWaitPkgSettingsAndWaitpkgSupportTrueWhenWaitIni
147147
148148 debugManager.flags .EnableWaitpkg .set (0 );
149149
150- WaitUtils::init ();
150+ WaitUtils::init (false );
151151 EXPECT_EQ (WaitUtils::defaultWaitCount, WaitUtils::waitCount);
152152 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
153153 EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
@@ -161,7 +161,7 @@ TEST_F(WaitPkgTest, givenEnabledWaitPkgSettingsAndWaitpkgSupportTrueWhenWaitInit
161161
162162 debugManager.flags .EnableWaitpkg .set (1 );
163163
164- WaitUtils::init ();
164+ WaitUtils::init (false );
165165 EXPECT_EQ (WaitUtils::defaultWaitCount, WaitUtils::waitCount);
166166 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
167167 EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
@@ -175,7 +175,20 @@ TEST_F(WaitPkgTest, givenEnabledWaitPkgSettingsAndWaitpkgSupportTrueWhenWaitInit
175175
176176 debugManager.flags .EnableWaitpkg .set (1 );
177177
178- WaitUtils::init ();
178+ WaitUtils::init (false );
179+
180+ EXPECT_EQ (0u , WaitUtils::waitCount);
181+ EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
182+ EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
183+ EXPECT_TRUE (WaitUtils::waitpkgUse);
184+ }
185+
186+ TEST_F (WaitPkgTest, givenEnabledSetToTrueAndWaitpkgSupportTrueWhenWaitInitializedAndCpuSupportsOperandThenWaitPkgEnabled) {
187+ CpuInfo::cpuidFunc = mockCpuidEnableAll;
188+
189+ WaitUtils::waitpkgSupport = true ;
190+
191+ WaitUtils::init (true );
179192
180193 EXPECT_EQ (0u , WaitUtils::waitCount);
181194 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
@@ -191,7 +204,7 @@ TEST_F(WaitPkgTest, givenFullyEnabledWaitPkgAndOverrideCounterValueWhenWaitIniti
191204 debugManager.flags .EnableWaitpkg .set (1 );
192205 debugManager.flags .WaitpkgCounterValue .set (1234 );
193206
194- WaitUtils::init ();
207+ WaitUtils::init (false );
195208 EXPECT_EQ (0u , WaitUtils::waitCount);
196209 EXPECT_EQ (1234u , WaitUtils::waitpkgCounterValue);
197210 EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
@@ -206,13 +219,35 @@ TEST_F(WaitPkgTest, givenFullyEnabledWaitPkgAndOverrideControlValueWhenWaitIniti
206219 debugManager.flags .EnableWaitpkg .set (1 );
207220 debugManager.flags .WaitpkgControlValue .set (1 );
208221
209- WaitUtils::init ();
222+ WaitUtils::init (false );
210223 EXPECT_EQ (0u , WaitUtils::waitCount);
211224 EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
212225 EXPECT_EQ (1u , WaitUtils::waitpkgControlValue);
213226 EXPECT_TRUE (WaitUtils::waitpkgUse);
214227}
215228
229+ TEST_F (WaitPkgTest, givenEnabledWaitPkgSettingsAndWaitpkgSupportTrueWhenWaitInitializedTwiceThenInitOnce) {
230+ CpuInfo::cpuidFunc = mockCpuidEnableAll;
231+
232+ WaitUtils::waitpkgSupport = true ;
233+
234+ WaitUtils::init (true );
235+
236+ EXPECT_EQ (0u , WaitUtils::waitCount);
237+ EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
238+ EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
239+ EXPECT_TRUE (WaitUtils::waitpkgUse);
240+
241+ debugManager.flags .WaitpkgControlValue .set (1 );
242+
243+ WaitUtils::init (true );
244+
245+ EXPECT_EQ (0u , WaitUtils::waitCount);
246+ EXPECT_EQ (10000u , WaitUtils::waitpkgCounterValue);
247+ EXPECT_EQ (0u , WaitUtils::waitpkgControlValue);
248+ EXPECT_TRUE (WaitUtils::waitpkgUse);
249+ }
250+
216251TEST_F (WaitPkgEnabledTest, givenMonitoredAddressChangedWhenAddressMatchesPredicateValueThenWaitReturnsTrue) {
217252 volatile TagAddressType pollValue = 0u ;
218253 TaskCountType expectedValue = 1 ;
0 commit comments