@@ -145,31 +145,27 @@ impl VmFd {
145
145
/// extern crate kvm_bindings;
146
146
///
147
147
/// use kvm_bindings::{
148
- /// kvm_create_guest_memfd, kvm_enable_cap, kvm_userspace_memory_region2, KVM_CAP_GUEST_MEMFD,
148
+ /// kvm_create_guest_memfd, kvm_userspace_memory_region2, KVM_CAP_GUEST_MEMFD,
149
149
/// KVM_CAP_USER_MEMORY2, KVM_MEM_GUEST_MEMFD,
150
150
/// };
151
- /// use kvm_ioctls::Kvm;
151
+ /// use kvm_ioctls::{Cap, Kvm} ;
152
152
/// use std::os::fd::RawFd;
153
153
///
154
154
/// let kvm = Kvm::new().unwrap();
155
155
/// #[cfg(target_arch = "x86_64")]
156
156
/// let vm = kvm
157
157
/// .create_vm_with_type(kvm_bindings::KVM_X86_SW_PROTECTED_VM as u64)
158
158
/// .unwrap();
159
- /// #[cfg(target_arch = "aarch64" )]
160
- /// let vm = kvm.create_vm().unwrap(); /* ARM does not yet have a vm type that supports gmem */
159
+ /// #[cfg(not( target_arch = "x86_64") )]
160
+ /// let vm = kvm.create_vm().unwrap(); /* non-x86 does not yet have a vm type that supports gmem */
161
161
///
162
162
/// let address_space = unsafe { libc::mmap(0 as _, 10000, 3, 34, -1, 0) };
163
163
/// let userspace_addr = address_space as *const u8 as u64;
164
164
///
165
- /// let mut config = kvm_enable_cap {
166
- /// cap: KVM_CAP_GUEST_MEMFD,
167
- /// ..Default::default()
168
- /// };
169
- ///
170
- /// if vm.enable_cap(&config).is_err() {
165
+ /// if !vm.check_extension(Cap::GuestMemfd) || !vm.check_extension(Cap::UserMemory2) {
171
166
/// return;
172
167
/// }
168
+ ///
173
169
/// let gmem = kvm_create_guest_memfd {
174
170
/// size: 0x10000,
175
171
/// flags: 0,
@@ -178,12 +174,6 @@ impl VmFd {
178
174
///
179
175
/// let fd: RawFd = unsafe { vm.create_guest_memfd(gmem).unwrap() };
180
176
///
181
- /// config.cap = KVM_CAP_USER_MEMORY2;
182
- ///
183
- /// if vm.enable_cap(&config).is_err() {
184
- /// return;
185
- /// }
186
- ///
187
177
/// let mem_region = kvm_userspace_memory_region2 {
188
178
/// slot: 0,
189
179
/// flags: KVM_MEM_GUEST_MEMFD,
@@ -1460,24 +1450,19 @@ impl VmFd {
1460
1450
/// # extern crate kvm_ioctls;
1461
1451
/// extern crate kvm_bindings;
1462
1452
///
1463
- /// # use kvm_ioctls::Kvm;
1464
- /// use kvm_bindings::{kvm_create_guest_memfd, kvm_enable_cap, KVM_CAP_GUEST_MEMFD};
1453
+ /// # use kvm_ioctls::{Cap, Kvm} ;
1454
+ /// use kvm_bindings::{kvm_create_guest_memfd, KVM_CAP_GUEST_MEMFD};
1465
1455
/// use std::os::fd::RawFd;
1466
1456
///
1467
1457
/// let kvm = Kvm::new().unwrap();
1468
1458
/// #[cfg(target_arch = "x86_64")]
1469
1459
/// let vm = kvm
1470
1460
/// .create_vm_with_type(kvm_bindings::KVM_X86_SW_PROTECTED_VM as u64)
1471
1461
/// .unwrap();
1472
- /// #[cfg(target_arch = "aarch64")]
1473
- /// let vm = kvm.create_vm().unwrap(); /* ARM does not yet have a vm type that supports gmem */
1474
- ///
1475
- /// let config = kvm_enable_cap {
1476
- /// cap: KVM_CAP_GUEST_MEMFD,
1477
- /// ..Default::default()
1478
- /// };
1462
+ /// #[cfg(not(target_arch = "x86_64"))]
1463
+ /// let vm = kvm.create_vm().unwrap(); /* non-x86 does not yet have a vm type that supports gmem */
1479
1464
///
1480
- /// if vm.enable_cap(&config).is_err( ) {
1465
+ /// if ! vm.check_extension(Cap::GuestMemfd ) {
1481
1466
/// return;
1482
1467
/// }
1483
1468
///
@@ -1518,11 +1503,11 @@ impl VmFd {
1518
1503
/// # extern crate kvm_ioctls;
1519
1504
/// extern crate kvm_bindings;
1520
1505
///
1521
- /// # use kvm_ioctls::Kvm;
1506
+ /// # use kvm_ioctls::{Cap, Kvm} ;
1522
1507
/// use kvm_bindings::{
1523
- /// kvm_create_guest_memfd, kvm_enable_cap, kvm_memory_attributes ,
1524
- /// kvm_userspace_memory_region2, KVM_CAP_GUEST_MEMFD, KVM_CAP_MEMORY_ATTRIBUTES,
1525
- /// KVM_CAP_USER_MEMORY2, KVM_MEMORY_ATTRIBUTE_PRIVATE, KVM_MEM_GUEST_MEMFD,
1508
+ /// kvm_create_guest_memfd, kvm_memory_attributes, kvm_userspace_memory_region2 ,
1509
+ /// KVM_CAP_GUEST_MEMFD, KVM_CAP_MEMORY_ATTRIBUTES, KVM_CAP_USER_MEMORY2 ,
1510
+ /// KVM_MEMORY_ATTRIBUTE_PRIVATE, KVM_MEM_GUEST_MEMFD,
1526
1511
/// };
1527
1512
/// use std::os::fd::RawFd;
1528
1513
///
@@ -1531,8 +1516,8 @@ impl VmFd {
1531
1516
/// let vm = kvm
1532
1517
/// .create_vm_with_type(kvm_bindings::KVM_X86_SW_PROTECTED_VM as u64)
1533
1518
/// .unwrap();
1534
- /// #[cfg(target_arch = "aarch64" )]
1535
- /// let vm = kvm.create_vm().unwrap(); /* ARM does not yet have a vm type that supports gmem */
1519
+ /// #[cfg(not( target_arch = "x86_64") )]
1520
+ /// let vm = kvm.create_vm().unwrap(); /* non-x86 does not yet have a vm type that supports gmem */
1536
1521
/// let gmem = kvm_create_guest_memfd {
1537
1522
/// size: 0x10000,
1538
1523
/// flags: 0,
@@ -1541,25 +1526,14 @@ impl VmFd {
1541
1526
///
1542
1527
/// let address_space = unsafe { libc::mmap(0 as _, 10000, 3, 34, -1, 0) };
1543
1528
/// let userspace_addr = address_space as *const u8 as u64;
1544
- /// let mut config = kvm_enable_cap {
1545
- /// cap: KVM_CAP_GUEST_MEMFD,
1546
- /// ..Default::default()
1547
- /// };
1548
1529
///
1549
- /// if vm.enable_cap(&config).is_err() {
1550
- /// return;
1551
- /// }
1552
- ///
1553
- /// config.cap = KVM_CAP_USER_MEMORY2;
1554
- ///
1555
- /// if vm.enable_cap(&config).is_err() {
1530
+ /// if !vm.check_extension(Cap::GuestMemfd)
1531
+ /// || !vm.check_extension(Cap::UserMemory2)
1532
+ /// || !vm.check_extension(Cap::MemoryAttributes)
1533
+ /// {
1556
1534
/// return;
1557
1535
/// }
1558
- /// config.cap = KVM_CAP_MEMORY_ATTRIBUTES;
1559
1536
///
1560
- /// if vm.enable_cap(&config).is_err() {
1561
- /// return;
1562
- /// }
1563
1537
/// let fd: RawFd = unsafe { vm.create_guest_memfd(gmem).unwrap() };
1564
1538
/// let mem_region = kvm_userspace_memory_region2 {
1565
1539
/// slot: 0,
0 commit comments