All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kok, Auke" <auke-jan.h.kok@intel.com>
To: Marian Balakowicz <m8@semihalf.com>, bjorn.helgaas@hp.com
Cc: linux-pci@atrey.karlin.mff.cuni.cz, len.brown@intel.com,
	NetDev <netdev@vger.kernel.org>
Subject: Re: quirk_e100_interrupt() called too early
Date: Thu, 28 Jun 2007 09:01:08 -0700	[thread overview]
Message-ID: <4683DB44.9070704@intel.com> (raw)
In-Reply-To: <4683A80F.5020605@semihalf.com>

Marian Balakowicz wrote:
> I am enabling and testing PCI on tqm5200 mpc5200 based board where I
> faced the following issue.
> 
> I am using EEPRO100 PCI card for which there is specific
> quirk_e100_interrupt that tries to disable interrupts if
> they were left enabled by the firmware. quirk_e100_interrupts() is
> called after PCI controller is initialized and before PCI bus
> enumeration is performed. On some powerpc platforms, like the one I am
> using, PCI controller configuration sets different MEM and IO windows
> than those set by firmware. That is why quirk_e100_interrupt() is
> causing kernel panic as it tries to read from device BAR0 offets which
> at this time point to a invalid PCI window (set by firmware).
> 
> The patch below delays the quirk_100_interrupt() to pci_fixup_final
> phase, which happens after bus enumeration and before device PCI enable
> and device driver initialization - so, it seem to be still a good place
> for this quirk. It works fine for me but I only tested it on a tqm5200.
> Could someone please help and verify that on other platforms?

will try to do. This sounds indeed like the proper thing to do. Unfortunately I 
don't have any NICs to repro this on (allthough I have a ppc box with said 
firmware probe method).

Bjorn orignially wrote this patch, perhaps he can comment on the fixup move?

Also, please send a signed-off-by patch so I can push it forward as usual.

Cheers,

Auke


> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 01d8f8a..7194074 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -1475,7 +1475,7 @@ static void __devinit quirk_e100_interru
> 
>         iounmap(csr);
>  }
> -DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
> quirk_e100_interrupt);
> +DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
> quirk_e100_interrupt);
> 
>  static void __devinit fixup_rev1_53c810(struct pci_dev* dev)
>  {


       reply	other threads:[~2007-06-28 16:01 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4683A80F.5020605@semihalf.com>
2007-06-28 16:01 ` Kok, Auke [this message]
2007-06-29  2:07   ` quirk_e100_interrupt() called too early Bjorn Helgaas
2007-07-02  8:07     ` Nils Rennebarth
2007-07-02 19:03       ` Kok, Auke
2007-07-03  9:00   ` Marian Balakowicz
2007-07-03  9:03   ` [PATCH] PCI: " Marian Balakowicz
2007-07-17 17:21     ` patch pci-quirk_e100_interrupt-called-too-early.patch added to gregkh-2.6 tree gregkh
2007-07-17 17:26       ` Kok, Auke

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=4683DB44.9070704@intel.com \
    --to=auke-jan.h.kok@intel.com \
    --cc=bjorn.helgaas@hp.com \
    --cc=len.brown@intel.com \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=m8@semihalf.com \
    --cc=netdev@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.