xref: /linux/lib/test_debug_virtual.c (revision b15f5f1a)
1e4dace36SFlorian Fainelli #include <linux/kernel.h>
2e4dace36SFlorian Fainelli #include <linux/module.h>
3e4dace36SFlorian Fainelli #include <linux/export.h>
4e4dace36SFlorian Fainelli #include <linux/mm.h>
5e4dace36SFlorian Fainelli #include <linux/vmalloc.h>
6e4dace36SFlorian Fainelli #include <linux/slab.h>
7e4dace36SFlorian Fainelli #include <linux/sizes.h>
8e4dace36SFlorian Fainelli 
9e4dace36SFlorian Fainelli #include <asm/page.h>
10e4dace36SFlorian Fainelli #ifdef CONFIG_MIPS
11e4dace36SFlorian Fainelli #include <asm/bootinfo.h>
12e4dace36SFlorian Fainelli #endif
13e4dace36SFlorian Fainelli 
14e4dace36SFlorian Fainelli struct foo {
15e4dace36SFlorian Fainelli 	unsigned int bar;
16e4dace36SFlorian Fainelli };
17e4dace36SFlorian Fainelli 
18*b15f5f1aSColin Ian King static struct foo *foo;
19e4dace36SFlorian Fainelli 
20e4dace36SFlorian Fainelli static int __init test_debug_virtual_init(void)
21e4dace36SFlorian Fainelli {
22e4dace36SFlorian Fainelli 	phys_addr_t pa;
23e4dace36SFlorian Fainelli 	void *va;
24e4dace36SFlorian Fainelli 
25e4dace36SFlorian Fainelli 	va = (void *)VMALLOC_START;
26e4dace36SFlorian Fainelli 	pa = virt_to_phys(va);
27e4dace36SFlorian Fainelli 
28e4dace36SFlorian Fainelli 	pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va);
29e4dace36SFlorian Fainelli 
30e4dace36SFlorian Fainelli 	foo = kzalloc(sizeof(*foo), GFP_KERNEL);
31e4dace36SFlorian Fainelli 	if (!foo)
32e4dace36SFlorian Fainelli 		return -ENOMEM;
33e4dace36SFlorian Fainelli 
34e4dace36SFlorian Fainelli 	pa = virt_to_phys(foo);
35e4dace36SFlorian Fainelli 	va = foo;
36e4dace36SFlorian Fainelli 	pr_info("PA: %pa for VA: 0x%lx\n", &pa, (unsigned long)va);
37e4dace36SFlorian Fainelli 
38e4dace36SFlorian Fainelli 	return 0;
39e4dace36SFlorian Fainelli }
40e4dace36SFlorian Fainelli module_init(test_debug_virtual_init);
41e4dace36SFlorian Fainelli 
42e4dace36SFlorian Fainelli static void __exit test_debug_virtual_exit(void)
43e4dace36SFlorian Fainelli {
44e4dace36SFlorian Fainelli 	kfree(foo);
45e4dace36SFlorian Fainelli }
46e4dace36SFlorian Fainelli module_exit(test_debug_virtual_exit);
47e4dace36SFlorian Fainelli 
48e4dace36SFlorian Fainelli MODULE_LICENSE("GPL");
49e4dace36SFlorian Fainelli MODULE_DESCRIPTION("Test module for CONFIG_DEBUG_VIRTUAL");
50