xref: /linux/lib/test_debug_virtual.c (revision 09c434b8)
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 Fainelli static 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 Fainelli static 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