s390: remove virt_to_phys implementation
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Thu, 23 May 2013 09:55:07 +0000 (11:55 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 26 Jun 2013 19:10:02 +0000 (21:10 +0200)
virt_to_phys on s390 currently uses the LRA instruction to translate
virtual to physical addresses. This creates an unnecessary overhead
and caused trouble with dma debugging code (when called with an
address pointing to a already unmapped page).
Just get rid of s390's implementation and use the one from
asm-generic/io.h .

Note: with this change virt_to_phys will no longer work on vmalloc'ed
addresses.

Reviewed-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/io.h

index fd9be010f9b2614c4b4e75f00e9fefad18cf0855..cd6b9ee7b69c928118e9bce7c8691651a79a9b52 100644 (file)
 #include <asm/page.h>
 #include <asm/pci_io.h>
 
-/*
- * Change virtual addresses to physical addresses and vv.
- * These are pretty trivial
- */
-static inline unsigned long virt_to_phys(volatile void * address)
-{
-       unsigned long real_address;
-       asm volatile(
-                "      lra     %0,0(%1)\n"
-                "      jz      0f\n"
-                "      la      %0,0\n"
-                "0:"
-                : "=a" (real_address) : "a" (address) : "cc");
-       return real_address;
-}
-#define virt_to_phys virt_to_phys
-
-static inline void * phys_to_virt(unsigned long address)
-{
-       return (void *) address;
-}
-
 void *xlate_dev_mem_ptr(unsigned long phys);
 #define xlate_dev_mem_ptr xlate_dev_mem_ptr
 void unxlate_dev_mem_ptr(unsigned long phys, void *addr);