2008-04-16 23:28:09 -05:00
/*
* 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 < hollisb @ us . ibm . com >
*/
# ifndef __POWERPC_KVM_PARA_H__
# define __POWERPC_KVM_PARA_H__
2012-10-09 09:47:26 +01:00
# include <uapi/asm/kvm_para.h>
2008-04-16 23:28:09 -05:00
2010-07-29 14:47:48 +02:00
# ifdef CONFIG_KVM_GUEST
2010-09-03 10:22:19 +02:00
# include <linux/of.h>
2010-07-29 14:47:48 +02:00
static inline int kvm_para_available ( void )
{
struct device_node * hyper_node ;
hyper_node = of_find_node_by_path ( " /hypervisor " ) ;
if ( ! hyper_node )
return 0 ;
if ( ! of_device_is_compatible ( hyper_node , " linux,kvm " ) )
return 0 ;
return 1 ;
}
# else
2008-04-16 23:28:09 -05:00
static inline int kvm_para_available ( void )
{
return 0 ;
}
2010-07-29 14:47:48 +02:00
# endif
2008-04-16 23:28:09 -05:00
static inline unsigned int kvm_arch_para_features ( void )
{
2010-07-29 14:47:48 +02:00
unsigned long r ;
if ( ! kvm_para_available ( ) )
return 0 ;
2013-10-08 09:32:20 +05:30
if ( epapr_hypercall0_1 ( KVM_HCALL_TOKEN ( KVM_HC_FEATURES ) , & r ) )
2010-07-29 14:47:48 +02:00
return 0 ;
return r ;
2008-04-16 23:28:09 -05:00
}
2012-03-10 14:37:26 -05:00
static inline bool kvm_check_and_clear_guest_paused ( void )
{
return false ;
}
2008-04-16 23:28:09 -05:00
# endif /* __POWERPC_KVM_PARA_H__ */