From 65d580c2b0bd4643b4e9e70cb77a72ae6d9d8de7 Mon Sep 17 00:00:00 2001 From: Alex Lyn Date: Fri, 26 Jun 2026 20:24:44 +0800 Subject: [PATCH] runtime-rs: Add BlockModern arm in DeviceManager Add BlockModern handling in DeviceManager so that device index is correctly released both in get_device_info and in the error path. Signed-off-by: Alex Lyn --- .../hypervisor/src/device/device_manager.rs | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/runtime-rs/crates/hypervisor/src/device/device_manager.rs b/src/runtime-rs/crates/hypervisor/src/device/device_manager.rs index d29173f63a..3bd6c70aa8 100644 --- a/src/runtime-rs/crates/hypervisor/src/device/device_manager.rs +++ b/src/runtime-rs/crates/hypervisor/src/device/device_manager.rs @@ -167,6 +167,13 @@ impl DeviceManager { self.shared_info .release_device_index(device.config.index, false); } + DeviceType::BlockModern(device) => { + let (index, is_pmem) = { + let cfg = &device.lock().await.config; + (cfg.index, cfg.driver_option == *KATA_NVDIMM_DEV_TYPE) + }; + self.shared_info.release_device_index(index, is_pmem); + } _ => { debug!(sl!(), "no need to do release device index."); } @@ -191,12 +198,15 @@ impl DeviceManager { Ok(index) => { if let Some(i) = index { // release the declared device index - let is_pmem = - if let DeviceType::Block(blk) = device_guard.get_device_info().await { + let is_pmem = match device_guard.get_device_info().await { + DeviceType::Block(blk) => { blk.config.driver_option == *KATA_NVDIMM_DEV_TYPE - } else { - false - }; + } + DeviceType::BlockModern(dev) => { + dev.lock().await.config.driver_option == *KATA_NVDIMM_DEV_TYPE + } + _ => false, + }; self.shared_info.release_device_index(i, is_pmem); } Ok(())