.dump = hv_kmsg_dump,
 };
 
+static void hv_kmsg_dump_register(void)
+{
+       int ret;
+
+       hv_panic_page = hv_alloc_hyperv_zeroed_page();
+       if (!hv_panic_page) {
+               pr_err("Hyper-V: panic message page memory allocation failed\n");
+               return;
+       }
+
+       ret = kmsg_dump_register(&hv_kmsg_dumper);
+       if (ret) {
+               pr_err("Hyper-V: kmsg dump register error 0x%x\n", ret);
+               hv_free_hyperv_page((unsigned long)hv_panic_page);
+               hv_panic_page = NULL;
+       }
+}
+
 static struct ctl_table_header *hv_ctl_table_hdr;
 
 /*
                 * capability is supported by the hypervisor.
                 */
                hv_get_crash_ctl(hyperv_crash_ctl);
-               if (hyperv_crash_ctl & HV_CRASH_CTL_CRASH_NOTIFY_MSG) {
-                       hv_panic_page = (void *)hv_alloc_hyperv_zeroed_page();
-                       if (hv_panic_page) {
-                               ret = kmsg_dump_register(&hv_kmsg_dumper);
-                               if (ret) {
-                                       pr_err("Hyper-V: kmsg dump register "
-                                               "error 0x%x\n", ret);
-                                       hv_free_hyperv_page(
-                                           (unsigned long)hv_panic_page);
-                                       hv_panic_page = NULL;
-                               }
-                       } else
-                               pr_err("Hyper-V: panic message page memory "
-                                       "allocation failed");
-               }
+               if (hyperv_crash_ctl & HV_CRASH_CTL_CRASH_NOTIFY_MSG)
+                       hv_kmsg_dump_register();
 
                register_die_notifier(&hyperv_die_block);
        }