[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch] x86/HVM: Fix RTC interrupt modelling
At 11:17 +0000 on 10 Feb (1392027468), Andrew Cooper wrote: > The current code has a pathological case, tickled by the access pattern of > Windows 2003 Server SP2. Occasonally on boot (which I presume is during a > time calibration against the RTC Periodic Timer), Windows gets stuck in an > infinite loop reading RTC REG_C. This affects 32 and 64 bit guests. > > In the pathological case, the VM state looks like this: > * RTC: 64Hz period, periodic interrupts enabled > * RTC_IRQ in IOAPIC as vector 0xd1, edge triggered, not pending > * vector 0xd1 set in LAPIC IRR and ISR, TPR at 0xd0 > * Reads from REG_C return 'RTC_PF | RTC_IRQF' > > With an intstrumented Xen, dumping the periodic timers with a guest in this > state shows a single timer with pt->irq_issued=1 and pt->pending_intr_nr=2. > > Windows is presumably waiting for reads of REG_C to drop to 0 s/presumably/definitely/; we disassembled the kernel code in question. >, and reading > REG_C clears the value each time in the emulated RTC. However: > > * {svm,vmx}_intr_assist() calls pt_update_irq() unconditionally. > * pt_update_irq() always finds the RTC as earliest_pt. This is, AFAICT, because we are in no-missed-ticks mode, and there are multiple RTC ticks queued waiting to be delivered. Cheers, Tim. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |