1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun #include <linux/bug.h> 3*4882a593Smuzhiyun #include <linux/export.h> 4*4882a593Smuzhiyun #include <linux/types.h> 5*4882a593Smuzhiyun #include <linux/mmdebug.h> 6*4882a593Smuzhiyun #include <linux/mm.h> 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #include <asm/memory.h> 9*4882a593Smuzhiyun __virt_to_phys(unsigned long x)10*4882a593Smuzhiyunphys_addr_t __virt_to_phys(unsigned long x) 11*4882a593Smuzhiyun { 12*4882a593Smuzhiyun WARN(!__is_lm_address(__tag_reset(x)), 13*4882a593Smuzhiyun "virt_to_phys used for non-linear address: %pK (%pS)\n", 14*4882a593Smuzhiyun (void *)x, 15*4882a593Smuzhiyun (void *)x); 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun return __virt_to_phys_nodebug(x); 18*4882a593Smuzhiyun } 19*4882a593Smuzhiyun EXPORT_SYMBOL(__virt_to_phys); 20*4882a593Smuzhiyun __phys_addr_symbol(unsigned long x)21*4882a593Smuzhiyunphys_addr_t __phys_addr_symbol(unsigned long x) 22*4882a593Smuzhiyun { 23*4882a593Smuzhiyun /* 24*4882a593Smuzhiyun * This is bounds checking against the kernel image only. 25*4882a593Smuzhiyun * __pa_symbol should only be used on kernel symbol addresses. 26*4882a593Smuzhiyun */ 27*4882a593Smuzhiyun VIRTUAL_BUG_ON(x < (unsigned long) KERNEL_START || 28*4882a593Smuzhiyun x > (unsigned long) KERNEL_END); 29*4882a593Smuzhiyun return __pa_symbol_nodebug(x); 30*4882a593Smuzhiyun } 31*4882a593Smuzhiyun EXPORT_SYMBOL(__phys_addr_symbol); 32