From: tip-bot for Jiang Liu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: konrad.wilk@oracle.com, mingo@kernel.org, bp@alien8.de,
tony.luck@intel.com, len.brown@intel.com,
jiang.liu@linux.intel.com, joro@8bytes.org, yinghai@kernel.org,
pavel@ucw.cz, benh@kernel.crashing.org, hpa@zytor.com,
tglx@linutronix.de, bhelgaas@google.com,
linux-kernel@vger.kernel.org, rjw@rjwysocki.net,
rdunlap@infradead.org, gregkh@linuxfoundation.org
Subject: [tip:x86/apic] x86, irq, ACPI: Introduce a mutex to protect IOAPIC operations from hotplug
Date: Fri, 19 Dec 2014 06:04:37 -0800 [thread overview]
Message-ID: <tip-5da2fd26193433006255d534b3a01eae37e58428@git.kernel.org> (raw)
In-Reply-To: <1414908273-7552-15-git-send-email-jiang.liu@linux.intel.com>
Commit-ID: 5da2fd26193433006255d534b3a01eae37e58428
Gitweb: http://git.kernel.org/tip/5da2fd26193433006255d534b3a01eae37e58428
Author: Jiang Liu <jiang.liu@linux.intel.com>
AuthorDate: Sun, 2 Nov 2014 14:04:29 +0800
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Tue, 16 Dec 2014 14:08:15 +0100
x86, irq, ACPI: Introduce a mutex to protect IOAPIC operations from hotplug
We are going to support ACPI based IOAPIC hotplug, so introduce a mutex
to protect IOAPIC data structures from IOAPIC hotplug. We choose to
serialize in ACPI instead of in the IOAPIC core because:
1) currently we only plan to support ACPI based IOAPIC hotplug
2) it's much more cleaner and easier
3) It does't affect IOAPIC discovered by devicetree, SFI and mpparse.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Randy Dunlap <rdunlap@infradead.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Len Brown <len.brown@intel.com>
Cc: Pavel Machek <pavel@ucw.cz>
Link: http://lkml.kernel.org/r/1414908273-7552-15-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/x86/kernel/acpi/boot.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 6ddeba31..2d76f02 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -76,6 +76,19 @@ int acpi_fix_pin2_polarity __initdata;
static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
#endif
+/*
+ * Locks related to IOAPIC hotplug
+ * Hotplug side:
+ * ->device_hotplug_lock
+ * ->acpi_ioapic_lock
+ * ->ioapic_lock
+ * Interrupt mapping side:
+ * ->acpi_ioapic_lock
+ * ->ioapic_mutex
+ * ->ioapic_lock
+ */
+static DEFINE_MUTEX(acpi_ioapic_lock);
+
/* --------------------------------------------------------------------------
Boot-time Configuration
-------------------------------------------------------------------------- */
@@ -609,8 +622,10 @@ int acpi_gsi_to_irq(u32 gsi, unsigned int *irqp)
if (acpi_irq_model == ACPI_IRQ_MODEL_PIC) {
*irqp = gsi;
} else {
+ mutex_lock(&acpi_ioapic_lock);
irq = mp_map_gsi_to_irq(gsi,
IOAPIC_MAP_ALLOC | IOAPIC_MAP_CHECK);
+ mutex_unlock(&acpi_ioapic_lock);
if (irq < 0)
return -1;
*irqp = irq;
@@ -650,7 +665,9 @@ static int acpi_register_gsi_ioapic(struct device *dev, u32 gsi,
int irq = gsi;
#ifdef CONFIG_X86_IO_APIC
+ mutex_lock(&acpi_ioapic_lock);
irq = mp_register_gsi(dev, gsi, trigger, polarity);
+ mutex_unlock(&acpi_ioapic_lock);
#endif
return irq;
@@ -659,7 +676,9 @@ static int acpi_register_gsi_ioapic(struct device *dev, u32 gsi,
static void acpi_unregister_gsi_ioapic(u32 gsi)
{
#ifdef CONFIG_X86_IO_APIC
+ mutex_lock(&acpi_ioapic_lock);
mp_unregister_gsi(gsi);
+ mutex_unlock(&acpi_ioapic_lock);
#endif
}
@@ -1187,7 +1206,9 @@ static void __init acpi_process_madt(void)
/*
* Parse MADT IO-APIC entries
*/
+ mutex_lock(&acpi_ioapic_lock);
error = acpi_parse_madt_ioapic_entries();
+ mutex_unlock(&acpi_ioapic_lock);
if (!error) {
acpi_set_irq_model_ioapic();
next prev parent reply other threads:[~2014-12-19 14:05 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-02 6:04 [Patch v8 00/18] Enable support of IOAPIC hotplug on x86 platforms Jiang Liu
2014-11-02 6:04 ` [Patch v8 01/18] x86: ACPI: Do not translate GSI number if IOAPIC is disabled Jiang Liu
2014-11-02 6:04 ` [Patch v8 02/18] x86, intel-mid: Create IRQs for APB timers and RTC timers Jiang Liu
2014-11-02 6:04 ` [Patch v8 03/18] x86, irq, ACPI: Return IRQ instead of GSI in mp_register_gsi() Jiang Liu
2014-11-02 6:04 ` [Patch v8 04/18] x86, PCI, ACPI: Kill private function resource_to_addr() in arch/x86/pci/acpi.c Jiang Liu
2014-11-02 6:04 ` [Patch v8 05/18] ACPI: Correct return value of acpi_dev_resource_address_space() Jiang Liu
2014-11-02 6:04 ` [Patch v8 06/18] ACPI: Fix minor syntax issues in processor_core.c Jiang Liu
2014-11-02 6:04 ` [Patch v8 07/18] ACPI: Add interfaces to parse IOAPIC ID for IOAPIC hotplug Jiang Liu
2014-11-02 6:04 ` [Patch v8 08/18] PCI: Remove PCI ioapic driver Jiang Liu
2014-11-02 6:04 ` [Patch v8 09/18] x86, irq: Split out alloc_ioapic_save_registers() Jiang Liu
2014-11-02 6:04 ` [Patch v8 10/18] x86, irq: Prefer assigned ID in APIC ID register for x86_64 Jiang Liu
2014-11-02 6:04 ` [Patch v8 11/18] x86, irq: Remove __init marker for functions will be used by IOAPIC hotplug Jiang Liu
2014-11-02 6:04 ` [Patch v8 12/18] x86, irq: Keep balance of IOAPIC pin reference count Jiang Liu
2014-11-02 6:04 ` [Patch v8 13/18] x86, irq: Refine mp_register_ioapic() to prepare for IOAPIC hotplug Jiang Liu
2014-11-02 6:04 ` [Patch v8 14/18] x86, irq, ACPI: Introduce a rwsem to protect IOAPIC operations from hotplug Jiang Liu
2014-11-03 11:00 ` [tip:x86/apic] x86, irq, ACPI: Introduce a mutex " tip-bot for Jiang Liu
2014-12-19 14:04 ` tip-bot for Jiang Liu [this message]
2014-11-02 6:04 ` [Patch v8 15/18] x86, irq, ACPI: Implement interface to support ACPI based IOAPIC hot-addition Jiang Liu
2014-11-03 9:41 ` Thomas Gleixner
2014-11-03 9:51 ` Jiang Liu
2014-11-02 6:04 ` [Patch v8 16/18] x86, irq, ACPI: Implement interfaces to support ACPI based IOAPIC hot-removal Jiang Liu
2014-11-02 6:04 ` [Patch v8 17/18] x86, irq: Introduce helper to check whether an IOAPIC has been registered Jiang Liu
2014-11-02 6:04 ` [Patch v8 18/18] x86, irq, ACPI: Implement ACPI driver to support IOAPIC hotplug Jiang Liu
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=tip-5da2fd26193433006255d534b3a01eae37e58428@git.kernel.org \
--to=tipbot@zytor.com \
--cc=benh@kernel.crashing.org \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=jiang.liu@linux.intel.com \
--cc=joro@8bytes.org \
--cc=konrad.wilk@oracle.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=pavel@ucw.cz \
--cc=rdunlap@infradead.org \
--cc=rjw@rjwysocki.net \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=yinghai@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.