kvm: add kvm_readonly_mem_enabled

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 1369816047-16384-3-git-send-email-jordan.l.justen@intel.com
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Jordan Justen 2013-05-29 01:27:25 -07:00 committed by Anthony Liguori
parent dade922f35
commit df9c8b758a
3 changed files with 17 additions and 0 deletions

View File

@ -45,6 +45,7 @@ extern bool kvm_async_interrupts_allowed;
extern bool kvm_irqfds_allowed; extern bool kvm_irqfds_allowed;
extern bool kvm_msi_via_irqfd_allowed; extern bool kvm_msi_via_irqfd_allowed;
extern bool kvm_gsi_routing_allowed; extern bool kvm_gsi_routing_allowed;
extern bool kvm_readonly_mem_allowed;
#if defined CONFIG_KVM || !defined NEED_CPU_H #if defined CONFIG_KVM || !defined NEED_CPU_H
#define kvm_enabled() (kvm_allowed) #define kvm_enabled() (kvm_allowed)
@ -97,6 +98,14 @@ extern bool kvm_gsi_routing_allowed;
*/ */
#define kvm_gsi_routing_enabled() (kvm_gsi_routing_allowed) #define kvm_gsi_routing_enabled() (kvm_gsi_routing_allowed)
/**
* kvm_readonly_mem_enabled:
*
* Returns: true if KVM readonly memory is enabled (ie the kernel
* supports it and we're running in a configuration that permits it).
*/
#define kvm_readonly_mem_enabled() (kvm_readonly_mem_allowed)
#else #else
#define kvm_enabled() (0) #define kvm_enabled() (0)
#define kvm_irqchip_in_kernel() (false) #define kvm_irqchip_in_kernel() (false)
@ -104,6 +113,7 @@ extern bool kvm_gsi_routing_allowed;
#define kvm_irqfds_enabled() (false) #define kvm_irqfds_enabled() (false)
#define kvm_msi_via_irqfd_enabled() (false) #define kvm_msi_via_irqfd_enabled() (false)
#define kvm_gsi_routing_allowed() (false) #define kvm_gsi_routing_allowed() (false)
#define kvm_readonly_mem_enabled() (false)
#endif #endif
struct kvm_run; struct kvm_run;

View File

@ -111,6 +111,7 @@ bool kvm_irqfds_allowed;
bool kvm_msi_via_irqfd_allowed; bool kvm_msi_via_irqfd_allowed;
bool kvm_gsi_routing_allowed; bool kvm_gsi_routing_allowed;
bool kvm_allowed; bool kvm_allowed;
bool kvm_readonly_mem_allowed;
static const KVMCapabilityInfo kvm_required_capabilites[] = { static const KVMCapabilityInfo kvm_required_capabilites[] = {
KVM_CAP_INFO(USER_MEMORY), KVM_CAP_INFO(USER_MEMORY),
@ -1425,6 +1426,11 @@ int kvm_init(void)
s->irq_set_ioctl = KVM_IRQ_LINE_STATUS; s->irq_set_ioctl = KVM_IRQ_LINE_STATUS;
} }
#ifdef KVM_CAP_READONLY_MEM
kvm_readonly_mem_allowed =
(kvm_check_extension(s, KVM_CAP_READONLY_MEM) > 0);
#endif
ret = kvm_arch_init(s); ret = kvm_arch_init(s);
if (ret < 0) { if (ret < 0) {
goto err; goto err;

View File

@ -26,6 +26,7 @@ bool kvm_irqfds_allowed;
bool kvm_msi_via_irqfd_allowed; bool kvm_msi_via_irqfd_allowed;
bool kvm_gsi_routing_allowed; bool kvm_gsi_routing_allowed;
bool kvm_allowed; bool kvm_allowed;
bool kvm_readonly_mem_allowed;
int kvm_init_vcpu(CPUState *cpu) int kvm_init_vcpu(CPUState *cpu)
{ {