Commit b8449265 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini

KVM: s390: Do s390 specific init without bouncing through kvm_init()

Move the guts of kvm_arch_init() into a new helper, __kvm_s390_init(),
and invoke the new helper directly from kvm_s390_init() instead of
bouncing through kvm_init().  Invoking kvm_arch_init() is the very
first action performed by kvm_init(), i.e. this is a glorified nop.

Moving setup to __kvm_s390_init() will allow tagging more functions as
__init, and emptying kvm_arch_init() will allow dropping the hook
entirely once all architecture implementations are nops.

No functional change intended.
Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
Reviewed-by: default avatarEric Farman <farman@linux.ibm.com>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@linaro.org>
Message-Id: <20221130230934.1014142-28-seanjc@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent ae19b15d
...@@ -469,7 +469,7 @@ static void kvm_s390_cpu_feat_init(void) ...@@ -469,7 +469,7 @@ static void kvm_s390_cpu_feat_init(void)
*/ */
} }
int kvm_arch_init(void *opaque) static int __kvm_s390_init(void)
{ {
int rc = -ENOMEM; int rc = -ENOMEM;
...@@ -527,7 +527,7 @@ int kvm_arch_init(void *opaque) ...@@ -527,7 +527,7 @@ int kvm_arch_init(void *opaque)
return rc; return rc;
} }
void kvm_arch_exit(void) static void __kvm_s390_exit(void)
{ {
gmap_unregister_pte_notifier(&gmap_notifier); gmap_unregister_pte_notifier(&gmap_notifier);
gmap_unregister_pte_notifier(&vsie_gmap_notifier); gmap_unregister_pte_notifier(&vsie_gmap_notifier);
...@@ -541,6 +541,16 @@ void kvm_arch_exit(void) ...@@ -541,6 +541,16 @@ void kvm_arch_exit(void)
debug_unregister(kvm_s390_dbf_uv); debug_unregister(kvm_s390_dbf_uv);
} }
int kvm_arch_init(void *opaque)
{
return 0;
}
void kvm_arch_exit(void)
{
}
/* Section: device related */ /* Section: device related */
long kvm_arch_dev_ioctl(struct file *filp, long kvm_arch_dev_ioctl(struct file *filp,
unsigned int ioctl, unsigned long arg) unsigned int ioctl, unsigned long arg)
...@@ -5696,7 +5706,7 @@ static inline unsigned long nonhyp_mask(int i) ...@@ -5696,7 +5706,7 @@ static inline unsigned long nonhyp_mask(int i)
static int __init kvm_s390_init(void) static int __init kvm_s390_init(void)
{ {
int i; int i, r;
if (!sclp.has_sief2) { if (!sclp.has_sief2) {
pr_info("SIE is not available\n"); pr_info("SIE is not available\n");
...@@ -5712,12 +5722,23 @@ static int __init kvm_s390_init(void) ...@@ -5712,12 +5722,23 @@ static int __init kvm_s390_init(void)
kvm_s390_fac_base[i] |= kvm_s390_fac_base[i] |=
stfle_fac_list[i] & nonhyp_mask(i); stfle_fac_list[i] & nonhyp_mask(i);
return kvm_init(NULL, sizeof(struct kvm_vcpu), 0, THIS_MODULE); r = __kvm_s390_init();
if (r)
return r;
r = kvm_init(NULL, sizeof(struct kvm_vcpu), 0, THIS_MODULE);
if (r) {
__kvm_s390_exit();
return r;
}
return 0;
} }
static void __exit kvm_s390_exit(void) static void __exit kvm_s390_exit(void)
{ {
kvm_exit(); kvm_exit();
__kvm_s390_exit();
} }
module_init(kvm_s390_init); module_init(kvm_s390_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment