Lines Matching +full:ram +full:- +full:code
11 # SPDX-License-Identifier: GPL-2.0-or-later
23 # This helper can go away when the 32-bit host deprecation
31 # Non-ELF file implies macOS or Windows which
32 # we already assume to be 64-bit only
35 # bits == 1 -> 32-bit; bits == 2 -> 64-bit
38 # 32-bit ELF builds won't be able to address sufficient
39 # RAM to run the tests
40 self.skipTest("64-bit build host is required")
42 # first, lets test some 32-bit processors.
43 # for all 32-bit cases, pci64_hole_size is 0.
55 Note that 64-bit pci hole size is 0 in this case. If maxmem is set to
56 59.6G, QEMU should fail to start with a message "phy-bits are too low".
62 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=59.6G',
63 '-cpu', 'pentium,pse36=on', '-display', 'none',
64 '-object', 'memory-backend-ram,id=mem1,size=1G',
65 '-device', 'pc-dimm,id=vm0,memdev=mem1')
69 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
70 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
80 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=59.6G',
81 '-cpu', 'pentium,pae=on', '-display', 'none',
82 '-object', 'memory-backend-ram,id=mem1,size=1G',
83 '-device', 'pc-dimm,id=vm0,memdev=mem1')
87 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
88 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
97 self.vm.add_args('-m', '512,slots=1,maxmem=59.5G',
98 '-cpu', 'pentium,pse36=on', '-display', 'none',
99 '-object', 'memory-backend-ram,id=mem1,size=1G',
100 '-device', 'pc-dimm,id=vm0,memdev=mem1')
105 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
115 self.vm.add_args('-m', '512,slots=1,maxmem=59.5G',
116 '-cpu', 'pentium,pae=on', '-display', 'none',
117 '-object', 'memory-backend-ram,id=mem1,size=1G',
118 '-device', 'pc-dimm,id=vm0,memdev=mem1')
123 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
132 self.vm.add_args('-m', '512,slots=1,maxmem=59.5G',
133 '-cpu', 'pentium2', '-display', 'none',
134 '-object', 'memory-backend-ram,id=mem1,size=1G',
135 '-device', 'pc-dimm,id=vm0,memdev=mem1')
140 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
146 4 GiB should make QEMU fail to start with "phys-bits too low"
152 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=4G',
153 '-cpu', 'pentium', '-display', 'none',
154 '-object', 'memory-backend-ram,id=mem1,size=1G',
155 '-device', 'pc-dimm,id=vm0,memdev=mem1')
159 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
160 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
162 # now lets test some 64-bit CPU cases.
166 1024 GiB and ends at 1 TiB - 1. If the max GPA falls in this range,
169 For q35-7.0 machines, "above 4G" memory starts are 4G.
174 1024 GiB - 4 GiB - 1 GiB per slot for alignment - 32 GiB + 0.5 GiB
179 self.set_machine('pc-q35-7.0')
180 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=988G',
181 '-display', 'none',
182 '-object', 'memory-backend-ram,id=mem1,size=1G',
183 '-device', 'pc-dimm,id=vm0,memdev=mem1')
187 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
188 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
200 self.set_machine('pc-q35-7.1')
201 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=976G',
202 '-display', 'none',
203 '-object', 'memory-backend-ram,id=mem1,size=1G',
204 '-device', 'pc-dimm,id=vm0,memdev=mem1')
208 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
209 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
213 Same as q35-7.0 AMD case except that here we check that QEMU can
217 self.set_machine('pc-q35-7.0')
218 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=987.5G',
219 '-display', 'none',
220 '-object', 'memory-backend-ram,id=mem1,size=1G',
221 '-device', 'pc-dimm,id=vm0,memdev=mem1')
226 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
230 Same as q35-7.1 AMD case except that here we check that QEMU can
234 self.set_machine('pc-q35-7.1')
235 self.vm.add_args('-S', '-m', '512,slots=1,maxmem=975.5G',
236 '-display', 'none',
237 '-object', 'memory-backend-ram,id=mem1,size=1G',
238 '-device', 'pc-dimm,id=vm0,memdev=mem1')
243 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
252 self.set_machine('pc-q35-7.1')
253 self.vm.add_args('-S', '-cpu', 'Skylake-Server',
254 '-m', '512,slots=1,maxmem=976G',
255 '-display', 'none',
256 '-object', 'memory-backend-ram,id=mem1,size=1G',
257 '-device', 'pc-dimm,id=vm0,memdev=mem1')
262 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
267 By setting maxram above 1012 GiB - 32 GiB - 4 GiB = 976 GiB, we can
268 force "above_4G" memory to start at 1 TiB for q35-7.1 machines
272 GiB with 1 GiB per slot for alignment and 0.5 GiB as non-hotplug
273 memory for the VM (1024 - 32 - 1 + 0.5). With 992 GiB, QEMU should
277 self.set_machine('pc-q35-7.1')
278 self.vm.add_args('-S', '-cpu', 'EPYC-v4,phys-bits=41',
279 '-m', '512,slots=1,maxmem=992G',
280 '-display', 'none',
281 '-object', 'memory-backend-ram,id=mem1,size=1G',
282 '-device', 'pc-dimm,id=vm0,memdev=mem1')
286 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
287 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
296 self.set_machine('pc-q35-7.1')
297 self.vm.add_args('-S', '-cpu', 'EPYC-v4,phys-bits=41',
298 '-m', '512,slots=1,maxmem=990G',
299 '-display', 'none',
300 '-object', 'memory-backend-ram,id=mem1,size=1G',
301 '-device', 'pc-dimm,id=vm0,memdev=mem1')
306 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')
318 self.vm.add_args('-S', '-cpu', 'Skylake-Server,phys-bits=40',
319 '-m', '512,slots=1,maxmem=987G',
320 '-display', 'none',
321 '-device', 'pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl.1',
322 '-M', 'cxl=on,cxl-fmw.0.targets.0=cxl.1,cxl-fmw.0.size=1G')
326 self.assertEqual(self.vm.exitcode(), 1, "QEMU exit code should be 1")
327 self.assertRegex(self.vm.get_log(), r'phys-bits too low')
337 self.vm.add_args('-S', '-cpu', 'Skylake-Server,phys-bits=40',
338 '-machine', 'cxl=on',
339 '-m', '512,slots=1,maxmem=987G',
340 '-display', 'none',
341 '-device', 'pxb-cxl,bus_nr=12,bus=pcie.0,id=cxl.1')
346 self.assertNotRegex(self.vm.get_log(), r'phys-bits too low')