18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci#include <linux/kernel.h> 38c2ecf20Sopenharmony_ci#include <linux/module.h> 48c2ecf20Sopenharmony_ci#include <linux/export.h> 58c2ecf20Sopenharmony_ci#include <linux/mm.h> 68c2ecf20Sopenharmony_ci#include <linux/vmalloc.h> 78c2ecf20Sopenharmony_ci#include <linux/slab.h> 88c2ecf20Sopenharmony_ci#include <linux/sizes.h> 98c2ecf20Sopenharmony_ci#include <linux/io.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <asm/page.h> 128c2ecf20Sopenharmony_ci#ifdef CONFIG_MIPS 138c2ecf20Sopenharmony_ci#include <asm/bootinfo.h> 148c2ecf20Sopenharmony_ci#endif 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistruct foo { 178c2ecf20Sopenharmony_ci unsigned int bar; 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic struct foo *foo; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistatic int __init test_debug_virtual_init(void) 238c2ecf20Sopenharmony_ci{ 248c2ecf20Sopenharmony_ci phys_addr_t pa; 258c2ecf20Sopenharmony_ci void *va; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci va = (void *)VMALLOC_START; 288c2ecf20Sopenharmony_ci pa = virt_to_phys(va); 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci foo = kzalloc(sizeof(*foo), GFP_KERNEL); 338c2ecf20Sopenharmony_ci if (!foo) 348c2ecf20Sopenharmony_ci return -ENOMEM; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci pa = virt_to_phys(foo); 378c2ecf20Sopenharmony_ci va = foo; 388c2ecf20Sopenharmony_ci pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va); 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci return 0; 418c2ecf20Sopenharmony_ci} 428c2ecf20Sopenharmony_cimodule_init(test_debug_virtual_init); 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistatic void __exit test_debug_virtual_exit(void) 458c2ecf20Sopenharmony_ci{ 468c2ecf20Sopenharmony_ci kfree(foo); 478c2ecf20Sopenharmony_ci} 488c2ecf20Sopenharmony_cimodule_exit(test_debug_virtual_exit); 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciMODULE_LICENSE("GPL"); 518c2ecf20Sopenharmony_ciMODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL"); 52