From: <suravee.suthikulpanit@amd.com>
To: <bhelgaas@google.com>
Cc: <liviu.dudau@arm.com>, <lorenzo.pieralisi@arm.com>,
<will.deacon@arm.com>, <linux-pci@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-kernel@vger.kernel.org>,
Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Subject: [PATCH 1/2] PCI: Add new pci_ops for setting MSI parent for PCI bus
Date: Mon, 10 Nov 2014 13:24:39 -0600 [thread overview]
Message-ID: <1415647480-3320-2-git-send-email-suravee.suthikulpanit@amd.com> (raw)
In-Reply-To: <1415647480-3320-1-git-send-email-suravee.suthikulpanit@amd.com>
From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
In the pci_scan_root_bus, pci_bus is created and passed down to:
pci_scan_child_bus
pci_scan_bridge
pci_add_new_bus
pci_alloc_child_bus
In pci_alloc_child_bus, the parent's msi_chip is propagated to child,
and the referenced by PCI devices when calling arch_setup_msi_irq().
However, in the current implementation of pci_scan_root_bus, the msi_chip
of the root_bus is not set before handing off to pci_scan_child_bus.
This patch proposes a new callback function in the struct pci_ops
to allow host controller to provide a call back for specifying
msi_chip to be used.
Cc: Bjorn Helgass <bhelgaas@google.com>
Cc: Liviu Dudau <liviu.dudau@arm.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
---
drivers/pci/probe.c | 3 +++
include/linux/pci.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 5ed9930..cf7114d 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2081,6 +2081,9 @@ struct pci_bus *pci_scan_root_bus(struct device *parent, int bus,
if (!b)
return NULL;
+ if (ops->set_msi_parent)
+ ops->set_msi_parent(b);
+
if (!found) {
dev_info(&b->dev,
"No busn resource found for root bus, will use [bus %02x-ff]\n",
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 5be8db4..6093544 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -560,6 +560,7 @@ static inline int pcibios_err_to_errno(int err)
struct pci_ops {
int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val);
int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);
+ int (*set_msi_parent)(struct pci_bus *bus);
};
/*
--
1.9.3
next prev parent reply other threads:[~2014-11-10 19:25 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-10 19:24 [PATCH 0/2] PCI: generic: Assiging msi-controller to PCI hostbridge suravee.suthikulpanit
2014-11-10 19:24 ` suravee.suthikulpanit [this message]
2014-11-10 19:24 ` [PATCH 2/2] PCI: generic: Add set_msi_parent callback suravee.suthikulpanit
2014-11-11 11:24 ` Will Deacon
2014-11-11 11:52 ` Liviu Dudau
2014-11-13 15:22 ` Lorenzo Pieralisi
2014-11-13 18:32 ` Liviu Dudau
2014-11-13 23:19 ` Jiang Liu
2014-11-11 15:33 ` Suravee Suthikulpanit
2014-11-13 15:32 ` Lorenzo Pieralisi
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=1415647480-3320-2-git-send-email-suravee.suthikulpanit@amd.com \
--to=suravee.suthikulpanit@amd.com \
--cc=bhelgaas@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=lorenzo.pieralisi@arm.com \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®