On 08/25/2014 03:17 PM, Zhang Haoyu wrote:
>>> Hi, all
>>> >>
>>> >> I use a qemu-1.4.1/qemu-2.0.0 to run win7 guest, and encounter e1000 NIC 
>>> >> interrupt storm, 
>>> >> because "if (!ent->fields.mask && (ioapic->irr & (1 << i)))" is always 
>>> >> true in __kvm_ioapic_update_eoi().
>>> >>
>>> >> Any ideas?
>> >
>> >We meet this several times: search the autoneg patches for an example of
>> >workaround for this in qemu, and patch kvm: ioapic: conditionally delay
>> >irq delivery during eoi broadcast for an workaround in kvm (rejected).
>> >
> Thanks, Jason,
> I searched "e1000 autoneg" in gmane.comp.emulators.qemu, and found below 
> patches, 
> http://thread.gmane.org/gmane.comp.emulators.qemu/143001/focus=143007
> http://thread.gmane.org/gmane.comp.emulators.qemu/284105/focus=284765
> http://thread.gmane.org/gmane.comp.emulators.qemu/186159/focus=187351
> which one tries to fix this problem, or all of them?
>
>> >That was probably caused by something wrong in e1000 emulation which
>> >causes interrupt to be injected into windows guest before its interrupt
>> >handler is registered. And Windows guest does not have a mechanism to
>> >detect and disable irq in such condition.
>> >
> Sorry, I don't understand,
> I think one interrupt should not been enabled before its handler is 
> successfully registered, 
> is it possible that e1000 emulation inject the interrupt before the interrupt 
> is succesfully enabled?

There's no way for qemu to know whether or not the irq handler was
registered in guest. So if qemu behaves differently with a physical
card, it may lead the interrupt to be injected into guest too early. You
can search redhat bugzilla for lots of related bugs, some even with
in-depth analysis.

Thanks
>
> Thanks,
> Zhang Haoyu
>  


Reply via email to