1*e4dace36SFlorian Fainelli #include <linux/kernel.h> 2*e4dace36SFlorian Fainelli #include <linux/module.h> 3*e4dace36SFlorian Fainelli #include <linux/export.h> 4*e4dace36SFlorian Fainelli #include <linux/mm.h> 5*e4dace36SFlorian Fainelli #include <linux/vmalloc.h> 6*e4dace36SFlorian Fainelli #include <linux/slab.h> 7*e4dace36SFlorian Fainelli #include <linux/sizes.h> 8*e4dace36SFlorian Fainelli 9*e4dace36SFlorian Fainelli #include <asm/page.h> 10*e4dace36SFlorian Fainelli #ifdef CONFIG_MIPS 11*e4dace36SFlorian Fainelli #include <asm/bootinfo.h> 12*e4dace36SFlorian Fainelli #endif 13*e4dace36SFlorian Fainelli 14*e4dace36SFlorian Fainelli struct foo { 15*e4dace36SFlorian Fainelli unsigned int bar; 16*e4dace36SFlorian Fainelli }; 17*e4dace36SFlorian Fainelli 18*e4dace36SFlorian Fainelli struct foo *foo; 19*e4dace36SFlorian Fainelli 20*e4dace36SFlorian Fainelli static int __init test_debug_virtual_init(void) 21*e4dace36SFlorian Fainelli { 22*e4dace36SFlorian Fainelli phys_addr_t pa; 23*e4dace36SFlorian Fainelli void *va; 24*e4dace36SFlorian Fainelli 25*e4dace36SFlorian Fainelli va = (void *)VMALLOC_START; 26*e4dace36SFlorian Fainelli pa = virt_to_phys(va); 27*e4dace36SFlorian Fainelli 28*e4dace36SFlorian Fainelli pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 29*e4dace36SFlorian Fainelli 30*e4dace36SFlorian Fainelli foo = kzalloc(sizeof(*foo), GFP_KERNEL); 31*e4dace36SFlorian Fainelli if (!foo) 32*e4dace36SFlorian Fainelli return -ENOMEM; 33*e4dace36SFlorian Fainelli 34*e4dace36SFlorian Fainelli pa = virt_to_phys(foo); 35*e4dace36SFlorian Fainelli va = foo; 36*e4dace36SFlorian Fainelli pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 37*e4dace36SFlorian Fainelli 38*e4dace36SFlorian Fainelli return 0; 39*e4dace36SFlorian Fainelli } 40*e4dace36SFlorian Fainelli module_init(test_debug_virtual_init); 41*e4dace36SFlorian Fainelli 42*e4dace36SFlorian Fainelli static void __exit test_debug_virtual_exit(void) 43*e4dace36SFlorian Fainelli { 44*e4dace36SFlorian Fainelli kfree(foo); 45*e4dace36SFlorian Fainelli } 46*e4dace36SFlorian Fainelli module_exit(test_debug_virtual_exit); 47*e4dace36SFlorian Fainelli 48*e4dace36SFlorian Fainelli MODULE_LICENSE("GPL"); 49*e4dace36SFlorian Fainelli MODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL"); 50