lkml.org 
[lkml]   [2008]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 1/2] pci/irq: restore mask_bits in msi shutdown -v3
On Fri, Apr 25, 2008 at 2:48 PM, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> On Wednesday, April 23, 2008 2:56 pm Yinghai Lu wrote:
> > Yinghai found after using 2.6.25-rc3 later to kexec RHEL 5.1,
> > NIC can not be used.
> >
> > bisected to
>
> Hi Yinghai, I've been thinking about these patches a bit... They seem like an
> important bug fix (making sure kexec'd kernels work), but I'm a bit worried
> that the kexec'd kernel can't handle potentially broken MSI/INTx setups.
> Shouldn't the kexec'd kernel be a bit more robust? I guess in this case
> you're kexec'ing an old kernel, so there's not much we can do, but it still
> makes me a little uneasy.

Yes, it is important, and should be in 2.6.25 stable too.

the maskbits always 0x00 (enabled) from BIOS post..., so we should restore that.

>
> I guess for this particular set it doesn't matter much, since we should be
> restoring things in pci_msi*_shutdown and pci_shutdown_device either way.
> Can you clean up the changelog a bit and maybe make it more concise? E.g. we
> probably don't need the whole commit message for the bisect, and we want to
> be clearer about what the failure mode is w/o the changes...

without it, the second kernel can not use the devices, if second
kernel could use MSI but doesn't touch mask_bit.

---
[PATCH 1/2] pci/irq: restore mask_bits in msi shutdown -v3

Yinghai found after using 2.6.25-rc3 later to kexec RHEL 5.1,
NIC can not be used.

bisected to

| commit 89d694b9dbe769ca1004e01db0ca43964806a611
| Author: Thomas Gleixner <tglx@linutronix.de>
| Date: Mon Feb 18 18:25:17 2008 +0100
|
| genirq: do not leave interupts enabled on free_irq
|
| The default_disable() function was changed in commit:
|
| 76d2160147f43f982dfe881404cfde9fd0a9da21
| genirq: do not mask interrupts by default
|

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 lets to restore the mask bit to it's pci reset defined value (enabled) when
we disable the kernels use of msi.

extend msi_set_mask_bit to msi_set_mask_bits to take mask, so we can fully
restore that to 0x00 instead of 0xfe.

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>

---

YH


\
 
 \ /
  Last update: 2008-04-26 00:11    [W:1.046 / U:0.008 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site