aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>2017-09-12 11:42:40 -0400
committerRadim Krčmář <rkrcmar@redhat.com>2017-09-13 12:29:06 -0400
commitdfa20099e26e35cd9e83d4d43172615c73c4e9f5 (patch)
tree534dd0828483de6e77dbaac18ba2a0558306c929
parent5153723388c8691b886eb9ad28dde92c01f9b191 (diff)
KVM: SVM: Refactor AVIC vcpu initialization into avic_init_vcpu()
Preparing the base code for subsequent changes. This does not change existing logic. Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
-rw-r--r--arch/x86/kvm/svm.c28
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
1603static 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
1603static struct kvm_vcpu *svm_create_vcpu(struct kvm *kvm, unsigned int id) 1620static 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.