Add new KVM caps

Signed-off-by: Fuad Tabba <tabba@google.com>
diff --git a/include/linux/kvm.h b/include/linux/kvm.h
index 502ea63..7251d7d 100644
--- a/include/linux/kvm.h
+++ b/include/linux/kvm.h
@@ -933,6 +933,8 @@
 #define KVM_CAP_PRE_FAULT_MEMORY 236
 #define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237
 #define KVM_CAP_X86_GUEST_MODE 238
+#define KVM_CAP_ARM_WRITABLE_IMP_ID_REGS 239
+#define KVM_CAP_GMEM_SHARED_MEM 240
 
 struct kvm_irq_routing_irqchip {
 	__u32 irqchip;
@@ -1565,6 +1567,7 @@
 #define KVM_MEMORY_ATTRIBUTE_PRIVATE           (1ULL << 3)
 
 #define KVM_CREATE_GUEST_MEMFD	_IOWR(KVMIO,  0xd4, struct kvm_create_guest_memfd)
+#define GUEST_MEMFD_FLAG_SUPPORT_SHARED	(1UL << 0)
 
 struct kvm_create_guest_memfd {
 	__u64 size;
diff --git a/util/util.c b/util/util.c
index 300cdfd..8b38998 100644
--- a/util/util.c
+++ b/util/util.c
@@ -122,10 +122,11 @@
 {
 	struct kvm_create_guest_memfd gmem = {
 		.size = size,
-		.flags = 0,
+		.flags = GUEST_MEMFD_FLAG_SUPPORT_SHARED,
 	};
 
 	BUG_ON(hugetlb);
+	BUG_ON(!kvm__supports_extension(kvm, KVM_CAP_GMEM_SHARED_MEM));
 
 	return ioctl(kvm->vm_fd, KVM_CREATE_GUEST_MEMFD, &gmem);
 }