Re: regression caused by: genirq: do not leave interupts enabled on free_irq

From: Yinghai Lu
Date: Tue Apr 15 2008 - 04:03:39 EST


On Tue, Apr 15, 2008 at 12:44 AM, Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> On Fri, 11 Apr 2008 12:48:43 -0700 "Yinghai Lu" <yhlu.kernel@xxxxxxxxx> wrote:
>
> > On Fri, Apr 11, 2008 at 11:22 AM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> > > On Fri, Apr 11, 2008 at 12:30 AM, Eric W. Biederman
> > > <ebiederm@xxxxxxxxxxxx> wrote:
> > > >
> > > >
> > >
> > >
> > > > On Fri, 2008-04-11 at 00:17 -0700, Yinghai Lu wrote:
> > > > > On Fri, Apr 11, 2008 at 12:14 AM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> > > > > > On Fri, Apr 11, 2008 at 12:01 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> > > > > > > On Thu, 10 Apr 2008, Yinghai Lu wrote:
> > > > > > > > last week found:
> > > > > > > > after latest kernel kexec RHEL 5.1 or other stack kernel, the nvidia
> > > > > > > > forcedeth doesn't work anymore.
> > > > > > > >
> > > > > > > > I stared at forcedeth.c two days. and revert every patches about that
> > > > > > > > doesn't help.
> > > > > > >
> > > > > > > So forcedeth does not come up again, when you kexec from linus.git
> > > > > > > into an older distro kernel. Or is it the other way round ?
> > > > > > RHEL 5.1 kexec RHEL 5.1 : works
> > > > > > RHEL 5.1 kexec linus kernel: works
> > > > > > linus (after -rc2) kexec linus tree: works:
> > > > > > linus (after -rc2) kexec RHEL 5.1 : forcedeth will not come up
> > > > > > linus ( before -rc2 include rc2) kexec RHEL 5.1 works
> > > > > >
> > > > > the forcedeth can not get IP address...
> > > >
> > > > Sounds like you are not getting any interrupts when you receive a
> > > > packet. (i.e. The interrupt line is staying disabled).
> > > >
> > > > Is MSI an option here? I'm wondering if we disable the MSI and
> > > > something is not enabling it.
> > >
> > >
> > >
> > > after
> > > setpci -s 0x00:08.0 0x60.b=0xfe
> > >
> > > the eth0 can get ip address with ifup eth0.
> >
> > it is RHEL 5.1 problem...with msi.
> >
> > somehow msi entry msi_attrib_maskbit=is_mask_bit_support always get
> > 0...., and use msi_irq_wo_maskbit_type instead of
> > msi_irq_w_maskbit_type
> >
> > so when load that directly without kexec
> > that 0x60 always to 0x00.
> >
> > and this time kernel after 2.6.25-rc2 ( not included) really shutdown
> > the msi with 0xff the all maskbit...
> >
>
> So... where did this end up? It's a post-2.6.24 regression, isn't it?
>
> Do we think it's a bug in the RHEL 5.1 kernel? Even so, that's a problem
> for the 2.6.25 kernel.

it is RHEL 5.1 kernel problem, it has code for maskbit with msi there,
but that does work...

I sent out patch for 2.6.25 so it can be used to kexec old kernel that
doesn't support maskbit for MSI.

please comment...

[PATCH] x86_64: restore mask_bits in msi shutdown


for MSI, default_shutdown will call mask_bit for msi device. so all
mask bits will
left disabled after free_irq.
then if kexec next kernel that only can use msi_enable bit.
all device's MSI can not be used.

So try to restore MSI mask bits that is saved before using msi in first kernel.

http://lkml.org/lkml/2008/4/11/369

YH
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/