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;
|
||||
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))
|
||||
invept(vcpu);
|
||||
|
||||
|
|
|
@ -64,7 +64,12 @@ void vcpu_thread(struct vcpu *vcpu)
|
|||
CPU_IRQ_DISABLE();
|
||||
|
||||
/* 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)) {
|
||||
/*
|
||||
|
|
|
@ -70,6 +70,7 @@ int get_req_info(char *str, int str_max);
|
|||
#define ACRN_REQUEST_GP 3
|
||||
#define ACRN_REQUEST_TMR_UPDATE 4
|
||||
#define ACRN_REQUEST_TLB_FLUSH 5
|
||||
#define ACRN_REQUEST_TRP_FAULT 6
|
||||
|
||||
#define E820_MAX_ENTRIES 32
|
||||
|
||||
|
|
|
@ -41,5 +41,7 @@
|
|||
#define EIO 4
|
||||
/** Indicates that target is busy. */
|
||||
#define EBUSY 5
|
||||
/** Indicates there is fault. */
|
||||
#define EFAULT 6
|
||||
|
||||
#endif /* ERRNO_H */
|
||||
|
|
Loading…
Reference in New Issue