pub fn run_vcpu<V>(
    cpu_id: usize,
    vcpu_id: usize,
    vcpu: Option<V>,
    vcpu_init: VcpuInitArch,
    vm: impl VmArch + 'static,
    irq_chip: Box<dyn IrqChipArch + 'static>,
    vcpu_count: usize,
    run_rt: bool,
    vcpu_affinity: Vec<usize>,
    delay_rt: bool,
    start_barrier: Arc<Barrier>,
    has_bios: bool,
    io_bus: Bus,
    mmio_bus: Bus,
    vm_evt_wrtube: SendTube,
    requires_pvclock_ctrl: bool,
    from_main_tube: Receiver<VcpuControl>,
    use_hypervisor_signals: bool,
    to_gdb_tube: Option<Sender<VcpuDebugStatusMessage>>,
    enable_per_vm_core_scheduling: bool,
    cpu_config: Option<CpuConfigArch>,
    privileged_vm: bool,
    vcpu_cgroup_tasks_file: Option<File>,
    userspace_msr: BTreeMap<u32, MsrConfig>,
    guest_suspended_cvar: Arc<(Mutex<bool>, Condvar)>
) -> Result<JoinHandle<()>> where
    V: VcpuArch + 'static,