diff options
Diffstat (limited to '')
| -rw-r--r-- | results/classifier/gemma3:12b/hypervisor/1809 | 54 | ||||
| -rw-r--r-- | results/classifier/gemma3:12b/hypervisor/1809144 | 36 |
2 files changed, 90 insertions, 0 deletions
diff --git a/results/classifier/gemma3:12b/hypervisor/1809 b/results/classifier/gemma3:12b/hypervisor/1809 new file mode 100644 index 000000000..993c2c615 --- /dev/null +++ b/results/classifier/gemma3:12b/hypervisor/1809 @@ -0,0 +1,54 @@ + +config machine "virt-6.2" with qemu-system-aarch64,it report "mem is not supported by this machine type" +Description of problem: +When i config the machine with virt-6.2 and config the numa for cpu,it report "mem is not supported by this machine type",but with virt-5.0 it work well,the newer version virt not support it? It is bug or require hardware support?Or compile configure is not correctlly? + +when i create vm,get the error report as follow: + +virsh create test.xml +``` +qemu unexpectedly closed the monitor: qemu-system-aarch64: -chardev socket,id=charmonitor,fd=34,server,nowait: warning: short-form boolean option 'server' deprecated +Please use server=on instead +qemu-system-aarch64: -chardev socket,id=charmonitor,fd=34,server,nowait: warning: short-form boolean option 'nowait' deprecated +Please use wait=off instead +configure accelerator virt-6.2 start +machine init start +2023-08-04T02:17:13.984797Z qemu-system-aarch64: -numa node,nodeid=0,cpus=0-3,mem=8192: Parameter -numa node,mem is not supported by this machine type +Use -numa node,memdev instead + +``` + + +I use qmp command "query-machines" get the result as follow: +``` +{ + "hotpluggable-cpus": true, + "name": "virt-6.2", + ** "numa-mem-supported": false,** + "default-cpu-type": "cortex-a15-arm-cpu", + "cpu-max": 512, + "deprecated": false, + "default-ram-id": "mach-virt.ram", + "alias": "virt" + }, +``` + +I add the code "mc->numa_mem_supported = true;" in the api "virt_machine_6_1_options",it can supoort numa,but i don't know whether it is affected. + +``` +DEFINE_VIRT_MACHINE_AS_LATEST(6, 2) + +static void virt_machine_6_1_options(MachineClass *mc) +{ + VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc)); + + virt_machine_6_2_options(mc); + compat_props_add(mc->compat_props, hw_compat_6_1, hw_compat_6_1_len); + mc->smp_props.prefer_sockets = true; + vmc->no_cpu_topology = true; + **mc->numa_mem_supported = true;** + + /* qemu ITS was introduced with 6.2 */ + vmc->no_tcg_its = true; +} +``` diff --git a/results/classifier/gemma3:12b/hypervisor/1809144 b/results/classifier/gemma3:12b/hypervisor/1809144 new file mode 100644 index 000000000..e09a04524 --- /dev/null +++ b/results/classifier/gemma3:12b/hypervisor/1809144 @@ -0,0 +1,36 @@ + +SVM instructions fail with SVME bit enabled + +I was trying to use QEMU/TCG to emulate some stuff that uses SVM. +I know SVM is only partially implemented but I gave it a try anyway. + +I found that if SVM is enabled in the same basic block in which there's a call to VMSAVE/etc, +the call fails as illegal op because the flags don't get updated correctly. + +The pseudocode for the asm I'm running is: + +``` +EFER |= SVME; set the appropriate bit with wrmsr +vmsave +``` + +This is an example of the relevant translate.c code: + +``` + if (!(s->flags & HF_SVME_MASK) || !s->pe) { + goto illegal_op; + } + if (s->cpl != 0) { + gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base); + break; + } +``` + +s->flags doesn't get updated after the wrmsr instruction and so QEMU raises an illegal opcode interrupt. + +A quick fix is to make the tb end after `wrmsr` instructions, but it's an hack afaik. +I'm not too comfortable with QEMU's code, so I don't know what a proper fix would be. + +Cheers, + +thebabush \ No newline at end of file |