cpuid handling for guests€¦ · friday 26th august 2016 andrew cooper (citrix xenserver) cpuid...

39
CPUID handling for guests Andrew Cooper Citrix XenServer Friday 26 th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26 th August 2016 1 / 11

Upload: others

Post on 12-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling for guests

Andrew Cooper

Citrix XenServer

Friday 26th August 2016

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11

Page 2: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

The CPUID instruction

Introduced in 1993I Takes input parameters in %eax and %ecxI Returns values in %eax, %ebx, %ecx and %edx

Return information about the processorI Identifying information (GenuineIntel, AuthenticAMD, etc)I Feature information (available instructions, MSRs, etc)I Topology information (sockets, cores, threads, caches, TLBs, etc)

UnprivelegedI Useable by userspaceI Doesn’t trap to supervisor mode

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 2 / 11

Page 3: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

The CPUID instruction

Introduced in 1993I Takes input parameters in %eax and %ecxI Returns values in %eax, %ebx, %ecx and %edx

Return information about the processorI Identifying information (GenuineIntel, AuthenticAMD, etc)I Feature information (available instructions, MSRs, etc)I Topology information (sockets, cores, threads, caches, TLBs, etc)

UnprivelegedI Useable by userspaceI Doesn’t trap to supervisor mode

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 2 / 11

Page 4: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

The CPUID instruction

Introduced in 1993I Takes input parameters in %eax and %ecxI Returns values in %eax, %ebx, %ecx and %edx

Return information about the processorI Identifying information (GenuineIntel, AuthenticAMD, etc)I Feature information (available instructions, MSRs, etc)I Topology information (sockets, cores, threads, caches, TLBs, etc)

UnprivelegedI Useable by userspaceI Doesn’t trap to supervisor mode

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 2 / 11

Page 5: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

OS expectations

CPUID information don’t change after boot

Some kernels binary patch themselves (e.g. Alternatives framework)I e.g. New features in fastpaths (SMAP)I e.g. Errata workarounds

Userspace function dispatching at process startI e.g. Most efficient memset()I e.g. Hardware crypto if availableI e.g. Audio or video processing

Migration modelled as suspend/resumeI Not a reboot

Guest must not observe a loss of dependent features

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 3 / 11

Page 6: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

OS expectations

CPUID information don’t change after boot

Some kernels binary patch themselves (e.g. Alternatives framework)I e.g. New features in fastpaths (SMAP)I e.g. Errata workarounds

Userspace function dispatching at process startI e.g. Most efficient memset()I e.g. Hardware crypto if availableI e.g. Audio or video processing

Migration modelled as suspend/resumeI Not a reboot

Guest must not observe a loss of dependent features

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 3 / 11

Page 7: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

OS expectations

CPUID information don’t change after boot

Some kernels binary patch themselves (e.g. Alternatives framework)I e.g. New features in fastpaths (SMAP)I e.g. Errata workarounds

Userspace function dispatching at process startI e.g. Most efficient memset()I e.g. Hardware crypto if availableI e.g. Audio or video processing

Migration modelled as suspend/resumeI Not a reboot

Guest must not observe a loss of dependent features

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 3 / 11

Page 8: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

OS expectations

CPUID information don’t change after boot

Some kernels binary patch themselves (e.g. Alternatives framework)I e.g. New features in fastpaths (SMAP)I e.g. Errata workarounds

Userspace function dispatching at process startI e.g. Most efficient memset()I e.g. Hardware crypto if availableI e.g. Audio or video processing

Migration modelled as suspend/resumeI Not a reboot

Guest must not observe a loss of dependent features

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 3 / 11

Page 9: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

OS expectations

CPUID information don’t change after boot

Some kernels binary patch themselves (e.g. Alternatives framework)I e.g. New features in fastpaths (SMAP)I e.g. Errata workarounds

Userspace function dispatching at process startI e.g. Most efficient memset()I e.g. Hardware crypto if availableI e.g. Audio or video processing

Migration modelled as suspend/resumeI Not a reboot

Guest must not observe a loss of dependent features

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 3 / 11

Page 10: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

How compatible does hardware need to be?

All features previously used need to continue functioningI All instructions, MSRs, etc

