linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: linux-os <linux-os@chaos.analogic.com>
To: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: David Vrabel <dvrabel@cantab.net>, aryix <aryix@softhome.net>,
	lug-list@lugmen.org.ar,
	Linux kernel <linux-kernel@vger.kernel.org>
Subject: Re: dmesg: PCI interrupts are no longer routed automatically.........
Date: Wed, 5 Jan 2005 13:15:30 -0500 (EST)	[thread overview]
Message-ID: <Pine.LNX.4.61.0501051251140.9762@chaos.analogic.com> (raw)
In-Reply-To: <1104945236.4046.25.camel@eeyore>

On Wed, 5 Jan 2005, Bjorn Helgaas wrote:

> On Wed, 2005-01-05 at 07:06 -0500, linux-os wrote:
>> The temporary work-around is....
>>  	pci_enable_device(pdev);
>>  	save_irq = pdev->irq;
>>  	pci_disable_device(pdev);	// Turn back off.
>>
>>  	init_bars(....);
>>  	request_irq(save_irq,...)	// Put ISR in place
>>
>>  	pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x08);
>>  	pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
>>  	pci_set_dma_mask(pdev, 0x00000000ffffffffULL);
>>  	pci_set_drvdata(pdev, NULL);
>>  	pci_set_power_state(pdev, 0);
>>  	pci_set_master(pdev);
>>  	pci_set_mwi(pdev);
>>  	pci_write_config_dword(pdev, PCI_COMMAND, PCI_CONFIG);
>>
>>  	.... configure chip-specific stuff, clear interrupts, etc.
>>  	pci_enable_device(dev);
>
> So prior to 2.6.10, you did something like this?
>
> 	request_irq(pdev->irq, ...);
> 	pci_write_config_byte(pdev, PCI_CACHE_LINE_SIZE, 0x08);
> 	pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x40);
> 	...
> 	pci_enable_device(pdev);
>

Yes, exactly.

> What sort of interrupts does the device generate before it's
> enabled?  I can't find anything in the PCI spec that actually
> prohibits interrupts before the driver starts up the device,
> but it does seem strange.
>

The problem is that the PLX-9656BA INTCSR is not in configuration
space, but runtime registers off a BAR. The interrupt source
can be from a PLD that hasn't even had its microcode loaded
yet!

FYI, the PLX or similar clone is the bus interface chip for many
busmastering PCI boards.

> You wouldn't want your ISR mucking around with a half-initialized
> device, so does it have to check a "device_configured" flag
> or something?
>

Yes. If the device isn't configured, the ISR reads all the INTCSR
bits, then writes 0 to the register to prevent anything else.

If the PLX had been reset, then the INTCSR bits would all
be masked off. However, reset is really only guaranteed from
power OFF on some motherboards, in particuar the ones with
so-called "hot-swap" capabilites fail. There is a software
reset that, in fact, even reloads its serial EEPROM. However,
the BAR needs to be accessible for this to be used.

So it would be wonderful if the correct IRQ could be made
available before the chip could generate an interrupt.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.10 on an i686 machine (5537.79 BogoMips).
  Notice : All mail here is now cached for review by Dictator Bush.
                  98.36% of all statistics are fiction.

  reply	other threads:[~2005-01-05 18:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-29  9:55 dmesg: PCI interrupts are no longer routed automatically aryix
2005-01-04 18:18 ` Bjorn Helgaas
2005-01-04 18:53   ` linux-os
2005-01-04 19:41     ` Bjorn Helgaas
2005-01-04 19:55       ` linux-os
2005-01-05  9:40         ` David Vrabel
2005-01-05 12:06           ` linux-os
2005-01-05 17:13             ` Bjorn Helgaas
2005-01-05 18:15               ` linux-os [this message]
2005-01-10 21:38                 ` Bjorn Helgaas
2005-01-10 22:03                   ` linux-os

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.61.0501051251140.9762@chaos.analogic.com \
    --to=linux-os@chaos.analogic.com \
    --cc=aryix@softhome.net \
    --cc=bjorn.helgaas@hp.com \
    --cc=dvrabel@cantab.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-os@analogic.com \
    --cc=lug-list@lugmen.org.ar \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).