All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Jiang Liu <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: jmmahler@gmail.com, jiang.liu@linux.intel.com,
	linux-kernel@vger.kernel.org, joe.lawrence@stratus.com,
	bp@alien8.de, hpa@zytor.com, tglx@linutronix.de,
	linux@roeck-us.net, mingo@kernel.org
Subject: [tip:x86/urgent] x86/irq: Do not use apic_chip_data.old_domain as temporary buffer
Date: Sat, 16 Jan 2016 13:16:56 -0800	[thread overview]
Message-ID: <tip-8a580f70f6936ec095da217018cdeeb5835c0207@git.kernel.org> (raw)
In-Reply-To: <1450880014-11741-1-git-send-email-jiang.liu@linux.intel.com>

Commit-ID:  8a580f70f6936ec095da217018cdeeb5835c0207
Gitweb:     http://git.kernel.org/tip/8a580f70f6936ec095da217018cdeeb5835c0207
Author:     Jiang Liu <jiang.liu@linux.intel.com>
AuthorDate: Thu, 31 Dec 2015 16:30:46 +0000
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 15 Jan 2016 13:43:59 +0100

x86/irq: Do not use apic_chip_data.old_domain as temporary buffer

Function __assign_irq_vector() makes use of apic_chip_data.old_domain as a
temporary buffer, which is in the way of using apic_chip_data.old_domain for
synchronizing the vector cleanup with the vector assignement code.

Use a proper temporary cpumask for this.

[ tglx: Renamed the mask to searched_cpumask for clarity ]

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Tested-by: Borislav Petkov <bp@alien8.de>
Tested-by: Joe Lawrence <joe.lawrence@stratus.com>
Cc: Jeremiah Mahler <jmmahler@gmail.com>
Cc: andy.shevchenko@gmail.com
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: stable@vger.kernel.org #4.3+
Link: http://lkml.kernel.org/r/1450880014-11741-1-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/x86/kernel/apic/vector.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
index cf1e325..19082cf 100644
--- a/arch/x86/kernel/apic/vector.c
+++ b/arch/x86/kernel/apic/vector.c
@@ -31,7 +31,7 @@ struct apic_chip_data {
 struct irq_domain *x86_vector_domain;
 EXPORT_SYMBOL_GPL(x86_vector_domain);
 static DEFINE_RAW_SPINLOCK(vector_lock);
-static cpumask_var_t vector_cpumask;
+static cpumask_var_t vector_cpumask, searched_cpumask;
 static struct irq_chip lapic_controller;
 #ifdef	CONFIG_X86_IO_APIC
 static struct apic_chip_data *legacy_irq_data[NR_IRQS_LEGACY];
@@ -126,6 +126,7 @@ static int __assign_irq_vector(int irq, struct apic_chip_data *d,
 	/* Only try and allocate irqs on cpus that are present */
 	err = -ENOSPC;
 	cpumask_clear(d->old_domain);
+	cpumask_clear(searched_cpumask);
 	cpu = cpumask_first_and(mask, cpu_online_mask);
 	while (cpu < nr_cpu_ids) {
 		int new_cpu, vector, offset;
@@ -159,9 +160,9 @@ next:
 		}
 
 		if (unlikely(current_vector == vector)) {
-			cpumask_or(d->old_domain, d->old_domain,
+			cpumask_or(searched_cpumask, searched_cpumask,
 				   vector_cpumask);
-			cpumask_andnot(vector_cpumask, mask, d->old_domain);
+			cpumask_andnot(vector_cpumask, mask, searched_cpumask);
 			cpu = cpumask_first_and(vector_cpumask,
 						cpu_online_mask);
 			continue;
@@ -406,6 +407,7 @@ int __init arch_early_irq_init(void)
 	arch_init_htirq_domain(x86_vector_domain);
 
 	BUG_ON(!alloc_cpumask_var(&vector_cpumask, GFP_KERNEL));
+	BUG_ON(!alloc_cpumask_var(&searched_cpumask, GFP_KERNEL));
 
 	return arch_early_ioapic_init();
 }

      parent reply	other threads:[~2016-01-16 21:18 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-11  7:49 [x86/irq] 4c24cee6b2: IP-Config: Auto-configuration of network failed kernel test robot
2015-12-11  7:49 ` [lkp] " kernel test robot
2015-12-14  6:38 ` Jiang Liu
2015-12-14  6:38   ` [lkp] " Jiang Liu
2015-12-14  6:54   ` Huang, Ying
2015-12-14  6:54     ` [LKP] [lkp] " Huang, Ying
2015-12-14  9:54     ` Borislav Petkov
2015-12-14  9:54       ` [LKP] [lkp] " Borislav Petkov
2015-12-15  7:55       ` Jiang Liu
2015-12-15  7:55         ` [LKP] [lkp] " Jiang Liu
2015-12-15 10:08         ` Borislav Petkov
2015-12-15 10:08           ` [LKP] [lkp] " Borislav Petkov
2015-12-19 20:31         ` Thomas Gleixner
2015-12-19 20:31           ` [LKP] [lkp] " Thomas Gleixner
2015-12-23 14:13           ` [Bugfix v2 1/5] x86/irq: Do not reuse struct apic_chip_data.old_domain as temporary buffer Jiang Liu
2015-12-23 14:13             ` [Bugfix v2 2/5] x86/irq: Enhance __assign_irq_vector() to rollback in case of failure Jiang Liu
2015-12-30 18:52               ` Thomas Gleixner
2015-12-23 14:13             ` [Bugfix v2 3/5] x86/irq: Fix a race window in x86_vector_free_irqs() Jiang Liu
2015-12-29 13:39               ` Thomas Gleixner
2016-01-16 21:16               ` [tip:x86/urgent] x86/irq: Fix a race " tip-bot for Jiang Liu
2015-12-23 14:13             ` [Bugfix v2 4/5] x86/irq: Fix a race condition between vector assigning and cleanup Jiang Liu
2015-12-23 18:41               ` Borislav Petkov
2015-12-30 17:25               ` Thomas Gleixner
2015-12-30 22:50               ` Thomas Gleixner
2015-12-23 14:13             ` [Bugfix v2 5/5] x86/irq: Trivial cleanups for x86 vector allocation code Jiang Liu
2015-12-23 19:10             ` [Bugfix v2 1/5] x86/irq: Do not reuse struct apic_chip_data.old_domain as temporary buffer Borislav Petkov
2015-12-24  5:15             ` Jeremiah Mahler
2015-12-28  8:24               ` Jiang Liu
2015-12-29  3:26                 ` Jeremiah Mahler
2015-12-24 14:34             ` Joe Lawrence
2016-01-16 21:16             ` tip-bot for Jiang Liu [this message]

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-8a580f70f6936ec095da217018cdeeb5835c0207@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=jiang.liu@linux.intel.com \
    --cc=jmmahler@gmail.com \
    --cc=joe.lawrence@stratus.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mingo@kernel.org \
    --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 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.