Available features controlled by:I CPU family, model and steppingI Firmware version and settingsI Microcode versionI Xen’s hardware support and administrator choices

Typically, “identical” servers are notI Different CPUs, especially on RMA’d hardwareI Configuring firmware is tedious and error prone

Must lie to guests (for their own good)

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 4 / 11

Page 11: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

How compatible does hardware need to be?

All features previously used need to continue functioningI All instructions, MSRs, etc

Available features controlled by:I CPU family, model and steppingI Firmware version and settingsI Microcode versionI Xen’s hardware support and administrator choices

Typically, “identical” servers are notI Different CPUs, especially on RMA’d hardwareI Configuring firmware is tedious and error prone

Must lie to guests (for their own good)

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 4 / 11

Page 12: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

How compatible does hardware need to be?

All features previously used need to continue functioningI All instructions, MSRs, etc

Available features controlled by:I CPU family, model and steppingI Firmware version and settingsI Microcode versionI Xen’s hardware support and administrator choices

Typically, “identical” servers are notI Different CPUs, especially on RMA’d hardwareI Configuring firmware is tedious and error prone

Must lie to guests (for their own good)

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 4 / 11

Page 13: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

How compatible does hardware need to be?

All features previously used need to continue functioningI All instructions, MSRs, etc

Available features controlled by:I CPU family, model and steppingI Firmware version and settingsI Microcode versionI Xen’s hardware support and administrator choices

Typically, “identical” servers are notI Different CPUs, especially on RMA’d hardwareI Configuring firmware is tedious and error prone

Must lie to guests (for their own good)

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 4 / 11

Page 14: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information

HVM guestsI CPUID instruction traps to hypervisorI Xen can control all information seen

PV guestsI CPUID instruction doesn’t trapI Xen has no direct control

PV Emulated CPUIDI Software can opt in to Xen’s controlI Adhoc use in PV guest kernels, but not by userspace

CPUID FaultingI Non-architectural, but available in Intel IvyBridge and laterI Causes CPUID to fault with #GP(0)I Xen can control all information seen

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 5 / 11

Page 15: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information

HVM guestsI CPUID instruction traps to hypervisorI Xen can control all information seen

PV guestsI CPUID instruction doesn’t trapI Xen has no direct control

PV Emulated CPUIDI Software can opt in to Xen’s controlI Adhoc use in PV guest kernels, but not by userspace

CPUID FaultingI Non-architectural, but available in Intel IvyBridge and laterI Causes CPUID to fault with #GP(0)I Xen can control all information seen

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 5 / 11

Page 16: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information

HVM guestsI CPUID instruction traps to hypervisorI Xen can control all information seen

PV guestsI CPUID instruction doesn’t trapI Xen has no direct control

PV Emulated CPUIDI Software can opt in to Xen’s controlI Adhoc use in PV guest kernels, but not by userspace

CPUID FaultingI Non-architectural, but available in Intel IvyBridge and laterI Causes CPUID to fault with #GP(0)I Xen can control all information seen

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 5 / 11

Page 17: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information

HVM guestsI CPUID instruction traps to hypervisorI Xen can control all information seen

PV guestsI CPUID instruction doesn’t trapI Xen has no direct control

PV Emulated CPUIDI Software can opt in to Xen’s controlI Adhoc use in PV guest kernels, but not by userspace

CPUID FaultingI Non-architectural, but available in Intel IvyBridge and laterI Causes CPUID to fault with #GP(0)I Xen can control all information seen

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 5 / 11

Page 18: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information (2)

CPUID MaskingI Non-architectural, “documented” only in whitepapers

AMD (All hardware Xen can run on)I Override MSRsI Must be careful not to advertise features unsupported in siliconI Covers basic and extended feature leaves

Intel (only some Nehalem/Westmere processors, SandyBridge)I AND mask against the real hardware valuesI Different MSRs on different hardwareI Covers basic, extended and xsave feature leaves

Magic CPUID bitsI APIC and OSXSAVE bits fast forwarded from other stateI Interaction with masking completely undocumentedI Behaviour reverse engineered, hopefully right

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 6 / 11

Page 19: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information (2)

CPUID MaskingI Non-architectural, “documented” only in whitepapers

AMD (All hardware Xen can run on)I Override MSRsI Must be careful not to advertise features unsupported in siliconI Covers basic and extended feature leaves

Intel (only some Nehalem/Westmere processors, SandyBridge)I AND mask against the real hardware valuesI Different MSRs on different hardwareI Covers basic, extended and xsave feature leaves

Magic CPUID bitsI APIC and OSXSAVE bits fast forwarded from other stateI Interaction with masking completely undocumentedI Behaviour reverse engineered, hopefully right

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 6 / 11

Page 20: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information (2)

CPUID MaskingI Non-architectural, “documented” only in whitepapers

AMD (All hardware Xen can run on)I Override MSRsI Must be careful not to advertise features unsupported in siliconI Covers basic and extended feature leaves

Intel (only some Nehalem/Westmere processors, SandyBridge)I AND mask against the real hardware valuesI Different MSRs on different hardwareI Covers basic, extended and xsave feature leaves

Magic CPUID bitsI APIC and OSXSAVE bits fast forwarded from other stateI Interaction with masking completely undocumentedI Behaviour reverse engineered, hopefully right

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 6 / 11

Page 21: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Controlling a guests view of information (2)

CPUID MaskingI Non-architectural, “documented” only in whitepapers

AMD (All hardware Xen can run on)I Override MSRsI Must be careful not to advertise features unsupported in siliconI Covers basic and extended feature leaves

Intel (only some Nehalem/Westmere processors, SandyBridge)I AND mask against the real hardware valuesI Different MSRs on different hardwareI Covers basic, extended and xsave feature leaves

Magic CPUID bitsI APIC and OSXSAVE bits fast forwarded from other stateI Interaction with masking completely undocumentedI Behaviour reverse engineered, hopefully right

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 6 / 11

Page 22: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Problematic areas to control

Guests can probe for some featuresI 1GB Superpage supportI AES instructions

Some features don’t have feature bitsI AMD’s Long Mode Segment Limit Enable

FPU pipeline behaviour exposed directly to guestsI MXCSR_MASKI Intel’s FPDP and FPCSDS

Some feature bits affect the interpretation of other leavesI CMP_LEGACY, HTT and X2APIC affect the topology interpretationI Can’t control topology information with masking

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 7 / 11

Page 23: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Problematic areas to control

Guests can probe for some featuresI 1GB Superpage supportI AES instructions

Some features don’t have feature bitsI AMD’s Long Mode Segment Limit Enable

FPU pipeline behaviour exposed directly to guestsI MXCSR_MASKI Intel’s FPDP and FPCSDS

Some feature bits affect the interpretation of other leavesI CMP_LEGACY, HTT and X2APIC affect the topology interpretationI Can’t control topology information with masking

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 7 / 11

Page 24: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Problematic areas to control

Guests can probe for some featuresI 1GB Superpage supportI AES instructions

Some features don’t have feature bitsI AMD’s Long Mode Segment Limit Enable

FPU pipeline behaviour exposed directly to guestsI MXCSR_MASKI Intel’s FPDP and FPCSDS

Some feature bits affect the interpretation of other leavesI CMP_LEGACY, HTT and X2APIC affect the topology interpretationI Can’t control topology information with masking

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 7 / 11

Page 25: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Problematic areas to control

Guests can probe for some featuresI 1GB Superpage supportI AES instructions

Some features don’t have feature bitsI AMD’s Long Mode Segment Limit Enable

FPU pipeline behaviour exposed directly to guestsI MXCSR_MASKI Intel’s FPDP and FPCSDS

Some feature bits affect the interpretation of other leavesI CMP_LEGACY, HTT and X2APIC affect the topology interpretationI Can’t control topology information with masking

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 7 / 11

Page 26: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 27: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 28: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 29: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 30: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 31: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling in Xen

No real develoment since the uni-vcpu guest daysI No concept of topology information

No auditing of the toolstack-provided informationI Lots of runtime adjustment to regain plausibility

Inconsistent whitelist/blacklist approachI Different approaches between different leavesI Different approaches between different guest typesI Some information passed straight through from hardware

No knowledge of feature dependencyI Buggy assumptions in guests result in crashes

No way for the toolstack to evaluate the hardware capabilityI Feature internals exposed in the ABI, with no API

