All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <bhelgaas@google.com>
To: matt@masarand.com
Cc: linux-pci@vger.kernel.org
Subject: Re: [PATCH 08/18] Delayed frv setup of PCI IRQs to bus scan time
Date: Tue, 14 Oct 2014 12:37:26 -0600	[thread overview]
Message-ID: <20141014183726.GH10125@google.com> (raw)
In-Reply-To: <1412222866-21068-9-git-send-email-matt@masarand.com>

On Thu, Oct 02, 2014 at 05:07:36AM +0100, matt@masarand.com wrote:
> From: Matthew Minter <matt@masarand.com>
> 
> PCI IRQs are being assigned during the frv pcibios phase. This causes
> devices which are not connected at boot but are later hot-plugged
> to not receive an IRQ. This patch set causes the pcibios to instead
> register an IRQ assignment function which is called during the enable
> device path to apply to all devices.
> 
> Signed-off-by: Matthew Minter <matt@masarand.com>
> 
> ---
>  arch/frv/mb93090-mb00/pci-frv.h |  1 -
>  arch/frv/mb93090-mb00/pci-irq.c | 28 +++++++++++++++++-----------
>  arch/frv/mb93090-mb00/pci-vdk.c |  1 -
>  3 files changed, 17 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/frv/mb93090-mb00/pci-frv.h b/arch/frv/mb93090-mb00/pci-frv.h
> index a7e487fe..492b56d 100644
> --- a/arch/frv/mb93090-mb00/pci-frv.h
> +++ b/arch/frv/mb93090-mb00/pci-frv.h
> @@ -36,5 +36,4 @@ extern struct pci_ops *__nongpreldata pci_root_ops;
>  extern unsigned int pcibios_irq_mask;
>  
>  void pcibios_irq_init(void);
> -void pcibios_fixup_irqs(void);
>  void pcibios_enable_irq(struct pci_dev *dev);
> diff --git a/arch/frv/mb93090-mb00/pci-irq.c b/arch/frv/mb93090-mb00/pci-irq.c
> index 1c35c93..3463e30 100644
> --- a/arch/frv/mb93090-mb00/pci-irq.c
> +++ b/arch/frv/mb93090-mb00/pci-irq.c
> @@ -40,19 +40,25 @@ void __init pcibios_irq_init(void)
>  {
>  }
>  
> -void __init pcibios_fixup_irqs(void)
> +int pcibios_map_irq(struct pci_dev *dev, uint8_t slot, uint8_t pin)
>  {
> -	struct pci_dev *dev = NULL;
> -	uint8_t line, pin;
> -
> -	for_each_pci_dev(dev) {
> -		pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);
> -		if (pin) {
> -			dev->irq = pci_bus0_irq_routing[PCI_SLOT(dev->devfn)][pin - 1];
> -			pci_write_config_byte(dev, PCI_INTERRUPT_LINE, dev->irq);
> -		}
> -		pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &line);
> +	uint8_t line;
> +	int irq;
> +
> +	pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &pin);

Doesn't your common code always read PCI_INTERRUPT_PIN and pass it in, so
you wouldn't need to read it again here?

> +	if (pin) {
> +		irq = pci_bus0_irq_routing[PCI_SLOT(dev->devfn)][pin - 1];
> +		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
>  	}
> +	pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &line);
> +	return irq;
> +}
> +
> +int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge)
> +{
> +	bridge->swizzle_irq = NULL;
> +	bridge->map_irq = pcibios_map_irq;
> +	return 0;
>  }
>  
>  void pcibios_enable_irq(struct pci_dev *dev)
> diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
> index efa5d65..86657a7 100644
> --- a/arch/frv/mb93090-mb00/pci-vdk.c
> +++ b/arch/frv/mb93090-mb00/pci-vdk.c
> @@ -386,7 +386,6 @@ int __init pcibios_init(void)
>  	pci_scan_root_bus(NULL, 0, pci_root_ops, NULL, &resources);
>  
>  	pcibios_irq_init();
> -	pcibios_fixup_irqs();
>  	pcibios_resource_survey();
>  
>  	return 0;
> -- 
> 2.1.0
> 

  reply	other threads:[~2014-10-14 18:37 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-02  4:07 [PATCH V3] Delay allocation of PCI device IRQs from boot time until bus scan time to fix PCI hotplugging matt
2014-10-02  4:07 ` [PATCH 01/18] Added way to register deferred PCI IRQ assignment handlers matt
2014-10-02 10:33   ` Liviu Dudau
2014-10-14 23:25     ` Bjorn Helgaas
2014-10-14 17:15   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 02/18] Delayed x86 setup of PCI IRQs to bus scan time matt
2014-10-02 10:51   ` Liviu Dudau
2014-10-14 18:11   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 03/18] Delayed arm " matt
2014-10-14 18:14   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 04/18] Delayed powerpc " matt
2014-10-14 18:20   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 05/18] Delayed sh " matt
2014-10-14 18:25   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 06/18] Delayed alpha " matt
2014-10-14 18:27   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 07/18] Delayed cris " matt
2014-10-14 18:34   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 08/18] Delayed frv " matt
2014-10-14 18:37   ` Bjorn Helgaas [this message]
2014-10-02  4:07 ` [PATCH 09/18] Delayed m68k " matt
2014-10-14 18:38   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 10/18] Delayed microblaze " matt
2014-10-02  4:07 ` [PATCH 11/18] Delayed mips " matt
2014-10-02  4:07 ` [PATCH 12/18] Delayed mn10300 " matt
2014-10-14 18:46   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 13/18] Delayed sparc " matt
2014-10-14 18:51   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 14/18] Delayed tile " matt
2014-10-02  4:07 ` [PATCH 15/18] Delayed unicore32 " matt
2014-10-02  4:07 ` [PATCH 16/18] Disabled bus scan time PCI IRQ assignment on ia64 matt
2014-10-14 18:53   ` Bjorn Helgaas
2014-10-02  4:07 ` [PATCH 17/18] Disabled bus scan time PCI IRQ assignment on parisc matt
2014-10-02  4:07 ` [PATCH 18/18] Disabled bus scan time PCI IRQ assignment on s390 matt
2015-01-31 14:56 ` [PATCH V3] Delay allocation of PCI device IRQs from boot time until bus scan time to fix PCI hotplugging Bjorn Helgaas
  -- strict thread matches above, loose matches on Subject: below --
2014-10-02  3:50 matt
2014-10-02  3:50 ` [PATCH 08/18] Delayed frv setup of PCI IRQs to bus scan time matt

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=20141014183726.GH10125@google.com \
    --to=bhelgaas@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=matt@masarand.com \
    /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.