Skip to content

Commit 57c217b

Browse files
fyin1lijinxia
authored andcommitted
hv: extend the vlapic_reset
vlapic reset should also zero apic_page and pir_desc if pir is enabled. Signed-off-by: Yin Fengwei <fengwei.yin@intel.com> Acked-by: Eddie Dong <eddie.dong@intel.com>
1 parent 21b9ba8 commit 57c217b

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

hypervisor/arch/x86/guest/vlapic.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1491,10 +1491,15 @@ vlapic_write(struct vlapic *vlapic, int mmio_access, uint64_t offset,
14911491
void
14921492
vlapic_reset(struct vlapic *vlapic)
14931493
{
1494+
uint32_t i;
14941495
struct lapic_regs *lapic;
1496+
void *apic_page;
14951497

14961498
lapic = vlapic->apic_page;
1497-
memset(lapic, 0, sizeof(struct lapic_regs));
1499+
apic_page = (void *)vlapic->apic_page;
1500+
memset(apic_page, 0, CPU_PAGE_SIZE);
1501+
if (vlapic->pir_desc)
1502+
memset(vlapic->pir_desc, 0, sizeof(struct pir_desc));
14981503

14991504
lapic->id = vlapic_build_id(vlapic);
15001505
lapic->version = VLAPIC_VERSION;
@@ -1509,6 +1514,14 @@ vlapic_reset(struct vlapic *vlapic)
15091514
vlapic_reset_timer(vlapic);
15101515

15111516
vlapic->svr_last = lapic->svr;
1517+
1518+
for (i = 0; i < VLAPIC_MAXLVT_INDEX + 1; i++)
1519+
vlapic->lvt_last[i] = 0;
1520+
1521+
for (i = 0; i < ISRVEC_STK_SIZE; i++)
1522+
vlapic->isrvec_stk[i] = 0;
1523+
1524+
vlapic->isrvec_stk_top = 0;
15121525
}
15131526

15141527
void

0 commit comments

Comments
 (0)