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