diff options
| -rw-r--r-- | arch/x86/kvm/svm.c | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index af54327b9017..cab020acb509 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c | |||
| @@ -1600,6 +1600,23 @@ static void svm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event) | |||
| 1600 | avic_update_vapic_bar(svm, APIC_DEFAULT_PHYS_BASE); | 1600 | avic_update_vapic_bar(svm, APIC_DEFAULT_PHYS_BASE); |
| 1601 | } | 1601 | } |
| 1602 | 1602 | ||
| 1603 | static int avic_init_vcpu(struct vcpu_svm *svm) | ||
| 1604 | { | ||
| 1605 | int ret; | ||
| 1606 | |||
| 1607 | if (!avic) | ||
| 1608 | return 0; | ||
| 1609 | |||
| 1610 | ret = avic_init_backing_page(&svm->vcpu); | ||
| 1611 | if (ret) | ||
| 1612 | return ret; | ||
| 1613 | |||
| 1614 | INIT_LIST_HEAD(&svm->ir_list); | ||
| 1615 | spin_lock_init(&svm->ir_list_lock); | ||
| 1616 | |||
| 1617 | return ret; | ||
| 1618 | } | ||
| 1619 | |||
| 1603 | static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) | 1620 | static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) |
| 1604 | { | 1621 | { |
| 1605 | struct vcpu_svm *svm; | 1622 | struct vcpu_svm *svm; |
| @@ -1636,14 +1653,9 @@ static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) | |||
| 1636 | if (!hsave_page) | 1653 | if (!hsave_page) |
| 1637 | goto free_page3; | 1654 | goto free_page3; |
| 1638 | 1655 | ||
| 1639 | if (avic) { | 1656 | err = avic_init_vcpu(svm); |
| 1640 | err = avic_init_backing_page(&svm->vcpu); | 1657 | if (err) |
| 1641 | if (err) | 1658 | goto free_page4; |
| 1642 | goto free_page4; | ||
| 1643 | |||
| 1644 | INIT_LIST_HEAD(&svm->ir_list); | ||
| 1645 | spin_lock_init(&svm->ir_list_lock); | ||
| 1646 | } | ||
| 1647 | 1659 | ||
| 1648 | /* We initialize this flag to true to make sure that the is_running | 1660 | /* We initialize this flag to true to make sure that the is_running |
| 1649 | * bit would be set the first time the vcpu is loaded. | 1661 | * bit would be set the first time the vcpu is loaded. |
