mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-28 16:27:01 +00:00
add triple fault request support
if vcpu meet triple fault, the vcpu should exit. Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com> Acked-by: Tian, Kevin <kevin.tian@intel.com>
This commit is contained in:
parent
4607177383
commit
44af2690f6
@ -304,6 +304,11 @@ int acrn_handle_pending_request(struct vcpu *vcpu)
|
|||||||
bool intr_pending = false;
|
bool intr_pending = false;
|
||||||
uint64_t *pending_req_bits = &vcpu->arch_vcpu.pending_req;
|
uint64_t *pending_req_bits = &vcpu->arch_vcpu.pending_req;
|
||||||
|
|
||||||
|
if (bitmap_test_and_clear(ACRN_REQUEST_TRP_FAULT, pending_req_bits)) {
|
||||||
|
pr_fatal("Triple fault happen -> shutdown!");
|
||||||
|
return -EFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
if (bitmap_test_and_clear(ACRN_REQUEST_TLB_FLUSH, pending_req_bits))
|
if (bitmap_test_and_clear(ACRN_REQUEST_TLB_FLUSH, pending_req_bits))
|
||||||
invept(vcpu);
|
invept(vcpu);
|
||||||
|
|
||||||
|
@ -64,7 +64,12 @@ void vcpu_thread(struct vcpu *vcpu)
|
|||||||
CPU_IRQ_DISABLE();
|
CPU_IRQ_DISABLE();
|
||||||
|
|
||||||
/* Check and process pending requests(including interrupt) */
|
/* Check and process pending requests(including interrupt) */
|
||||||
acrn_handle_pending_request(vcpu);
|
ret = acrn_handle_pending_request(vcpu);
|
||||||
|
if (ret < 0) {
|
||||||
|
pr_fatal("vcpu handling pending request fail");
|
||||||
|
pause_vcpu(vcpu, VCPU_ZOMBIE);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (need_rescheduled(vcpu->pcpu_id)) {
|
if (need_rescheduled(vcpu->pcpu_id)) {
|
||||||
/*
|
/*
|
||||||
|
@ -70,6 +70,7 @@ int get_req_info(char *str, int str_max);
|
|||||||
#define ACRN_REQUEST_GP 3
|
#define ACRN_REQUEST_GP 3
|
||||||
#define ACRN_REQUEST_TMR_UPDATE 4
|
#define ACRN_REQUEST_TMR_UPDATE 4
|
||||||
#define ACRN_REQUEST_TLB_FLUSH 5
|
#define ACRN_REQUEST_TLB_FLUSH 5
|
||||||
|
#define ACRN_REQUEST_TRP_FAULT 6
|
||||||
|
|
||||||
#define E820_MAX_ENTRIES 32
|
#define E820_MAX_ENTRIES 32
|
||||||
|
|
||||||
|
@ -41,5 +41,7 @@
|
|||||||
#define EIO 4
|
#define EIO 4
|
||||||
/** Indicates that target is busy. */
|
/** Indicates that target is busy. */
|
||||||
#define EBUSY 5
|
#define EBUSY 5
|
||||||
|
/** Indicates there is fault. */
|
||||||
|
#define EFAULT 6
|
||||||
|
|
||||||
#endif /* ERRNO_H */
|
#endif /* ERRNO_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user