kasan: mimic the kernel's setup

Kasan has 2 tier calls, an early init call followed by
a setup_arch() specific call. Our work will be to find
a solution that fits using the tables.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
diff --git a/kasan.c b/kasan.c
index 2867039..5f6ef85 100644
--- a/kasan.c
+++ b/kasan.c
@@ -6,6 +6,7 @@
 static bool __is_kasan_setup = false;
 
 int kasan_early_init(void) {
+	printf("Early init for Kasan...\n");
 	__is_kasan_setup = true;
 	return 0;
 }
@@ -15,22 +16,8 @@
 	return __is_kasan_setup;
 }
 
-static int init_kasan(void) {
-	sleep(1);
-
+void setup_arch_kasan(void) {
 	if (!is_kasan_setup())
-		return -EOPNOTSUPP;
-
-	return 0;
+		return;
+	printf("Calling setup_arch work for Kasan...\n");
 }
-
-static int detect_kasan(void) {
-	return 1;
-}
-
-struct init_fn kasan_init_fn __init_fn(INIT_EARLY) = {
-	.detect = detect_kasan,
-	.early_init = init_kasan,
-	.name = "Kasan",
-	.critical = true,
-};
diff --git a/kasan.h b/kasan.h
index 173e3fa..9f7656b 100644
--- a/kasan.h
+++ b/kasan.h
@@ -1,4 +1,5 @@
 #include <stdbool.h>
 
 int kasan_early_init(void);
+void setup_arch_kasan(void);
 bool is_kasan_setup(void);
diff --git a/start_kernel.c b/start_kernel.c
index 266f5c5..8f3b1ae 100644
--- a/start_kernel.c
+++ b/start_kernel.c
@@ -5,8 +5,9 @@
 
 int start_kernel(void)
 {
+	printf("Calling start_kernel()...\n");
+
 	setup_arch();
 
 	return late_init();
 }
-
diff --git a/x86.c b/x86.c
index 42c35bb..328b822 100644
--- a/x86.c
+++ b/x86.c
@@ -17,8 +17,8 @@
 {
 	int ret;
 
-	sort_table(__tbl, __tbl_end);                                           
-	check_table_entries(__tbl, __tbl_end); 
+	sort_table(__tbl, __tbl_end);
+	check_table_entries(__tbl, __tbl_end);
 
 	ret = early_init();
 	if (ret) {
@@ -42,4 +42,6 @@
 void setup_arch(void)
 {
 	setup_arch_init();
+	if (is_kasan_setup())
+		setup_arch_kasan();
 }
diff --git a/xen.c b/xen.c
index 219c017..9c0a9eb 100644
--- a/xen.c
+++ b/xen.c
@@ -19,8 +19,8 @@
 
 	__booting_xen = true;
 
-	sort_table(__tbl, __tbl_end);                                           
-	check_table_entries(__tbl, __tbl_end); 
+	sort_table(__tbl, __tbl_end);
+	check_table_entries(__tbl, __tbl_end);
 
 	ret = early_init();
 	if (ret) {