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