// SPDX-License-Identifier: GPL-2.0-only #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 <linux/io.h> #include <asm/page.h> #ifdef CONFIG_MIPS #include <asm/bootinfo.h> #endif struct foo { unsigned int bar; }; static 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");