Xen HVM guests running linux 4.10 fail to boot on Intel hosts
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Won't Fix
|
Undecided
|
Unassigned | ||
Trusty |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
Yakkety |
Invalid
|
Undecided
|
Unassigned | ||
Zesty |
Won't Fix
|
Undecided
|
Unassigned | ||
xen (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Trusty |
Fix Released
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
Yakkety |
Fix Released
|
High
|
Unassigned | ||
Zesty |
Fix Released
|
High
|
Unassigned |
Bug Description
Starting with Linux kernel 4.10, the kernel does some sanity checking on the TSC_ADJUST MSR. Xen has implemented some support for that MSR in the hypervisor (Xen 4.3 and later) for HVM guests. But boot and secondary vCPUs are set up inconsistently. This causes the boot of a 4.10 HVM guest to hang early on boot.
This was fixed in the hypervisor by:
commit 98297f09bd07bb6
x86/hvm: do not set msr_tsc_adjust on hvm_set_
That fix would be contained in 4.6.5 and 4.7.2 and would be in 4.8.1 (not released, yet) which mean that Ubuntu 14.04/16.04/16.10 and 17.04 currently are affected.
---
SRU Justification:
Impact: Without the TSC_ADJUST MSR fix, 4.10 and later kernels will get stuck at boot when running as (PV)HVM guests on Xen 4.3 and later.
Fix: Above fix either individually applied or as part of Xen stable stream (for Xen 4.7.x and 4.6.x) resolves the issue.
Testcase:
- Requires Intel based host which supports the TSC_ADJUST MSR
- Configured as Xen host
- HVM guest running Zesty/17.04
- Stuck at boot before, normal booting OS after
CVE References
- 2013-2076
- 2015-5307
- 2015-7812
- 2015-7813
- 2015-7814
- 2015-7835
- 2015-7969
- 2015-7970
- 2015-7971
- 2015-7972
- 2015-8104
- 2015-8338
- 2015-8339
- 2015-8340
- 2015-8341
- 2015-8550
- 2015-8555
- 2015-8615
- 2016-10013
- 2016-10024
- 2016-10025
- 2016-1570
- 2016-1571
- 2016-2270
- 2016-2271
- 2016-3158
- 2016-3159
- 2016-3960
- 2016-4480
- 2016-4962
- 2016-4963
- 2016-5242
- 2016-6258
- 2016-6259
- 2016-7092
- 2016-7093
- 2016-7094
- 2016-7777
- 2016-9377
- 2016-9378
- 2016-9379
- 2016-9380
- 2016-9382
- 2016-9383
- 2016-9384
- 2016-9385
- 2016-9386
- 2016-9815
- 2016-9816
- 2016-9817
- 2016-9818
- 2016-9932
tags: | added: patch |
tags: | added: kernel-da-key |
description: | updated |
Changed in xen (Ubuntu Trusty): | |
status: | Triaged → Fix Committed |
Changed in xen (Ubuntu Xenial): | |
status: | Triaged → Fix Committed |
Changed in xen (Ubuntu Yakkety): | |
status: | Triaged → Fix Committed |
Changed in xen (Ubuntu Zesty): | |
status: | Triaged → Fix Committed |
assignee: | Stefan Bader (smb) → nobody |
Adding linux task to show the relationship between the two. Basically starting with 4.10 the kernel verifies the feature and exposes the broken implementation.