1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 #include <linux/kernel.h> 2 #include <linux/kernel.h> 3 #include <linux/module.h> 3 #include <linux/module.h> 4 #include <linux/export.h> 4 #include <linux/export.h> 5 #include <linux/mm.h> 5 #include <linux/mm.h> 6 #include <linux/vmalloc.h> 6 #include <linux/vmalloc.h> 7 #include <linux/slab.h> 7 #include <linux/slab.h> 8 #include <linux/sizes.h> 8 #include <linux/sizes.h> 9 #include <linux/io.h> 9 #include <linux/io.h> 10 10 11 #include <asm/page.h> 11 #include <asm/page.h> 12 #ifdef CONFIG_MIPS 12 #ifdef CONFIG_MIPS 13 #include <asm/bootinfo.h> 13 #include <asm/bootinfo.h> 14 #endif 14 #endif 15 15 16 struct foo { 16 struct foo { 17 unsigned int bar; 17 unsigned int bar; 18 }; 18 }; 19 19 20 static struct foo *foo; 20 static struct foo *foo; 21 21 22 static int __init test_debug_virtual_init(void 22 static int __init test_debug_virtual_init(void) 23 { 23 { 24 phys_addr_t pa; 24 phys_addr_t pa; 25 void *va; 25 void *va; 26 26 27 va = (void *)VMALLOC_START; 27 va = (void *)VMALLOC_START; 28 pa = virt_to_phys(va); 28 pa = virt_to_phys(va); 29 29 30 pr_info("PA: %pa for VA: 0x%lx\n", &pa 30 pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 31 31 32 foo = kzalloc(sizeof(*foo), GFP_KERNEL 32 foo = kzalloc(sizeof(*foo), GFP_KERNEL); 33 if (!foo) 33 if (!foo) 34 return -ENOMEM; 34 return -ENOMEM; 35 35 36 pa = virt_to_phys(foo); 36 pa = virt_to_phys(foo); 37 va = foo; 37 va = foo; 38 pr_info("PA: %pa for VA: 0x%lx\n", &pa 38 pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 39 39 40 return 0; 40 return 0; 41 } 41 } 42 module_init(test_debug_virtual_init); 42 module_init(test_debug_virtual_init); 43 43 44 static void __exit test_debug_virtual_exit(voi 44 static void __exit test_debug_virtual_exit(void) 45 { 45 { 46 kfree(foo); 46 kfree(foo); 47 } 47 } 48 module_exit(test_debug_virtual_exit); 48 module_exit(test_debug_virtual_exit); 49 49 50 MODULE_LICENSE("GPL"); 50 MODULE_LICENSE("GPL"); 51 MODULE_DESCRIPTION("Test module for CONFIG_DEB 51 MODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL"); 52 52
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.