linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Thomas Gleixner <tglx@linutronix.de>, Ingo Molnar <mingo@elte.hu>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH 13/13] PCI: Disable mem in the ioapic removing path
Date: Thu, 23 Feb 2012 19:48:59 -0800	[thread overview]
Message-ID: <1330055339-11662-14-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1330055339-11662-1-git-send-email-yinghai@kernel.org>

For physical hot plug should be ok, but for remove/rescan path will need us
to disable that.

otherwise rescan mmio resource for pci ioapic device will not be sized and
allocated, aka skiped.
For ioapic_probe:pci_enable_device will not enable the device correctly, and
will bail out early.

So we can just disable mmio for all removing case. that will hurt real hotplug
path.

Signed-off-by: <yinghai@kernel.org>
Cc: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/pci/ioapic.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/drivers/pci/ioapic.c b/drivers/pci/ioapic.c
index 4183a5c..0b2c210 100644
--- a/drivers/pci/ioapic.c
+++ b/drivers/pci/ioapic.c
@@ -88,6 +88,17 @@ exit_free:
 	return -ENODEV;
 }
 
+static void pci_disable_device_mem(struct pci_dev *dev)
+{
+	u16 pci_command;
+
+	pci_read_config_word(dev, PCI_COMMAND, &pci_command);
+	if (pci_command & PCI_COMMAND_MEMORY) {
+		pci_command &= ~PCI_COMMAND_MEMORY;
+		pci_write_config_word(dev, PCI_COMMAND, pci_command);
+	}
+}
+
 static void __devexit ioapic_remove(struct pci_dev *dev)
 {
 	struct ioapic *ioapic = pci_get_drvdata(dev);
@@ -95,6 +106,8 @@ static void __devexit ioapic_remove(struct pci_dev *dev)
 	acpi_unregister_ioapic(ioapic->handle, ioapic->gsi_base);
 	pci_release_region(dev, 0);
 	pci_disable_device(dev);
+	/* need to disable it, otherwise remove/rescan will not work */
+	pci_disable_device_mem(dev);
 	kfree(ioapic);
 }
 
-- 
1.7.7


  parent reply	other threads:[~2012-02-24  3:49 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-24  3:48 [PATCH 00/13] x86, irq: support ioapic device hotplug for x86 Yinghai Lu
2012-02-24  3:48 ` [PATCH 01/13] x86, irq: Convert irq_2_pin list to generic list Yinghai Lu
2012-02-24  3:48 ` [PATCH 02/13] genirq: Split __irq_reserve_irqs from irq_alloc_descs Yinghai Lu
2012-02-24  3:48 ` [PATCH 03/13] x86, irq: Add realloc_irq_and_cfg_at() Yinghai Lu
2012-02-24  3:48 ` [PATCH 04/13] x86, irq: pre-reserve irq range that are used by ioapic Yinghai Lu
2012-02-24  3:48 ` [PATCH 05/13] x86, irq: add ioapic_gsi_to_irq Yinghai Lu
2012-02-24  3:48 ` [PATCH 06/13] genirq: bail out early in free_desc() Yinghai Lu
2012-02-24  3:48 ` [PATCH 07/13] x86, irq: more strict check for register ioapic Yinghai Lu
2012-02-24  3:48 ` [PATCH 08/13] x86, irq: Make mp_register_ioapic could handle hotadd ioapic Yinghai Lu
2012-02-24  3:48 ` [PATCH 09/13] x86, irq: Add mp_unregister_ioapic could handle hotremove ioapic Yinghai Lu
2012-02-24  3:48 ` [PATCH 10/13] x86, irq: Make ioapics loop code skip blank slot Yinghai Lu
2012-02-24  3:48 ` [PATCH 11/13] x86, acpi, irq: Enable pci device type ioapic hotplug Yinghai Lu
2012-02-24  3:48 ` [PATCH 12/13] PCI: Make sure hotplug ioapic driver get loaded early Yinghai Lu
2012-02-24  3:48 ` Yinghai Lu [this message]
2012-02-24 16:51 ` [PATCH 00/13] x86, irq: support ioapic device hotplug for x86 Jesse Barnes

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=1330055339-11662-14-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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).