Re: [RFC/PATCH] Kdump: Disabling PCI interrupts in capture kernel

From: Vivek Goyal
Date: Mon Jun 06 2005 - 22:08:58 EST


Quoting Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>:

> On Sat, 4 Jun 2005, Vivek Goyal wrote:
>
> > Hi Alan, I know very little about consoles and their working.
> > I had a question. Even if console is being managed by platform firmware,
> in
> > initial states of booting, does it require interrupts to be enabled at
> > VGA contorller (at least for the simple text mode). I was quickly
> browsing
> > through drivers/video/console/vgacon.c and did not look like that this
> > console driver needed interrupts to be enabled at the controller.
>
> This isn't an issue for VGA, as far as I know. It applies to
> architectures like PPC-64 and perhaps Alpha or PA-Risc. And I don't know
> the details; ask Grant Grundler.
>
> > Anyway, looks like serial consoles will always work. So at least this can
> be
> > done for kdump case (CONFIG_CRASH_DUMP) and not generic kernel. Or, as I
> > mentioned in previous mail, while pre-loading capture kernel, pass a
> command
> > line parameter containing pci dev id of console and capture kernel does not
>
> > disable interrupts on this console.
>
> I suspect you're right that implementing this only in kdump kernels will
> work okay.
>
> For people interesting in reading some old threads on the subject, here
> are some pointers:
>
> http://marc.theaimsgroup.com/?l=linux-usb-devel&m=111055702309788&w=2
>
> http://marc.theaimsgroup.com/?l=linux-kernel&m=98383052711171&w=2

I browsed through the discussion threads quickly. Previous proposal included
disabling the DMA as well from the devices. Currently, for kdump, we are not
looking at disabling the DMA from the devices. So far have not run into
any problems due to ongoing DMA (Need to look into IOMMU reprogramming aspect
though). Following is a snippet from one of the discussion threads.


|List: linux-usb-devel
|Subject: [linux-usb-devel] Re: PCI device initialization and USB
early-handoff
|From: Grant Grundler <grundler () parisc-linux ! org>
|Date: 2005-03-11 18:12:57
|Message-ID: <20050311181257.GB15070 () colo ! lackof ! org>
|[Download message RAW]
.....

|> > Is it feasible to have the PCI device initialization sequence disable DMA
|> > and IRQs from the device? This could solve the problems we've been seeing
|> > with non-quiescent devices sharing an IRQ line at startup.

|two potential issues here:
|o ISTR VGA devices may not like disabling Bus Master bit in the command reg.
| But I'm blissfully ignorant of all the issues around VGA and someone
| else will have to comment on that.
|
|o platform devices (e.g. bridges) that don't have PCI drivers to re-enable
| them later. "transperent" Bridges are the only example I can come up with
| now but expect more to come out of the woodwork as this gets widely
| tested. Trolling through PCI quirks might flag some of the known ones.
| I would expect a few more to show up with this change.

|hth,
|grant


o Bus Master bit is not being disabled, only interrupt generation will be
disabled and looks like at least VGA and serial consoles are not impacted
due to disabling of interrupt. Any other consoles which require interrupt
to be enabled for their working????

o As per pci-to-pci bridge architecture specification revision 1.2,
interrupt disable bit in PCI-PCI bridge is optional and if implemented,
it will disable interrupt generation from bridge but will have no effect
on interrupts that the bridge forwards from the PCI devices on the
secondary bus.

So even if interrupts are disabled on PCI-PCI bridge, interrupts generated
by PCI devices on secondary bus are not blocked and I hope device should
be working fine.


The whole idea is that currently this change is kdump specific. Ofcourse there
shall be issues which are not known yet and more devices might not
work for kdump kernels. But at the same time kdump kernels are not supposed to
do a great deal except capture and save the dump. So this change might not
be of a big concern even if some devices don't work as long as kdump kernel
can boot.

Disabling interrupts at PCI level should increase the reliability of capturing
the dump on newer machines with hardware compliant with PCI 2.3 or higher.
Booting a kdump kernel with reduced functionality should always be better than
not booting at all.

Thanks
Vivek

-
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/