mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
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: Sean Christopherson <seanjc@google.com> Reviewed-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-Id: <20221130230934.1014142-28-seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
ae19b15d91
commit
b844926591
@ -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;
|
||||
|
||||
@ -527,7 +527,7 @@ int kvm_arch_init(void *opaque)
|
||||
return rc;
|
||||
}
|
||||
|
||||
void kvm_arch_exit(void)
|
||||
static void __kvm_s390_exit(void)
|
||||
{
|
||||
gmap_unregister_pte_notifier(&gmap_notifier);
|
||||
gmap_unregister_pte_notifier(&vsie_gmap_notifier);
|
||||
@ -541,6 +541,16 @@ void kvm_arch_exit(void)
|
||||
debug_unregister(kvm_s390_dbf_uv);
|
||||
}
|
||||
|
||||
int kvm_arch_init(void *opaque)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void kvm_arch_exit(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/* Section: device related */
|
||||
long kvm_arch_dev_ioctl(struct file *filp,
|
||||
unsigned int ioctl, unsigned long arg)
|
||||
@ -5696,7 +5706,7 @@ static inline unsigned long nonhyp_mask(int i)
|
||||
|
||||
static int __init kvm_s390_init(void)
|
||||
{
|
||||
int i;
|
||||
int i, r;
|
||||
|
||||
if (!sclp.has_sief2) {
|
||||
pr_info("SIE is not available\n");
|
||||
@ -5712,12 +5722,23 @@ static int __init kvm_s390_init(void)
|
||||
kvm_s390_fac_base[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)
|
||||
{
|
||||
kvm_exit();
|
||||
|
||||
__kvm_s390_exit();
|
||||
}
|
||||
|
||||
module_init(kvm_s390_init);
|
||||
|
Loading…
Reference in New Issue
Block a user