| 617 | } |
| 618 | |
| 619 | bool |
| 620 | vm_cpuid_capability(struct vm *vm, int vcpuid, enum vm_cpuid_capability cap) |
| 621 | { |
| 622 | bool rv; |
| 623 | |
| 624 | KASSERT(cap > 0 && cap < VCC_LAST, ("%s: invalid vm_cpu_capability %d", |
| 625 | __func__, cap)); |
| 626 | |
| 627 | /* |
| 628 | * Simply passthrough the capabilities of the host cpu for now. |
| 629 | */ |
| 630 | rv = false; |
| 631 | switch (cap) { |
| 632 | case VCC_NO_EXECUTE: |
| 633 | if (amd_feature & AMDID_NX) |
| 634 | rv = true; |
| 635 | break; |
| 636 | case VCC_FFXSR: |
| 637 | if (amd_feature & AMDID_FFXSR) |
| 638 | rv = true; |
| 639 | break; |
| 640 | case VCC_TCE: |
| 641 | if (amd_feature2 & AMDID2_TCE) |
| 642 | rv = true; |
| 643 | break; |
| 644 | default: |
| 645 | panic("%s: unknown vm_cpu_capability %d", __func__, cap); |
| 646 | } |
| 647 | return (rv); |
| 648 | } |
no test coverage detected