int kvm_arch_set_irq_inatomic(struct kvm_kernel_irq_routing_entry *e, struct kvm *kvm, int irq_source_id, int level, bool line_status)
{ if (!level) return -EWOULDBLOCK;
int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
{ int r;
switch (ext) { case KVM_CAP_IRQCHIP:
r = kvm_riscv_aia_available(); break; case KVM_CAP_IOEVENTFD: case KVM_CAP_USER_MEMORY: case KVM_CAP_SYNC_MMU: case KVM_CAP_DESTROY_MEMORY_REGION_WORKS: case KVM_CAP_ONE_REG: case KVM_CAP_READONLY_MEM: case KVM_CAP_MP_STATE: case KVM_CAP_IMMEDIATE_EXIT: case KVM_CAP_SET_GUEST_DEBUG:
r = 1; break; case KVM_CAP_NR_VCPUS:
r = min_t(unsignedint, num_online_cpus(), KVM_MAX_VCPUS); break; case KVM_CAP_MAX_VCPUS:
r = KVM_MAX_VCPUS; break; case KVM_CAP_NR_MEMSLOTS:
r = KVM_USER_MEM_SLOTS; break; case KVM_CAP_VM_GPA_BITS:
r = kvm_riscv_gstage_gpa_bits; break; default:
r = 0; break;
}
return r;
}
int kvm_vm_ioctl_enable_cap(struct kvm *kvm, struct kvm_enable_cap *cap)
{ switch (cap->cap) { case KVM_CAP_RISCV_MP_STATE_RESET: if (cap->flags) return -EINVAL;
kvm->arch.mp_state_reset = true; return 0; default: return -EINVAL;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.