cregit-Linux how code gets into the kernel

Release 4.14 arch/s390/include/asm/kvm_para.h

/*
 * definition for paravirtual devices on s390
 *
 * Copyright IBM Corp. 2008
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License (version 2 only)
 * as published by the Free Software Foundation.
 *
 *    Author(s): Christian Borntraeger <borntraeger@de.ibm.com>
 */
/*
 * Hypercalls for KVM on s390. The calling convention is similar to the
 * s390 ABI, so we use R2-R6 for parameters 1-5. In addition we use R1
 * as hypercall number and R7 as parameter 6. The return value is
 * written to R2. We use the diagnose instruction as hypercall. To avoid
 * conflicts with existing diagnoses for LPAR and z/VM, we do not use
 * the instruction encoded number, but specify the number in R1 and
 * use 0x500 as KVM hypercall
 *
 * Copyright IBM Corp. 2007,2008
 * Author(s): Christian Borntraeger <borntraeger@de.ibm.com>
 *
 * This work is licensed under the terms of the GNU GPL, version 2.
 */
#ifndef __S390_KVM_PARA_H

#define __S390_KVM_PARA_H

#include <uapi/asm/kvm_para.h>
#include <asm/diag.h>


static inline long __kvm_hypercall0(unsigned long nr) { register unsigned long __nr asm("1") = nr; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr): "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger3597.22%150.00%
Martin Schwidefsky12.78%150.00%
Total36100.00%2100.00%


static inline long kvm_hypercall0(unsigned long nr) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall0(nr); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky1986.36%150.00%
Christian Bornträger313.64%150.00%
Total22100.00%2100.00%


static inline long __kvm_hypercall1(unsigned long nr, unsigned long p1) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger4792.16%150.00%
Martin Schwidefsky47.84%150.00%
Total51100.00%2100.00%


static inline long kvm_hypercall1(unsigned long nr, unsigned long p1) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall1(nr, p1); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky2589.29%150.00%
Christian Bornträger310.71%150.00%
Total28100.00%2100.00%


static inline long __kvm_hypercall2(unsigned long nr, unsigned long p1, unsigned long p2) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register unsigned long __p2 asm("3") = p2; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1), "d" (__p2) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger6293.94%150.00%
Martin Schwidefsky46.06%150.00%
Total66100.00%2100.00%


static inline long kvm_hypercall2(unsigned long nr, unsigned long p1, unsigned long p2) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall2(nr, p1, p2); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky3191.18%150.00%
Christian Bornträger38.82%150.00%
Total34100.00%2100.00%


static inline long __kvm_hypercall3(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register unsigned long __p2 asm("3") = p2; register unsigned long __p3 asm("4") = p3; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1), "d" (__p2), "d" (__p3) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger7795.06%150.00%
Martin Schwidefsky44.94%150.00%
Total81100.00%2100.00%


static inline long kvm_hypercall3(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall3(nr, p1, p2, p3); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky3792.50%150.00%
Christian Bornträger37.50%150.00%
Total40100.00%2100.00%


static inline long __kvm_hypercall4(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register unsigned long __p2 asm("3") = p2; register unsigned long __p3 asm("4") = p3; register unsigned long __p4 asm("5") = p4; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1), "d" (__p2), "d" (__p3), "d" (__p4) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger9295.83%150.00%
Martin Schwidefsky44.17%150.00%
Total96100.00%2100.00%


static inline long kvm_hypercall4(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall4(nr, p1, p2, p3, p4); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky4393.48%150.00%
Christian Bornträger36.52%150.00%
Total46100.00%2100.00%


static inline long __kvm_hypercall5(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register unsigned long __p2 asm("3") = p2; register unsigned long __p3 asm("4") = p3; register unsigned long __p4 asm("5") = p4; register unsigned long __p5 asm("6") = p5; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1), "d" (__p2), "d" (__p3), "d" (__p4), "d" (__p5) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger10796.40%150.00%
Martin Schwidefsky43.60%150.00%
Total111100.00%2100.00%


static inline long kvm_hypercall5(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall5(nr, p1, p2, p3, p4, p5); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky4994.23%150.00%
Christian Bornträger35.77%150.00%
Total52100.00%2100.00%


static inline long __kvm_hypercall6(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5, unsigned long p6) { register unsigned long __nr asm("1") = nr; register unsigned long __p1 asm("2") = p1; register unsigned long __p2 asm("3") = p2; register unsigned long __p3 asm("4") = p3; register unsigned long __p4 asm("5") = p4; register unsigned long __p5 asm("6") = p5; register unsigned long __p6 asm("7") = p6; register long __rc asm("2"); asm volatile ("diag 2,4,0x500\n" : "=d" (__rc) : "d" (__nr), "0" (__p1), "d" (__p2), "d" (__p3), "d" (__p4), "d" (__p5), "d" (__p6) : "memory", "cc"); return __rc; }

Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger12296.83%150.00%
Martin Schwidefsky43.17%150.00%
Total126100.00%2100.00%


static inline long kvm_hypercall6(unsigned long nr, unsigned long p1, unsigned long p2, unsigned long p3, unsigned long p4, unsigned long p5, unsigned long p6) { diag_stat_inc(DIAG_STAT_X500); return __kvm_hypercall6(nr, p1, p2, p3, p4, p5, p6); }

Contributors

PersonTokensPropCommitsCommitProp
Martin Schwidefsky58100.00%1100.00%
Total58100.00%1100.00%

/* kvm on s390 is always paravirtualization enabled */
static inline int kvm_para_available(void) { return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Heiko Carstens1191.67%150.00%
Christian Bornträger18.33%150.00%
Total12100.00%2100.00%

/* No feature bits are currently assigned for kvm on s390 */
static inline unsigned int kvm_arch_para_features(void) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Heiko Carstens13100.00%1100.00%
Total13100.00%1100.00%


static inline bool kvm_check_and_clear_guest_paused(void) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Eric B Munson12100.00%1100.00%
Total12100.00%1100.00%

#endif /* __S390_KVM_PARA_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Christian Bornträger56362.35%116.67%
Martin Schwidefsky29032.12%116.67%
Heiko Carstens343.77%233.33%
Eric B Munson121.33%116.67%
David Howells40.44%116.67%
Total903100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.