|
@@ -0,0 +1,49 @@
|
|
|
+#include <linux/kernel.h>
|
|
|
+#include <linux/module.h>
|
|
|
+#include <linux/export.h>
|
|
|
+#include <linux/mm.h>
|
|
|
+#include <linux/vmalloc.h>
|
|
|
+#include <linux/slab.h>
|
|
|
+#include <linux/sizes.h>
|
|
|
+
|
|
|
+#include <asm/page.h>
|
|
|
+#ifdef CONFIG_MIPS
|
|
|
+#include <asm/bootinfo.h>
|
|
|
+#endif
|
|
|
+
|
|
|
+struct foo {
|
|
|
+ unsigned int bar;
|
|
|
+};
|
|
|
+
|
|
|
+struct foo *foo;
|
|
|
+
|
|
|
+static int __init test_debug_virtual_init(void)
|
|
|
+{
|
|
|
+ phys_addr_t pa;
|
|
|
+ void *va;
|
|
|
+
|
|
|
+ va = (void *)VMALLOC_START;
|
|
|
+ pa = virt_to_phys(va);
|
|
|
+
|
|
|
+ pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va);
|
|
|
+
|
|
|
+ foo = kzalloc(sizeof(*foo), GFP_KERNEL);
|
|
|
+ if (!foo)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ pa = virt_to_phys(foo);
|
|
|
+ va = foo;
|
|
|
+ pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+module_init(test_debug_virtual_init);
|
|
|
+
|
|
|
+static void __exit test_debug_virtual_exit(void)
|
|
|
+{
|
|
|
+ kfree(foo);
|
|
|
+}
|
|
|
+module_exit(test_debug_virtual_exit);
|
|
|
+
|
|
|
+MODULE_LICENSE("GPL");
|
|
|
+MODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL");
|