Skip to content

Commit 44b595a

Browse files
committed
refactor(vmm/aarch64): removed redundant errors
Some errors were not used or were dublicates of each other. Signed-off-by: Egor Lazarchuk <[email protected]>
1 parent e890585 commit 44b595a

File tree

2 files changed

+26
-40
lines changed

2 files changed

+26
-40
lines changed

src/vmm/src/arch/aarch64/regs.rs

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,6 @@ pub struct Aarch64Register {
3636
/// Errors thrown while setting aarch64 registers.
3737
#[derive(Debug, PartialEq, Eq, thiserror::Error)]
3838
pub enum Error {
39-
/// Failed to get core register (PC, PSTATE or general purpose ones).
40-
#[error("Failed to get {1} register: {0}")]
41-
GetCoreRegister(kvm_ioctls::Error, String),
42-
/// Failed to set core register (PC, PSTATE or general purpose ones).
43-
#[error("Failed to set {1} register: {0}")]
44-
SetCoreRegister(kvm_ioctls::Error, String),
45-
/// Failed to get a system register.
46-
#[error("Failed to get register: {0}: {1}")]
47-
GetSysRegister(u64, kvm_ioctls::Error),
48-
/// Failed to set a system register.
49-
#[error("Failed to set register {0}: {1}")]
50-
SetSysRegister(u64, kvm_ioctls::Error),
5139
/// Failed to get a register value.
5240
#[error("Failed to get register {0}: {1}")]
5341
GetOneReg(u64, kvm_ioctls::Error),
@@ -227,29 +215,26 @@ pub fn setup_boot_regs(
227215

228216
// Get the register index of the PSTATE (Processor State) register.
229217
let pstate = offset__of!(user_pt_regs, pstate) + kreg_off;
230-
vcpu.set_one_reg(
231-
arm64_core_reg_id!(KVM_REG_SIZE_U64, pstate),
232-
PSTATE_FAULT_BITS_64.into(),
233-
)
234-
.map_err(|err| Error::SetCoreRegister(err, "processor state".to_string()))?;
218+
let id = arm64_core_reg_id!(KVM_REG_SIZE_U64, pstate);
219+
vcpu.set_one_reg(id, PSTATE_FAULT_BITS_64.into())
220+
.map_err(|err| Error::SetOneReg(id, err))?;
235221

236222
// Other vCPUs are powered off initially awaiting PSCI wakeup.
237223
if cpu_id == 0 {
238224
// Setting the PC (Processor Counter) to the current program address (kernel address).
239225
let pc = offset__of!(user_pt_regs, pc) + kreg_off;
240-
vcpu.set_one_reg(arm64_core_reg_id!(KVM_REG_SIZE_U64, pc), boot_ip.into())
241-
.map_err(|err| Error::SetCoreRegister(err, "program counter".to_string()))?;
226+
let id = arm64_core_reg_id!(KVM_REG_SIZE_U64, pc);
227+
vcpu.set_one_reg(id, boot_ip.into())
228+
.map_err(|err| Error::SetOneReg(id, err))?;
242229

243230
// Last mandatory thing to set -> the address pointing to the FDT (also called DTB).
244231
// "The device tree blob (dtb) must be placed on an 8-byte boundary and must
245232
// not exceed 2 megabytes in size." -> https://www.kernel.org/doc/Documentation/arm64/booting.txt.
246233
// We are choosing to place it the end of DRAM. See `get_fdt_addr`.
247234
let regs0 = offset__of!(user_pt_regs, regs) + kreg_off;
248-
vcpu.set_one_reg(
249-
arm64_core_reg_id!(KVM_REG_SIZE_U64, regs0),
250-
get_fdt_addr(mem).into(),
251-
)
252-
.map_err(|err| Error::SetCoreRegister(err, "X0".to_string()))?;
235+
let id = arm64_core_reg_id!(KVM_REG_SIZE_U64, regs0);
236+
vcpu.set_one_reg(id, get_fdt_addr(mem).into())
237+
.map_err(|err| Error::SetOneReg(id, err))?;
253238
}
254239
Ok(())
255240
}
@@ -261,7 +246,7 @@ pub fn setup_boot_regs(
261246
/// * `vcpu` - Structure for the VCPU that holds the VCPU's fd.
262247
pub fn read_mpidr(vcpu: &VcpuFd) -> Result<u64> {
263248
match vcpu.get_one_reg(MPIDR_EL1) {
264-
Err(err) => Err(Error::GetSysRegister(MPIDR_EL1, err)),
249+
Err(err) => Err(Error::GetOneReg(MPIDR_EL1, err)),
265250
// MPIDR register is 64 bit wide on aarch64, this expect cannot fail
266251
// on supported architectures
267252
Ok(val) => Ok(val.try_into().expect("MPIDR register to be 64 bit")),
@@ -371,7 +356,7 @@ pub fn save_registers(vcpu: &VcpuFd, ids: &[u64], state: &mut Vec<Aarch64Registe
371356
id: *id,
372357
value: vcpu
373358
.get_one_reg(*id)
374-
.map_err(|e| Error::GetSysRegister(*id, e))?,
359+
.map_err(|e| Error::GetOneReg(*id, e))?,
375360
});
376361
}
377362

@@ -387,7 +372,7 @@ pub fn save_registers(vcpu: &VcpuFd, ids: &[u64], state: &mut Vec<Aarch64Registe
387372
pub fn restore_registers(vcpu: &VcpuFd, state: &[Aarch64Register]) -> Result<()> {
388373
for reg in state {
389374
vcpu.set_one_reg(reg.id, reg.value)
390-
.map_err(|e| Error::SetSysRegister(reg.id, e))?;
375+
.map_err(|e| Error::SetOneReg(reg.id, e))?;
391376
}
392377
Ok(())
393378
}
@@ -431,7 +416,7 @@ mod tests {
431416
let res = setup_boot_regs(&vcpu, 0, 0x0, &mem);
432417
assert_eq!(
433418
res.unwrap_err(),
434-
Error::SetCoreRegister(kvm_ioctls::Error::new(8), "processor state".to_string())
419+
Error::SetOneReg(6931039826524241986, kvm_ioctls::Error::new(8))
435420
);
436421

437422
let mut kvi: kvm_bindings::kvm_vcpu_init = kvm_bindings::kvm_vcpu_init::default();
@@ -452,7 +437,7 @@ mod tests {
452437
let res = read_mpidr(&vcpu);
453438
assert_eq!(
454439
res.unwrap_err(),
455-
Error::GetSysRegister(MPIDR_EL1, kvm_ioctls::Error::new(8))
440+
Error::GetOneReg(MPIDR_EL1, kvm_ioctls::Error::new(8))
456441
);
457442

458443
vcpu.vcpu_init(&kvi).unwrap();
@@ -472,7 +457,7 @@ mod tests {
472457
let res = save_core_registers(&vcpu, &mut state);
473458
assert_eq!(
474459
res.unwrap_err(),
475-
Error::GetCoreRegister(kvm_ioctls::Error::new(8), "X0".to_string())
460+
Error::GetOneReg(6931039826524241920, kvm_ioctls::Error::new(8))
476461
);
477462

478463
let res = save_all_registers(&vcpu, &mut state);

src/vmm/src/vstate/vcpu/aarch64.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,11 @@ mod tests {
294294
);
295295
assert!(err.is_err());
296296
assert_eq!(
297-
err.err().unwrap().to_string(),
298-
"Error configuring the vcpu registers: Failed to set processor state register: Bad \
299-
file descriptor (os error 9)"
300-
.to_string()
297+
err.unwrap_err(),
298+
super::Error::ConfigureRegisters(ArchError::SetOneReg(
299+
6931039826524241986,
300+
kvm_ioctls::Error::new(9)
301+
))
301302
);
302303

303304
let (_vm, mut vcpu, vm_mem) = setup_vcpu(0x10000);
@@ -307,12 +308,12 @@ mod tests {
307308
GuestAddress(crate::arch::get_kernel_start()),
308309
&vcpu_config,
309310
);
310-
assert!(err.is_err());
311311
assert_eq!(
312-
err.err().unwrap().to_string(),
313-
"Error configuring the vcpu registers: Failed to set processor state register: Bad \
314-
file descriptor (os error 9)"
315-
.to_string()
312+
err.unwrap_err(),
313+
super::Error::ConfigureRegisters(ArchError::SetOneReg(
314+
6931039826524241986,
315+
kvm_ioctls::Error::new(9)
316+
))
316317
);
317318
}
318319

@@ -352,7 +353,7 @@ mod tests {
352353
assert!(res.is_err());
353354
assert_eq!(
354355
res.unwrap_err(),
355-
super::Error::RestoreState(ArchError::SetSysRegister(0, kvm_ioctls::Error::new(8)))
356+
super::Error::RestoreState(ArchError::SetOneReg(0, kvm_ioctls::Error::new(8)))
356357
);
357358

358359
init_vcpu(&vcpu.fd, vm.fd());

0 commit comments

Comments
 (0)