All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Derrick <jonathan.derrick@intel.com>
To: helgaas@kernel.org
Cc: Jon Derrick <jonathan.derrick@intel.com>,
	keith.busch@intel.com, linux-pci@vger.kernel.org
Subject: [PATCH] pci: Added flag to pci_host_bridge to hint not to use acpi
Date: Wed, 23 Mar 2016 16:01:58 -0600	[thread overview]
Message-ID: <1458770518-10203-1-git-send-email-jonathan.derrick@intel.com> (raw)

This patch adds a hint, no_acpi, to the pci_host_bridge struct which
informs the hotplug driver to not try and release the host bridge from
acpi.

The VMD driver creates a root port which does not have an acpi entry.
This patch will allow the hotplug driver to bypass acpi release when
enumerating the VMD root port as a hotplug slot.

Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
---
 arch/x86/pci/vmd.c              | 4 ++++
 drivers/pci/pcie/portdrv_acpi.c | 5 +++++
 include/linux/pci.h             | 1 +
 3 files changed, 10 insertions(+)

diff --git a/arch/x86/pci/vmd.c b/arch/x86/pci/vmd.c
index 7792aba..a196be3 100644
--- a/arch/x86/pci/vmd.c
+++ b/arch/x86/pci/vmd.c
@@ -531,6 +531,7 @@ static int vmd_find_free_domain(void)
 static int vmd_enable_domain(struct vmd_dev *vmd)
 {
 	struct pci_sysdata *sd = &vmd->sysdata;
+	struct pci_host_bridge *host_bridge;
 	struct resource *res;
 	u32 upper_bits;
 	unsigned long flags;
@@ -609,6 +610,9 @@ static int vmd_enable_domain(struct vmd_dev *vmd)
 		return -ENODEV;
 	}
 
+	host_bridge = to_pci_host_bridge(vmd->bus->bridge);
+	host_bridge->no_acpi = true;
+
 	vmd_attach_resources(vmd);
 	vmd_setup_dma_ops(vmd);
 	dev_set_msi_domain(&vmd->bus->dev, vmd->irq_domain);
diff --git a/drivers/pci/pcie/portdrv_acpi.c b/drivers/pci/pcie/portdrv_acpi.c
index b4d2894..0e6fa69 100644
--- a/drivers/pci/pcie/portdrv_acpi.c
+++ b/drivers/pci/pcie/portdrv_acpi.c
@@ -35,12 +35,17 @@
 int pcie_port_acpi_setup(struct pci_dev *port, int *srv_mask)
 {
 	struct acpi_pci_root *root;
+	struct pci_host_bridge *host_bridge;
 	acpi_handle handle;
 	u32 flags;
 
 	if (acpi_pci_disabled)
 		return 0;
 
+	host_bridge = pci_find_host_bridge(port->bus);
+	if (host_bridge && host_bridge->no_acpi)
+		return 0;
+
 	handle = acpi_find_root_bridge_handle(port);
 	if (!handle)
 		return -EINVAL;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 15f466e..a6958e9b 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -407,6 +407,7 @@ struct pci_host_bridge {
 	void (*release_fn)(struct pci_host_bridge *);
 	void *release_data;
 	unsigned int ignore_reset_delay:1;	/* for entire hierarchy */
+	unsigned int no_acpi:1;			/* bypasses acpi release */
 	/* Resource alignment requirements */
 	resource_size_t (*align_resource)(struct pci_dev *dev,
 			const struct resource *res,
-- 
1.8.3.1


             reply	other threads:[~2016-03-23 22:03 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-23 22:01 Jon Derrick [this message]
2016-03-24 16:42 ` [PATCH] pci: Added flag to pci_host_bridge to hint not to use acpi Keith Busch
2016-04-07 17:42   ` Bjorn Helgaas
2016-04-07 20:12     ` Jon Derrick
2016-04-07 21:34       ` Bjorn Helgaas

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=1458770518-10203-1-git-send-email-jonathan.derrick@intel.com \
    --to=jonathan.derrick@intel.com \
    --cc=helgaas@kernel.org \
    --cc=keith.busch@intel.com \
    --cc=linux-pci@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.