From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: Re: PCI hotplug problem Date: Fri, 01 Oct 2010 16:23:56 +0100 Message-ID: <4CA6192C020000780001A1F3@vpn.id2.novell.com> References: <20100916114424.GE2621@email> <20100924142458.GB867@email> <20100927170705.GD4741@dumpdata.com> <20101001142412.GD1201@email> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20101001142412.GD1201@email> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Rafal Wojtczuk Cc: "xen-devel@lists.xensource.com" , Keir Fraser , Konrad Rzeszutek Wilk List-Id: xen-devel@lists.xenproject.org >>> On 01.10.10 at 16:24, Rafal Wojtczuk = wrote: > There is one more problem with the linux-2.6.18-xen.hg pcifront (that = affect > derived code, e.g. OpenSUSE kernel, too). unbind_from_irqhandler() is > mistakenly passed evtchn, instead of irq. Compare line 68 of > http://xenbits.xensource.com/linux-2.6.18-xen.hg?file/a66a7c64b1d0/driver= s/xen=20 > /pcifront/xenbus.c > with pvops equivalent > http://git.kernel.org/?p=3Dlinux/kernel/git/jeremy/xen.git;a=3Dblob;f=3Dd= rivers/pc=20 > i/xen-pcifront.c;h=3D10868aeae818d69980b8519f8a77b38d6ab58a4c;hb=3DHEAD#l= 758 >=20 > The following patch helps. Except there is no irq_from_evtchn() in the original tree. I'll post a better, more complete patch later. Jan > Regards, > Rafal Wojtczuk >=20 >=20 > unbind_from_irqhandler takes irq, not evtchn, as its first argument. >=20 > Signed-off-by: Rafal Wojtczuk > --- linux-2.6.34.1/drivers/xen/pcifront/xenbus.c.orig 2010-09-29=20 > 16:47:39.961674359 +0200 > +++ linux-2.6.34.1/drivers/xen/pcifront/xenbus.c 2010-09-29=20 > 16:47:49.458675391 +0200 > @@ -61,7 +61,7 @@ static void free_pdev(struct pcifront_de >=20 > /*For PCIE_AER error handling job*/ > flush_scheduled_work(); > - unbind_from_irqhandler(pdev->evtchn, pdev); > + unbind_from_irqhandler(irq_from_evtchn(pdev->evtchn), pdev); >=20 > if (pdev->evtchn !=3D INVALID_EVTCHN) > xenbus_free_evtchn(pdev->xdev, pdev->evtchn);