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:
Jason Chen CJ 2018-05-28 13:00:04 +08:00 committed by lijinxia
parent 4607177383
commit 44af2690f6
4 changed files with 14 additions and 1 deletions

View File

@ -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);

View File

@ -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)) {
/*

View File

@ -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

View File

@ -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 */