| // 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"); |