mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-21 08:50:27 +00:00
uefi: init vlapic according to native lapic
this patch save native lapic configuration and restore it to vm0's vlapic before its running, then doing hpet timer interrupt injection through vlapic interface -- this will not mess up vlapic and we can see hpet timer interrupt coming continuously. Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
This commit is contained in:
@@ -119,6 +119,7 @@ uint8_t vlapic_get_apicid(struct vlapic *vlapic);
|
||||
int vlapic_create(struct vcpu *vcpu);
|
||||
void vlapic_free(struct vcpu *vcpu);
|
||||
void vlapic_init(struct vlapic *vlapic);
|
||||
void vlapic_restore(struct vlapic *vlapic, struct lapic_regs *regs);
|
||||
bool vlapic_enabled(struct vlapic *vlapic);
|
||||
uint64_t apicv_get_apic_access_addr(struct vm *vm);
|
||||
uint64_t apicv_get_apic_page_addr(struct vlapic *vlapic);
|
||||
|
@@ -161,6 +161,25 @@ union lapic_id {
|
||||
} x2apic;
|
||||
};
|
||||
|
||||
struct lapic_regs {
|
||||
uint32_t id;
|
||||
uint32_t tpr;
|
||||
uint32_t apr;
|
||||
uint32_t ppr;
|
||||
uint32_t ldr;
|
||||
uint32_t dfr;
|
||||
uint32_t tmr[8];
|
||||
uint32_t svr;
|
||||
uint32_t lvtt;
|
||||
uint32_t lvt0;
|
||||
uint32_t lvt1;
|
||||
uint32_t lvterr;
|
||||
uint32_t ticr;
|
||||
uint32_t tccr;
|
||||
uint32_t tdcr;
|
||||
};
|
||||
|
||||
void save_lapic(struct lapic_regs *regs);
|
||||
int early_init_lapic(void);
|
||||
int init_lapic(uint32_t cpu_id);
|
||||
int send_lapic_eoi(void);
|
||||
|
Reference in New Issue
Block a user