blob: 11101e02b96b16a812022f707ac2b4f6ad29b3ee [file] [log] [blame]
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -03001#
2# Basic validation of x86 versioned CPU models and CPU model aliases
3#
4# Copyright (c) 2019 Red Hat Inc
5#
6# Author:
7# Eduardo Habkost <ehabkost@redhat.com>
8#
9# This library is free software; you can redistribute it and/or
10# modify it under the terms of the GNU Lesser General Public
11# License as published by the Free Software Foundation; either
Gan Qixin6a2cd952020-11-11 02:42:22 +080012# version 2.1 of the License, or (at your option) any later version.
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -030013#
14# This library is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17# Lesser General Public License for more details.
18#
19# You should have received a copy of the GNU Lesser General Public
20# License along with this library; if not, see <http://www.gnu.org/licenses/>.
21#
22
23
24import avocado_qemu
25import re
26
Philippe Mathieu-Daudé2283b622021-09-27 18:14:33 +020027class X86CPUModelAliases(avocado_qemu.QemuSystemTest):
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -030028 """
29 Validation of PC CPU model versions and CPU model aliases
30
31 :avocado: tags=arch:x86_64
32 """
33 def validate_aliases(self, cpus):
34 for c in cpus.values():
35 if 'alias-of' in c:
36 # all aliases must point to a valid CPU model name:
37 self.assertIn(c['alias-of'], cpus,
38 '%s.alias-of (%s) is not a valid CPU model name' % (c['name'], c['alias-of']))
39 # aliases must not point to aliases
40 self.assertNotIn('alias-of', cpus[c['alias-of']],
41 '%s.alias-of (%s) points to another alias' % (c['name'], c['alias-of']))
42
43 # aliases must not be static
44 self.assertFalse(c['static'])
45
46 def validate_variant_aliases(self, cpus):
47 # -noTSX, -IBRS and -IBPB variants of CPU models are special:
48 # they shouldn't have their own versions:
49 self.assertNotIn("Haswell-noTSX-v1", cpus,
50 "Haswell-noTSX shouldn't be versioned")
51 self.assertNotIn("Broadwell-noTSX-v1", cpus,
52 "Broadwell-noTSX shouldn't be versioned")
53 self.assertNotIn("Nehalem-IBRS-v1", cpus,
54 "Nehalem-IBRS shouldn't be versioned")
55 self.assertNotIn("Westmere-IBRS-v1", cpus,
56 "Westmere-IBRS shouldn't be versioned")
57 self.assertNotIn("SandyBridge-IBRS-v1", cpus,
58 "SandyBridge-IBRS shouldn't be versioned")
59 self.assertNotIn("IvyBridge-IBRS-v1", cpus,
60 "IvyBridge-IBRS shouldn't be versioned")
61 self.assertNotIn("Haswell-noTSX-IBRS-v1", cpus,
62 "Haswell-noTSX-IBRS shouldn't be versioned")
63 self.assertNotIn("Haswell-IBRS-v1", cpus,
64 "Haswell-IBRS shouldn't be versioned")
65 self.assertNotIn("Broadwell-noTSX-IBRS-v1", cpus,
66 "Broadwell-noTSX-IBRS shouldn't be versioned")
67 self.assertNotIn("Broadwell-IBRS-v1", cpus,
68 "Broadwell-IBRS shouldn't be versioned")
69 self.assertNotIn("Skylake-Client-IBRS-v1", cpus,
70 "Skylake-Client-IBRS shouldn't be versioned")
71 self.assertNotIn("Skylake-Server-IBRS-v1", cpus,
72 "Skylake-Server-IBRS shouldn't be versioned")
73 self.assertNotIn("EPYC-IBPB-v1", cpus,
74 "EPYC-IBPB shouldn't be versioned")
75
76 def test_4_0_alias_compatibility(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -050077 """
78 Check if pc-*-4.0 unversioned CPU model won't be reported as aliases
79
80 :avocado: tags=machine:pc-i440fx-4.0
81 """
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -030082 # pc-*-4.0 won't expose non-versioned CPU models as aliases
83 # We do this to help management software to keep compatibility
84 # with older QEMU versions that didn't have the versioned CPU model
85 self.vm.add_args('-S')
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -030086 self.vm.launch()
Vladimir Sementsov-Ogievskiy684750a2023-10-06 18:41:15 +030087 cpus = dict((m['name'], m) for m in
88 self.vm.cmd('query-cpu-definitions'))
Eduardo Habkostdcafd1e2019-06-27 21:28:39 -030089
90 self.assertFalse(cpus['Cascadelake-Server']['static'],
91 'unversioned Cascadelake-Server CPU model must not be static')
92 self.assertNotIn('alias-of', cpus['Cascadelake-Server'],
93 'Cascadelake-Server must not be an alias')
94 self.assertNotIn('alias-of', cpus['Cascadelake-Server-v1'],
95 'Cascadelake-Server-v1 must not be an alias')
96
97 self.assertFalse(cpus['qemu64']['static'],
98 'unversioned qemu64 CPU model must not be static')
99 self.assertNotIn('alias-of', cpus['qemu64'],
100 'qemu64 must not be an alias')
101 self.assertNotIn('alias-of', cpus['qemu64-v1'],
102 'qemu64-v1 must not be an alias')
103
104 self.validate_variant_aliases(cpus)
105
106 # On pc-*-4.0, no CPU model should be reported as an alias:
107 for name,c in cpus.items():
108 self.assertNotIn('alias-of', c, "%s shouldn't be an alias" % (name))
Eduardo Habkost0788a562019-06-27 21:28:42 -0300109
110 def test_4_1_alias(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500111 """
112 Check if unversioned CPU model is an alias pointing to right version
113
114 :avocado: tags=machine:pc-i440fx-4.1
115 """
Eduardo Habkost0788a562019-06-27 21:28:42 -0300116 self.vm.add_args('-S')
Eduardo Habkost0788a562019-06-27 21:28:42 -0300117 self.vm.launch()
118
Vladimir Sementsov-Ogievskiy684750a2023-10-06 18:41:15 +0300119 cpus = dict((m['name'], m) for m in
120 self.vm.cmd('query-cpu-definitions'))
Eduardo Habkost0788a562019-06-27 21:28:42 -0300121
122 self.assertFalse(cpus['Cascadelake-Server']['static'],
123 'unversioned Cascadelake-Server CPU model must not be static')
Thomas Huth861f7242023-11-14 14:43:26 +0100124 self.assertEqual(cpus['Cascadelake-Server'].get('alias-of'),
125 'Cascadelake-Server-v1',
126 'Cascadelake-Server must be an alias of Cascadelake-Server-v1')
Eduardo Habkost0788a562019-06-27 21:28:42 -0300127 self.assertNotIn('alias-of', cpus['Cascadelake-Server-v1'],
128 'Cascadelake-Server-v1 must not be an alias')
129
130 self.assertFalse(cpus['qemu64']['static'],
131 'unversioned qemu64 CPU model must not be static')
Thomas Huth861f7242023-11-14 14:43:26 +0100132 self.assertEqual(cpus['qemu64'].get('alias-of'), 'qemu64-v1',
133 'qemu64 must be an alias of qemu64-v1')
Eduardo Habkost0788a562019-06-27 21:28:42 -0300134 self.assertNotIn('alias-of', cpus['qemu64-v1'],
135 'qemu64-v1 must not be an alias')
136
137 self.validate_variant_aliases(cpus)
138
139 # On pc-*-4.1, -noTSX and -IBRS models should be aliases:
Thomas Huth861f7242023-11-14 14:43:26 +0100140 self.assertEqual(cpus["Haswell"].get('alias-of'),
141 "Haswell-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300142 "Haswell must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100143 self.assertEqual(cpus["Haswell-noTSX"].get('alias-of'),
144 "Haswell-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300145 "Haswell-noTSX must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100146 self.assertEqual(cpus["Haswell-IBRS"].get('alias-of'),
147 "Haswell-v3",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300148 "Haswell-IBRS must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100149 self.assertEqual(cpus["Haswell-noTSX-IBRS"].get('alias-of'),
150 "Haswell-v4",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300151 "Haswell-noTSX-IBRS must be an alias")
152
Thomas Huth861f7242023-11-14 14:43:26 +0100153 self.assertEqual(cpus["Broadwell"].get('alias-of'),
154 "Broadwell-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300155 "Broadwell must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100156 self.assertEqual(cpus["Broadwell-noTSX"].get('alias-of'),
157 "Broadwell-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300158 "Broadwell-noTSX must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100159 self.assertEqual(cpus["Broadwell-IBRS"].get('alias-of'),
160 "Broadwell-v3",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300161 "Broadwell-IBRS must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100162 self.assertEqual(cpus["Broadwell-noTSX-IBRS"].get('alias-of'),
163 "Broadwell-v4",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300164 "Broadwell-noTSX-IBRS must be an alias")
165
Thomas Huth861f7242023-11-14 14:43:26 +0100166 self.assertEqual(cpus["Nehalem"].get('alias-of'),
167 "Nehalem-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300168 "Nehalem must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100169 self.assertEqual(cpus["Nehalem-IBRS"].get('alias-of'),
170 "Nehalem-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300171 "Nehalem-IBRS must be an alias")
172
Thomas Huth861f7242023-11-14 14:43:26 +0100173 self.assertEqual(cpus["Westmere"].get('alias-of'),
174 "Westmere-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300175 "Westmere must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100176 self.assertEqual(cpus["Westmere-IBRS"].get('alias-of'),
177 "Westmere-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300178 "Westmere-IBRS must be an alias")
179
Thomas Huth861f7242023-11-14 14:43:26 +0100180 self.assertEqual(cpus["SandyBridge"].get('alias-of'),
181 "SandyBridge-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300182 "SandyBridge must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100183 self.assertEqual(cpus["SandyBridge-IBRS"].get('alias-of'),
184 "SandyBridge-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300185 "SandyBridge-IBRS must be an alias")
186
Thomas Huth861f7242023-11-14 14:43:26 +0100187 self.assertEqual(cpus["IvyBridge"].get('alias-of'),
188 "IvyBridge-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300189 "IvyBridge must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100190 self.assertEqual(cpus["IvyBridge-IBRS"].get('alias-of'),
191 "IvyBridge-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300192 "IvyBridge-IBRS must be an alias")
193
Thomas Huth861f7242023-11-14 14:43:26 +0100194 self.assertEqual(cpus["Skylake-Client"].get('alias-of'),
195 "Skylake-Client-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300196 "Skylake-Client must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100197 self.assertEqual(cpus["Skylake-Client-IBRS"].get('alias-of'),
198 "Skylake-Client-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300199 "Skylake-Client-IBRS must be an alias")
200
Thomas Huth861f7242023-11-14 14:43:26 +0100201 self.assertEqual(cpus["Skylake-Server"].get('alias-of'),
202 "Skylake-Server-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300203 "Skylake-Server must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100204 self.assertEqual(cpus["Skylake-Server-IBRS"].get('alias-of'),
205 "Skylake-Server-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300206 "Skylake-Server-IBRS must be an alias")
207
Thomas Huth861f7242023-11-14 14:43:26 +0100208 self.assertEqual(cpus["EPYC"].get('alias-of'),
209 "EPYC-v1",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300210 "EPYC must be an alias")
Thomas Huth861f7242023-11-14 14:43:26 +0100211 self.assertEqual(cpus["EPYC-IBPB"].get('alias-of'),
212 "EPYC-v2",
Eduardo Habkost0788a562019-06-27 21:28:42 -0300213 "EPYC-IBPB must be an alias")
214
215 self.validate_aliases(cpus)
216
217 def test_none_alias(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500218 """
219 Check if unversioned CPU model is an alias pointing to some version
220
221 :avocado: tags=machine:none
222 """
Eduardo Habkost0788a562019-06-27 21:28:42 -0300223 self.vm.add_args('-S')
Eduardo Habkost0788a562019-06-27 21:28:42 -0300224 self.vm.launch()
225
Vladimir Sementsov-Ogievskiy684750a2023-10-06 18:41:15 +0300226 cpus = dict((m['name'], m) for m in
227 self.vm.cmd('query-cpu-definitions'))
Eduardo Habkost0788a562019-06-27 21:28:42 -0300228
229 self.assertFalse(cpus['Cascadelake-Server']['static'],
230 'unversioned Cascadelake-Server CPU model must not be static')
231 self.assertTrue(re.match('Cascadelake-Server-v[0-9]+', cpus['Cascadelake-Server']['alias-of']),
232 'Cascadelake-Server must be an alias of versioned CPU model')
233 self.assertNotIn('alias-of', cpus['Cascadelake-Server-v1'],
234 'Cascadelake-Server-v1 must not be an alias')
235
236 self.assertFalse(cpus['qemu64']['static'],
237 'unversioned qemu64 CPU model must not be static')
238 self.assertTrue(re.match('qemu64-v[0-9]+', cpus['qemu64']['alias-of']),
239 'qemu64 must be an alias of versioned CPU model')
240 self.assertNotIn('alias-of', cpus['qemu64-v1'],
241 'qemu64-v1 must not be an alias')
242
243 self.validate_aliases(cpus)
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300244
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400245
Philippe Mathieu-Daudé2283b622021-09-27 18:14:33 +0200246class CascadelakeArchCapabilities(avocado_qemu.QemuSystemTest):
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400247 """
248 Validation of Cascadelake arch-capabilities
249
250 :avocado: tags=arch:x86_64
251 """
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400252 def get_cpu_prop(self, prop):
Vladimir Sementsov-Ogievskiy684750a2023-10-06 18:41:15 +0300253 cpu_path = self.vm.cmd('query-cpus-fast')[0].get('qom-path')
254 return self.vm.cmd('qom-get', path=cpu_path, property=prop)
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400255
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400256 def test_4_1(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500257 """
258 :avocado: tags=machine:pc-i440fx-4.1
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300259 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500260 """
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300261 # machine-type only:
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400262 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300263 self.set_vm_arg('-cpu',
264 'Cascadelake-Server,x-force-features=on,check=off,'
265 'enforce=off')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400266 self.vm.launch()
267 self.assertFalse(self.get_cpu_prop('arch-capabilities'),
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300268 'pc-i440fx-4.1 + Cascadelake-Server should not have arch-capabilities')
269
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400270 def test_4_0(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500271 """
272 :avocado: tags=machine:pc-i440fx-4.0
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300273 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500274 """
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400275 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300276 self.set_vm_arg('-cpu',
277 'Cascadelake-Server,x-force-features=on,check=off,'
278 'enforce=off')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400279 self.vm.launch()
280 self.assertFalse(self.get_cpu_prop('arch-capabilities'),
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300281 'pc-i440fx-4.0 + Cascadelake-Server should not have arch-capabilities')
282
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400283 def test_set_4_0(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500284 """
285 :avocado: tags=machine:pc-i440fx-4.0
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300286 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500287 """
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300288 # command line must override machine-type if CPU model is not versioned:
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400289 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300290 self.set_vm_arg('-cpu',
291 'Cascadelake-Server,x-force-features=on,check=off,'
292 'enforce=off,+arch-capabilities')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400293 self.vm.launch()
294 self.assertTrue(self.get_cpu_prop('arch-capabilities'),
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300295 'pc-i440fx-4.0 + Cascadelake-Server,+arch-capabilities should have arch-capabilities')
296
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400297 def test_unset_4_1(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500298 """
299 :avocado: tags=machine:pc-i440fx-4.1
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300300 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500301 """
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400302 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300303 self.set_vm_arg('-cpu',
304 'Cascadelake-Server,x-force-features=on,check=off,'
305 'enforce=off,-arch-capabilities')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400306 self.vm.launch()
307 self.assertFalse(self.get_cpu_prop('arch-capabilities'),
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300308 'pc-i440fx-4.1 + Cascadelake-Server,-arch-capabilities should not have arch-capabilities')
309
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400310 def test_v1_4_0(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500311 """
312 :avocado: tags=machine:pc-i440fx-4.0
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300313 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500314 """
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300315 # versioned CPU model overrides machine-type:
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400316 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300317 self.set_vm_arg('-cpu',
318 'Cascadelake-Server-v1,x-force-features=on,check=off,'
319 'enforce=off')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400320 self.vm.launch()
321 self.assertFalse(self.get_cpu_prop('arch-capabilities'),
Cleber Rosad0b63082019-08-28 15:36:27 -0400322 'pc-i440fx-4.0 + Cascadelake-Server-v1 should not have arch-capabilities')
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300323
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400324 def test_v2_4_0(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500325 """
326 :avocado: tags=machine:pc-i440fx-4.0
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300327 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500328 """
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400329 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300330 self.set_vm_arg('-cpu',
331 'Cascadelake-Server-v2,x-force-features=on,check=off,'
332 'enforce=off')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400333 self.vm.launch()
334 self.assertTrue(self.get_cpu_prop('arch-capabilities'),
335 'pc-i440fx-4.0 + Cascadelake-Server-v2 should have arch-capabilities')
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300336
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400337 def test_v1_set_4_0(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500338 """
339 :avocado: tags=machine:pc-i440fx-4.0
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300340 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500341 """
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300342 # command line must override machine-type and versioned CPU model:
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400343 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300344 self.set_vm_arg('-cpu',
345 'Cascadelake-Server-v1,x-force-features=on,check=off,'
346 'enforce=off,+arch-capabilities')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400347 self.vm.launch()
348 self.assertTrue(self.get_cpu_prop('arch-capabilities'),
349 'pc-i440fx-4.0 + Cascadelake-Server-v1,+arch-capabilities should have arch-capabilities')
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300350
Cleber Rosa7219c2e2019-08-28 15:36:28 -0400351 def test_v2_unset_4_1(self):
Cleber Rosaba21bde2019-11-04 10:13:18 -0500352 """
353 :avocado: tags=machine:pc-i440fx-4.1
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300354 :avocado: tags=cpu:Cascadelake-Server
Cleber Rosaba21bde2019-11-04 10:13:18 -0500355 """
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400356 self.vm.add_args('-S')
Wainer dos Santos Moschetta3843a322021-04-30 10:34:14 -0300357 self.set_vm_arg('-cpu',
358 'Cascadelake-Server-v2,x-force-features=on,check=off,'
359 'enforce=off,-arch-capabilities')
Cleber Rosa3e9c1812019-09-24 15:44:59 -0400360 self.vm.launch()
361 self.assertFalse(self.get_cpu_prop('arch-capabilities'),
Eduardo Habkostfd63c6d2019-06-27 21:28:44 -0300362 'pc-i440fx-4.1 + Cascadelake-Server-v2,-arch-capabilities should not have arch-capabilities')