From: Stephen Rothwell Date: Wed, 31 Oct 2012 03:49:43 +0000 (+1100) Subject: Merge remote-tracking branch 'kvm/linux-next' X-Git-Tag: next-20121031~34 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=a3d9372ac01f75183f5bbd602e2f250be6a8947b;p=karo-tx-linux.git Merge remote-tracking branch 'kvm/linux-next' Conflicts: arch/powerpc/include/asm/Kbuild arch/powerpc/include/asm/kvm_para.h --- a3d9372ac01f75183f5bbd602e2f250be6a8947b diff --cc arch/powerpc/include/asm/epapr_hcalls.h index bf2c06c33871,b8d94459a929..58997afcd085 --- a/arch/powerpc/include/asm/epapr_hcalls.h +++ b/arch/powerpc/include/asm/epapr_hcalls.h @@@ -50,6 -50,62 +50,9 @@@ #ifndef _EPAPR_HCALLS_H #define _EPAPR_HCALLS_H -#define EV_BYTE_CHANNEL_SEND 1 -#define EV_BYTE_CHANNEL_RECEIVE 2 -#define EV_BYTE_CHANNEL_POLL 3 -#define EV_INT_SET_CONFIG 4 -#define EV_INT_GET_CONFIG 5 -#define EV_INT_SET_MASK 6 -#define EV_INT_GET_MASK 7 -#define EV_INT_IACK 9 -#define EV_INT_EOI 10 -#define EV_INT_SEND_IPI 11 -#define EV_INT_SET_TASK_PRIORITY 12 -#define EV_INT_GET_TASK_PRIORITY 13 -#define EV_DOORBELL_SEND 14 -#define EV_MSGSND 15 -#define EV_IDLE 16 - -/* vendor ID: epapr */ -#define EV_LOCAL_VENDOR_ID 0 /* for private use */ -#define EV_EPAPR_VENDOR_ID 1 -#define EV_FSL_VENDOR_ID 2 /* Freescale Semiconductor */ -#define EV_IBM_VENDOR_ID 3 /* IBM */ -#define EV_GHS_VENDOR_ID 4 /* Green Hills Software */ -#define EV_ENEA_VENDOR_ID 5 /* Enea */ -#define EV_WR_VENDOR_ID 6 /* Wind River Systems */ -#define EV_AMCC_VENDOR_ID 7 /* Applied Micro Circuits */ -#define EV_KVM_VENDOR_ID 42 /* KVM */ - -/* The max number of bytes that a byte channel can send or receive per call */ -#define EV_BYTE_CHANNEL_MAX_BYTES 16 - - -#define _EV_HCALL_TOKEN(id, num) (((id) << 16) | (num)) -#define EV_HCALL_TOKEN(hcall_num) _EV_HCALL_TOKEN(EV_EPAPR_VENDOR_ID, hcall_num) - -/* epapr return codes */ -#define EV_SUCCESS 0 -#define EV_EPERM 1 /* Operation not permitted */ -#define EV_ENOENT 2 /* Entry Not Found */ -#define EV_EIO 3 /* I/O error occured */ -#define EV_EAGAIN 4 /* The operation had insufficient - * resources to complete and should be - * retried - */ -#define EV_ENOMEM 5 /* There was insufficient memory to - * complete the operation */ -#define EV_EFAULT 6 /* Bad guest address */ -#define EV_ENODEV 7 /* No such device */ -#define EV_EINVAL 8 /* An argument supplied to the hcall - was out of range or invalid */ -#define EV_INTERNAL 9 /* An internal error occured */ -#define EV_CONFIG 10 /* A configuration error was detected */ -#define EV_INVALID_STATE 11 /* The object is in an invalid state */ -#define EV_UNIMPLEMENTED 12 /* Unimplemented hypercall */ -#define EV_BUFFER_OVERFLOW 13 /* Caller-supplied buffer too small */ ++#include + + #ifndef __ASSEMBLY__ #include #include #include diff --cc arch/powerpc/include/asm/kvm_para.h index 9365860fb7f6,a168ce37d85c..2b119654b4c1 --- a/arch/powerpc/include/asm/kvm_para.h +++ b/arch/powerpc/include/asm/kvm_para.h @@@ -19,9 -19,76 +19,8 @@@ #ifndef __POWERPC_KVM_PARA_H__ #define __POWERPC_KVM_PARA_H__ -#include - -/* - * Additions to this struct must only occur at the end, and should be - * accompanied by a KVM_MAGIC_FEAT flag to advertise that they are present - * (albeit not necessarily relevant to the current target hardware platform). - * - * Struct fields are always 32 or 64 bit aligned, depending on them being 32 - * or 64 bit wide respectively. - * - * See Documentation/virtual/kvm/ppc-pv.txt - */ -struct kvm_vcpu_arch_shared { - __u64 scratch1; - __u64 scratch2; - __u64 scratch3; - __u64 critical; /* Guest may not get interrupts if == r1 */ - __u64 sprg0; - __u64 sprg1; - __u64 sprg2; - __u64 sprg3; - __u64 srr0; - __u64 srr1; - __u64 dar; /* dear on BookE */ - __u64 msr; - __u32 dsisr; - __u32 int_pending; /* Tells the guest if we have an interrupt */ - __u32 sr[16]; - __u32 mas0; - __u32 mas1; - __u64 mas7_3; - __u64 mas2; - __u32 mas4; - __u32 mas6; - __u32 esr; - __u32 pir; - - /* - * SPRG4-7 are user-readable, so we can only keep these consistent - * between the shared area and the real registers when there's an - * intervening exit to KVM. This also applies to SPRG3 on some - * chips. - * - * This suffices for access by guest userspace, since in PR-mode - * KVM, an exit must occur when changing the guest's MSR[PR]. - * If the guest kernel writes to SPRG3-7 via the shared area, it - * must also use the shared area for reading while in kernel space. - */ - __u64 sprg4; - __u64 sprg5; - __u64 sprg6; - __u64 sprg7; -}; - -#define KVM_SC_MAGIC_R0 0x4b564d21 /* "KVM!" */ - -#define KVM_HCALL_TOKEN(num) _EV_HCALL_TOKEN(EV_KVM_VENDOR_ID, num) - -#include - -#define KVM_FEATURE_MAGIC_PAGE 1 - -#define KVM_MAGIC_FEAT_SR (1 << 0) - -/* MASn, ESR, PIR, and high SPRGs */ -#define KVM_MAGIC_FEAT_MAS0_TO_SPRG7 (1 << 1) - -#ifdef __KERNEL__ +#include - #ifdef CONFIG_KVM_GUEST #include diff --cc arch/powerpc/include/uapi/asm/Kbuild index a33c3c03bb2e,baebb3da1d44..f7bca6370745 --- a/arch/powerpc/include/uapi/asm/Kbuild +++ b/arch/powerpc/include/uapi/asm/Kbuild @@@ -1,44 -1,3 +1,45 @@@ # UAPI Header export list include include/uapi/asm-generic/Kbuild.asm +header-y += auxvec.h +header-y += bitsperlong.h +header-y += bootx.h +header-y += byteorder.h +header-y += cputable.h +header-y += elf.h ++header-y += epapr_hcalls.h +header-y += errno.h +header-y += fcntl.h +header-y += ioctl.h +header-y += ioctls.h +header-y += ipcbuf.h +header-y += kvm.h +header-y += kvm_para.h +header-y += linkage.h +header-y += mman.h +header-y += msgbuf.h +header-y += nvram.h +header-y += param.h +header-y += poll.h +header-y += posix_types.h +header-y += ps3fb.h +header-y += ptrace.h +header-y += resource.h +header-y += seccomp.h +header-y += sembuf.h +header-y += setup.h +header-y += shmbuf.h +header-y += sigcontext.h +header-y += siginfo.h +header-y += signal.h +header-y += socket.h +header-y += sockios.h +header-y += spu_info.h +header-y += stat.h +header-y += statfs.h +header-y += swab.h +header-y += termbits.h +header-y += termios.h +header-y += types.h +header-y += ucontext.h +header-y += unistd.h diff --cc arch/powerpc/include/uapi/asm/epapr_hcalls.h index 000000000000,000000000000..046c79364f83 new file mode 100644 --- /dev/null +++ b/arch/powerpc/include/uapi/asm/epapr_hcalls.h @@@ -1,0 -1,0 +1,98 @@@ ++/* ++ * ePAPR hcall interface ++ * ++ * Copyright 2008-2011 Freescale Semiconductor, Inc. ++ * ++ * Author: Timur Tabi ++ * ++ * This file is provided under a dual BSD/GPL license. When using or ++ * redistributing this file, you may do so under either license. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are met: ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * * Neither the name of Freescale Semiconductor nor the ++ * names of its contributors may be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * ++ * ALTERNATIVELY, this software may be distributed under the terms of the ++ * GNU General Public License ("GPL") as published by the Free Software ++ * Foundation, either version 2 of that License or (at your option) any ++ * later version. ++ * ++ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY ++ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY ++ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++#ifndef _UAPI__EPAPR_HCALLS_H ++#define _UAPI__EPAPR_HCALLS_H ++ ++#define EV_BYTE_CHANNEL_SEND 1 ++#define EV_BYTE_CHANNEL_RECEIVE 2 ++#define EV_BYTE_CHANNEL_POLL 3 ++#define EV_INT_SET_CONFIG 4 ++#define EV_INT_GET_CONFIG 5 ++#define EV_INT_SET_MASK 6 ++#define EV_INT_GET_MASK 7 ++#define EV_INT_IACK 9 ++#define EV_INT_EOI 10 ++#define EV_INT_SEND_IPI 11 ++#define EV_INT_SET_TASK_PRIORITY 12 ++#define EV_INT_GET_TASK_PRIORITY 13 ++#define EV_DOORBELL_SEND 14 ++#define EV_MSGSND 15 ++#define EV_IDLE 16 ++ ++/* vendor ID: epapr */ ++#define EV_LOCAL_VENDOR_ID 0 /* for private use */ ++#define EV_EPAPR_VENDOR_ID 1 ++#define EV_FSL_VENDOR_ID 2 /* Freescale Semiconductor */ ++#define EV_IBM_VENDOR_ID 3 /* IBM */ ++#define EV_GHS_VENDOR_ID 4 /* Green Hills Software */ ++#define EV_ENEA_VENDOR_ID 5 /* Enea */ ++#define EV_WR_VENDOR_ID 6 /* Wind River Systems */ ++#define EV_AMCC_VENDOR_ID 7 /* Applied Micro Circuits */ ++#define EV_KVM_VENDOR_ID 42 /* KVM */ ++ ++/* The max number of bytes that a byte channel can send or receive per call */ ++#define EV_BYTE_CHANNEL_MAX_BYTES 16 ++ ++ ++#define _EV_HCALL_TOKEN(id, num) (((id) << 16) | (num)) ++#define EV_HCALL_TOKEN(hcall_num) _EV_HCALL_TOKEN(EV_EPAPR_VENDOR_ID, hcall_num) ++ ++/* epapr return codes */ ++#define EV_SUCCESS 0 ++#define EV_EPERM 1 /* Operation not permitted */ ++#define EV_ENOENT 2 /* Entry Not Found */ ++#define EV_EIO 3 /* I/O error occured */ ++#define EV_EAGAIN 4 /* The operation had insufficient ++ * resources to complete and should be ++ * retried ++ */ ++#define EV_ENOMEM 5 /* There was insufficient memory to ++ * complete the operation */ ++#define EV_EFAULT 6 /* Bad guest address */ ++#define EV_ENODEV 7 /* No such device */ ++#define EV_EINVAL 8 /* An argument supplied to the hcall ++ was out of range or invalid */ ++#define EV_INTERNAL 9 /* An internal error occured */ ++#define EV_CONFIG 10 /* A configuration error was detected */ ++#define EV_INVALID_STATE 11 /* The object is in an invalid state */ ++#define EV_UNIMPLEMENTED 12 /* Unimplemented hypercall */ ++#define EV_BUFFER_OVERFLOW 13 /* Caller-supplied buffer too small */ ++ ++#endif /* _UAPI__EPAPR_HCALLS_H */ diff --cc arch/powerpc/include/uapi/asm/kvm_para.h index 5e04383a1db5,000000000000..34d8b1cfab22 mode 100644,000000..100644 --- a/arch/powerpc/include/uapi/asm/kvm_para.h +++ b/arch/powerpc/include/uapi/asm/kvm_para.h @@@ -1,90 -1,0 +1,91 @@@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2, as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Copyright IBM Corp. 2008 + * + * Authors: Hollis Blanchard + */ + +#ifndef _UAPI__POWERPC_KVM_PARA_H__ +#define _UAPI__POWERPC_KVM_PARA_H__ + +#include + +/* + * Additions to this struct must only occur at the end, and should be + * accompanied by a KVM_MAGIC_FEAT flag to advertise that they are present + * (albeit not necessarily relevant to the current target hardware platform). + * + * Struct fields are always 32 or 64 bit aligned, depending on them being 32 + * or 64 bit wide respectively. + * + * See Documentation/virtual/kvm/ppc-pv.txt + */ +struct kvm_vcpu_arch_shared { + __u64 scratch1; + __u64 scratch2; + __u64 scratch3; + __u64 critical; /* Guest may not get interrupts if == r1 */ + __u64 sprg0; + __u64 sprg1; + __u64 sprg2; + __u64 sprg3; + __u64 srr0; + __u64 srr1; + __u64 dar; /* dear on BookE */ + __u64 msr; + __u32 dsisr; + __u32 int_pending; /* Tells the guest if we have an interrupt */ + __u32 sr[16]; + __u32 mas0; + __u32 mas1; + __u64 mas7_3; + __u64 mas2; + __u32 mas4; + __u32 mas6; + __u32 esr; + __u32 pir; + + /* + * SPRG4-7 are user-readable, so we can only keep these consistent + * between the shared area and the real registers when there's an + * intervening exit to KVM. This also applies to SPRG3 on some + * chips. + * + * This suffices for access by guest userspace, since in PR-mode + * KVM, an exit must occur when changing the guest's MSR[PR]. + * If the guest kernel writes to SPRG3-7 via the shared area, it + * must also use the shared area for reading while in kernel space. + */ + __u64 sprg4; + __u64 sprg5; + __u64 sprg6; + __u64 sprg7; +}; + +#define KVM_SC_MAGIC_R0 0x4b564d21 /* "KVM!" */ - #define HC_VENDOR_KVM (42 << 16) - #define HC_EV_SUCCESS 0 - #define HC_EV_UNIMPLEMENTED 12 ++ ++#define KVM_HCALL_TOKEN(num) _EV_HCALL_TOKEN(EV_KVM_VENDOR_ID, num) ++ ++#include + +#define KVM_FEATURE_MAGIC_PAGE 1 + +#define KVM_MAGIC_FEAT_SR (1 << 0) + +/* MASn, ESR, PIR, and high SPRGs */ +#define KVM_MAGIC_FEAT_MAS0_TO_SPRG7 (1 << 1) + + +#endif /* _UAPI__POWERPC_KVM_PARA_H__ */