dragonball: fix a bug when generating kernel boot args

We should refuse to generate boot args when hotplugging, not cold starting.

Signed-off-by: Zizheng Bian <zizheng.bian@linux.alibaba.com>
This commit is contained in:
Zizheng Bian 2022-06-14 12:00:39 +08:00 committed by Chao Wu
parent 2aedd4d12a
commit 8bb00a3dc8

View File

@ -251,29 +251,31 @@ impl DeviceOpContext {
&self.logger &self.logger
} }
#[allow(unused_variables)]
fn generate_kernel_boot_args(&mut self, kernel_config: &mut KernelConfigInfo) -> Result<()> { fn generate_kernel_boot_args(&mut self, kernel_config: &mut KernelConfigInfo) -> Result<()> {
if !self.is_hotplug { if self.is_hotplug {
return Err(DeviceMgrError::InvalidOperation); return Err(DeviceMgrError::InvalidOperation);
} }
#[cfg(feature = "dbs-virtio-devices")] #[cfg(feature = "dbs-virtio-devices")]
let cmdline = kernel_config.kernel_cmdline_mut(); {
let cmdline = kernel_config.kernel_cmdline_mut();
#[cfg(feature = "dbs-virtio-devices")] for device in self.virtio_devices.iter() {
for device in self.virtio_devices.iter() { let (mmio_base, mmio_size, irq) = DeviceManager::get_virtio_device_info(device)?;
let (mmio_base, mmio_size, irq) = DeviceManager::get_virtio_device_info(device)?;
// as per doc, [virtio_mmio.]device=<size>@<baseaddr>:<irq> needs to be appended // as per doc, [virtio_mmio.]device=<size>@<baseaddr>:<irq> needs to be appended
// to kernel commandline for virtio mmio devices to get recognized // to kernel commandline for virtio mmio devices to get recognized
// the size parameter has to be transformed to KiB, so dividing hexadecimal value in // the size parameter has to be transformed to KiB, so dividing hexadecimal value in
// bytes to 1024; further, the '{}' formatting rust construct will automatically // bytes to 1024; further, the '{}' formatting rust construct will automatically
// transform it to decimal // transform it to decimal
cmdline cmdline
.insert( .insert(
"virtio_mmio.device", "virtio_mmio.device",
&format!("{}K@0x{:08x}:{}", mmio_size / 1024, mmio_base, irq), &format!("{}K@0x{:08x}:{}", mmio_size / 1024, mmio_base, irq),
) )
.map_err(DeviceMgrError::Cmdline)?; .map_err(DeviceMgrError::Cmdline)?;
}
} }
Ok(()) Ok(())