From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: Re: virtio_net sometimes didn't work Date: Wed, 16 Feb 2011 07:10:36 +0200 Message-ID: <20110216051036.GB10461@redhat.com> References: <20101125150634.GA17597@redhat.com> <20101209132246.GA22460@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: Avi Kivity , kvm@vger.kernel.org To: lidong chen Return-path: Received: from mx1.redhat.com ([209.132.183.28]:39959 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750748Ab1BPFLF (ORCPT ); Wed, 16 Feb 2011 00:11:05 -0500 Content-Disposition: inline In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: On Wed, Feb 16, 2011 at 09:53:25AM +0800, lidong chen wrote: > because of some other work, i could not focus on this problem last mo= nth. >=20 > now i find the wrong vaule of isr cause this problem. > in function vp_interrupt, the isr is 0, and the virtio_balloon pci > device have 100000 times initerrupts. then IRQ #11 disabled. >=20 > static irqreturn_t vp_interrupt(int irq, void *opaque) > { > struct virtio_pci_device *vp_dev =3D opaque; > struct virtio_pci_vq_info *info; > irqreturn_t ret =3D IRQ_NONE; > unsigned long flags; > u8 isr; >=20 > /* reading the ISR has the effect of also clearing it so it's very > * important to save off the value. */ > isr =3D ioread8(vp_dev->ioaddr + VIRTIO_PCI_ISR); >=20 > /* It's definitely not us if the ISR was not high */ > if (!isr) > return IRQ_NONE; //return from here >=20 This implies that io addr values got swapped between the devices. Try lspci -vv in guest and info pci in qemu and compare the io address values. >=20 >=20 > 2010/12/9 Michael S. Tsirkin : > > On Fri, Nov 26, 2010 at 10:38:33AM +0800, lidong chen wrote: > >> Does this message appear on boot, or after some stress? > >> on boot, and only appear when boot from network. > >> > >> Which qemu-kvm version? > >> [root@kvm-4slot ~]# /usr/libexec/qemu-kvm --version > >> QEMU PC emulator version 0.12.1 (qemu-kvm-0.12.1.2), Copyright (c) > >> 2003-2008 Fabrice Bellard > > > > what happens with the latest qemu? > > > >> Does cherry-picking 3fff0179e33cd7d0a688dab65700c46ad089e934 help? > >> the virtio_pci have already used this patch, still have this probl= em. > >> > >> What does info irqs show in qemu? > >> how to collect this information? > >> > >> but I found if modify the slot number of balloon device from 0x03 = to > >> 0x09, the problem solved. > >> > >> =A0 =A0 > >> =A0 =A0 =A0 > >> =A0 =A0 =A0
>> function=3D'0x0'/> > >> =A0 =A0 > > > > Interesting. Is it possible that even after baloon is moved, > > there's still the message in guest, only this time > > things keep going afterwards? > > > >> and i found someone else also meet this problem. > >> https://bugs.launchpad.net/ubuntu/+source/linux/+bug/584675 > >> > >> > >> > >> 2010/11/25 Michael S. Tsirkin : > >> > On Thu, Nov 25, 2010 at 10:21:24PM +0800, lidong chen wrote: > >> >> [version] > >> >> the host os version is 2.6.32 > >> > > >> > Which qemu-kvm version? > >> > > >> >> the guest os version is 2.6.16 > >> >> > >> >> [dmesg] > >> >> ACPI: (supports S3 S4 S5) > >> >> Freeing unused kernel memory: 200k freed > >> >> input: ImExPS/2 Generic Explorer Mouse as /class/input/input2 > >> >> ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11 > >> >> ACPI: PCI Interrupt 0000:00:03.0[A] -> Link [LNKC] -> GSI 11 (l= evel, > >> >> high) -> IRQ 11 > >> >> io address 0001c040ACPI: PCI Interrupt Link [LNKD] enabled at I= RQ 10 > >> >> ACPI: PCI Interrupt 0000:00:04.0[A] -> Link [LNKD] -> GSI 10 (l= evel, > >> >> high) -> IRQ 10 > >> >> io address 0001c060ACPI: PCI Interrupt Link [LNKA] enabled at I= RQ 10 > >> >> ACPI: PCI Interrupt 0000:00:05.0[A] -> Link [LNKA] -> GSI 10 (l= evel, > >> >> high) -> IRQ 10 > >> >> io address 0001c080ACPI: PCI Interrupt Link [LNKB] enabled at I= RQ 11 > >> >> ACPI: PCI Interrupt 0000:00:06.0[A] -> Link [LNKB] -> GSI 11 (l= evel, > >> >> high) -> IRQ 11 > >> >> io address 0001c0a0<6>ACPI: PCI Interrupt 0000:00:07.0[A] -> Li= nk > >> >> [LNKC] -> GSI 11 (level, high) -> IRQ 11 > >> >> io address 0001c0c0<6>ACPI: PCI Interrupt 0000:00:08.0[A] -> Li= nk > >> >> [LNKD] -> GSI 10 (level, high) -> IRQ 10 > >> >> io address 0001c0e0 > >> >> irq 11: nobody cared (try booting with the "irqpoll" option) > >> >> =A0[] __report_bad_irq+0x2b/0x69 > >> >> =A0[] note_interrupt+0x18b/0x1b2 > >> >> =A0[] handle_IRQ_event+0x26/0x51 > >> >> =A0[] __do_IRQ+0xab/0xdc > >> >> =A0[] do_IRQ+0x46/0x53 > >> >> =A0[] common_interrupt+0x1a/0x20 > >> >> =A0[] __do_softirq+0x4f/0xc2 > >> >> =A0[] do_softirq+0x2e/0x32 > >> >> =A0[] apic_timer_interrupt+0x1c/0x30 > >> >> =A0[] default_idle+0x2e/0x5c > >> >> =A0[] cpu_idle+0x91/0xad > >> >> =A0[] start_kernel+0x34c/0x353 > >> >> handlers: > >> >> [] (vp_interrupt+0x0/0x3e [virtio_pci]) > >> >> Disabling IRQ #11 > >> > > >> > Does this message appear on boot, or after some stress? > >> > Does cherry-picking 3fff0179e33cd7d0a688dab65700c46ad089e934 hel= p? > >> > Happens with a newer kernel as guest? > >> > What does info irqs show in qemu? > >> > > >> > > >> > -- > >> > MST > >> > -- > >> > To unsubscribe from this list: send the line "unsubscribe kvm" i= n > >> > the body of a message to majordomo@vger.kernel.org > >> > More majordomo info at =A0http://vger.kernel.org/majordomo-info.= html > >> > > >