PV dependence on leaked CPUID informationI Hardware domain for C/P states, MTRRsI Control domain for building guests

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 8 / 11

Page 32: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID-related improvements in Xen 4.7

Introduce “a featureset” in the API/ABII Keys as specified in architecture manualsI Can be treated as opaque by higher level software

At boot, Xen calculates featuresets for itself and the toolstack:

raw Features supported by hardware

host Features used by Xen (after errata, command line, etc)

pv Maximum featureset available for PV guests

hvm Maximum featureset available for HVM guests

Shared Xen/libxc algorithm for feature dependenciesI Provides consistent logic between Xen and libxcI Build-time calculations to avoid complicated runtime logic

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 9 / 11

Page 33: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID-related improvements in Xen 4.7

Introduce “a featureset” in the API/ABII Keys as specified in architecture manualsI Can be treated as opaque by higher level software

At boot, Xen calculates featuresets for itself and the toolstack:

raw Features supported by hardware

host Features used by Xen (after errata, command line, etc)

pv Maximum featureset available for PV guests

hvm Maximum featureset available for HVM guests

Shared Xen/libxc algorithm for feature dependenciesI Provides consistent logic between Xen and libxcI Build-time calculations to avoid complicated runtime logic

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 9 / 11

Page 34: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID-related improvements in Xen 4.7

Introduce “a featureset” in the API/ABII Keys as specified in architecture manualsI Can be treated as opaque by higher level software

At boot, Xen calculates featuresets for itself and the toolstack:

raw Features supported by hardware

host Features used by Xen (after errata, command line, etc)

pv Maximum featureset available for PV guests

hvm Maximum featureset available for HVM guests

Shared Xen/libxc algorithm for feature dependenciesI Provides consistent logic between Xen and libxcI Build-time calculations to avoid complicated runtime logic

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 9 / 11

Page 35: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Future work

Extend the featureset concept to a full CPUID policyI Needs guest topology informationI Will allow control of MAXPHYSADDR

Improved hypercalls for policiesI XEN_DOMCTL_get_cpuid_policyI Xen to audit policy plausibility at hypercall time, not runtime

More migration stream workI CPUID policy should be in the migration streamI Avoid mistakes when regeneratingI Can finaly audit RAM/CPU state against realityI Allows for a pre-migrate check at the destination

MSRs

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 10 / 11

Page 36: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Future work

Extend the featureset concept to a full CPUID policyI Needs guest topology informationI Will allow control of MAXPHYSADDR

Improved hypercalls for policiesI XEN_DOMCTL_get_cpuid_policyI Xen to audit policy plausibility at hypercall time, not runtime

More migration stream workI CPUID policy should be in the migration streamI Avoid mistakes when regeneratingI Can finaly audit RAM/CPU state against realityI Allows for a pre-migrate check at the destination

MSRs

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 10 / 11

Page 37: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Future work

Extend the featureset concept to a full CPUID policyI Needs guest topology informationI Will allow control of MAXPHYSADDR

Improved hypercalls for policiesI XEN_DOMCTL_get_cpuid_policyI Xen to audit policy plausibility at hypercall time, not runtime

More migration stream workI CPUID policy should be in the migration streamI Avoid mistakes when regeneratingI Can finaly audit RAM/CPU state against realityI Allows for a pre-migrate check at the destination

MSRs

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 10 / 11

Page 38: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

Future work

Extend the featureset concept to a full CPUID policyI Needs guest topology informationI Will allow control of MAXPHYSADDR

Improved hypercalls for policiesI XEN_DOMCTL_get_cpuid_policyI Xen to audit policy plausibility at hypercall time, not runtime

More migration stream workI CPUID policy should be in the migration streamI Avoid mistakes when regeneratingI Can finaly audit RAM/CPU state against realityI Allows for a pre-migrate check at the destination

MSRs

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 10 / 11

Page 39: CPUID handling for guests€¦ · Friday 26th August 2016 Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 1 / 11. ... Andrew Cooper (Citrix XenServer)

CPUID handling for guests

Any Questions?

Andrew Cooper (Citrix XenServer) CPUID handling for guests Friday 26th August 2016 11 / 11