Unlike 32-bit PV guests, HVM guests may switch freely between 64-bit and other modes. This in particular means that they may set registers used to pass 32-bit-mode hypercall arguments to values outside of the range 32-bit code would be able to set them to. When processing of hypercalls takes a considerable amount of time, the hypervisor may choose to invoke a hypercall continuation. Doing so involves putting (perhaps updated) hypercall arguments in respective registers. For guests not running in 64-bit mode this further involves a certain amount of translation of the values. Unfortunately internal sanity checking of these translated values assumes high halves of registers to always be clear when invoking a hypercall. When this is found not to be the case, it triggers a consistency check in the hypervisor and causes a crash.
OS | Version | Architecture | Package | Version | Filename |
---|---|---|---|---|---|
Debian | 12 | all | xen | <= 4.17.3+10-g091466ba55-1~deb12u1 | xen_4.17.3+10-g091466ba55-1~deb12u1_all.deb |
Debian | 11 | all | xen | <= 4.14.6-1 | xen_4.14.6-1_all.deb |
Debian | 10 | all | xen | < 4.11.4+107-gef32c7afa2-1 | xen_4.11.4+107-gef32c7afa2-1_all.deb |
Debian | 999 | all | xen | <= 4.17.3+36-g54dacb5c02-1 | xen_4.17.3+36-g54dacb5c02-1_all.deb |
Debian | 13 | all | xen | <= 4.17.3+36-g54dacb5c02-1 | xen_4.17.3+36-g54dacb5c02-1_all.deb |