staging: unisys: visorbus: move unisys_vmcall into visorchipset
authorDavid Kershner <david.kershner@unisys.com>
Tue, 28 Mar 2017 13:35:00 +0000 (09:35 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Mar 2017 07:17:04 +0000 (09:17 +0200)
The only one using unisys_vmcall was visorchipset.c, it can be moved into
the visorchipset file directly instead of being in a header file.

Signed-off-by: David Kershner <david.kershner@unisys.com>
Reviewed-by: Reviewed-by: Tim Sell <timothy.sell@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visorbus/visorchipset.c
drivers/staging/unisys/visorbus/vmcallinterface.h

index b6e2b8e8d44e2f40ebc212ebc9456069c0f1259f..9c48cfab0d2aaa98be31e75cd3fac8225f99d317 100644 (file)
@@ -1354,6 +1354,25 @@ chipset_notready_uevent(struct controlvm_message_header *msg_hdr)
        return res;
 }
 
+static int unisys_vmcall(unsigned long tuple, unsigned long param)
+{
+       int result = 0;
+       unsigned int cpuid_eax, cpuid_ebx, cpuid_ecx, cpuid_edx;
+       unsigned long reg_ebx;
+       unsigned long reg_ecx;
+
+       reg_ebx = param & 0xFFFFFFFF;
+       reg_ecx = param >> 32;
+
+       cpuid(0x00000001, &cpuid_eax, &cpuid_ebx, &cpuid_ecx, &cpuid_edx);
+       if (!(cpuid_ecx & 0x80000000))
+               return -EPERM;
+
+       __asm__ __volatile__(".byte 0x00f, 0x001, 0x0c1" : "=a"(result) :
+               "a"(tuple), "b"(reg_ebx), "c"(reg_ecx));
+
+       return result;
+}
 static unsigned int
 issue_vmcall_io_controlvm_addr(u64 *control_addr, u32 *control_bytes)
 {
@@ -1362,7 +1381,7 @@ issue_vmcall_io_controlvm_addr(u64 *control_addr, u32 *control_bytes)
        u64 physaddr;
 
        physaddr = virt_to_phys(&params);
-       unisys_vmcall(VMCALL_CONTROLVM_ADDR, physaddr, result);
+       result = unisys_vmcall(VMCALL_CONTROLVM_ADDR, physaddr);
        if (VMCALL_SUCCESSFUL(result)) {
                *control_addr = params.address;
                *control_bytes = params.channel_bytes;
index df6ee544063164f91081b818acd7e2a8abdb477b..1b3650585173c1ecf26bc5868924bd93ecaf3558 100644 (file)
  * Virtualization.  The VMCALLs are provided by Monitor and used by s-Par
  * drivers running in a Linux guest partition.
  */
-static inline unsigned long
-__unisys_vmcall_gnuc(unsigned long tuple, unsigned long reg_ebx,
-                    unsigned long reg_ecx)
-{
-       unsigned long result = 0;
-       unsigned int cpuid_eax, cpuid_ebx, cpuid_ecx, cpuid_edx;
-
-       cpuid(0x00000001, &cpuid_eax, &cpuid_ebx, &cpuid_ecx, &cpuid_edx);
-       if (!(cpuid_ecx & 0x80000000))
-               return -EPERM;
-
-       __asm__ __volatile__(".byte 0x00f, 0x001, 0x0c1" : "=a"(result) :
-               "a"(tuple), "b"(reg_ebx), "c"(reg_ecx));
-       return result;
-}
-
 static inline unsigned long
 __unisys_extended_vmcall_gnuc(unsigned long long tuple,
                              unsigned long long reg_ebx,
@@ -83,9 +67,6 @@ enum vmcall_monitor_interface_method_tuple { /* VMCALL identification tuples  */
 
 #define unisys_extended_vmcall(tuple, reg_ebx, reg_ecx, reg_edx) \
        __unisys_extended_vmcall_gnuc(tuple, reg_ebx, reg_ecx, reg_edx)
-#define unisys_vmcall(method, param, result) \
-       (result = __unisys_vmcall_gnuc((method), (param) & 0xFFFFFFFF, \
-                                      (param) >> 32))
 
 /* Structures for IO VMCALLs */