diff options
author | Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> | 2017-09-12 11:42:40 -0400 |
---|---|---|
committer | Radim Krčmář <rkrcmar@redhat.com> | 2017-09-13 12:29:06 -0400 |
commit | dfa20099e26e35cd9e83d4d43172615c73c4e9f5 (patch) | |
tree | 534dd0828483de6e77dbaac18ba2a0558306c929 | |
parent | 5153723388c8691b886eb9ad28dde92c01f9b191 (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.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. |