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