All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Yingliang <yangyingliang@huawei.com>
To: <linux-arm-kernel@lists.infradead.org>, <linux-kernel@vger.kernel.org>
Cc: Yang Yingliang <yangyingliang@huawei.com>,
	Jiang Liu <jiang.liu@linux.intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Marc Zyngier" <marc.zyngier@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	"Will Deacon" <will.deacon@arm.com>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Hanjun Guo <hanjun.guo@linaro.org>
Subject: [RFC PATCH v3 0/3] arm/arm64: fix a migrating irq bug when hotplug cpu
Date: Wed, 16 Sep 2015 11:58:24 +0800	[thread overview]
Message-ID: <1442375907-11496-1-git-send-email-yangyingliang@huawei.com> (raw)

----
Changes in v3:
 - introduce config GENERIC_IRQ_MIGRATION for compiling migration.c
 - rename migrate_irqs in arch/ia64/kernel/irq.c to avoid compiling error

Changes in v2:
 - use the exiting helper to set IRQD_MOVE_PCNTXT flag
 - use for_each_active_irq() instead of for_each_irq_desc()
 - add some warn messages when affinity is null or do set affinity failed
----

Hi All,

There is a bug:

When cpu is disabled, all irqs will be migratged to another cpu.
In some cases, a new affinity is different, it needed to be coppied
to irq's affinity. But if the type of irq is LPI, it's affinity will
not be coppied because of irq_set_affinity's return value.



As Marc and Will suggested, I refactor the arm/arm64 migrating interrupts
code and fix the migrating irq bug while cpu is offline.

I'm trying let the core code do the migrating interrupts matter. kernel/irq/migration.c
depends on CONFIG_GENERIC_PENDING_IRQ, so I introduce config GENERIC_IRQ_MIGRATION for
compiling migration.c. On ia64, there is a migrate_irqs() in arch/ia64/kernel/irq.c,
rename it to avoid compiling error.

With the above preparation, move the migrating interrupts code into kernel/irq/migration.c
and fix the bug by using irq_do_set_affinity().

Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Hanjun Guo <hanjun.guo@linaro.org>

Yang Yingliang (3):
  genirq: introduce CONFIG_GENERIC_IRQ_MIGRATION
  ia64: rename migrate_irqs() to avoid compiling error
  arm/arm64: fix a migrating irq bug when hotplug cpu

 arch/arc/Kconfig             |  1 +
 arch/arm/Kconfig             |  1 +
 arch/arm/include/asm/irq.h   |  1 -
 arch/arm/kernel/irq.c        | 62 ----------------------------------------
 arch/arm64/Kconfig           |  1 +
 arch/arm64/include/asm/irq.h |  1 -
 arch/arm64/kernel/irq.c      | 62 ----------------------------------------
 arch/hexagon/Kconfig         |  1 +
 arch/ia64/Kconfig            |  1 +
 arch/ia64/kernel/irq.c       |  4 +--
 arch/tile/Kconfig            |  1 +
 arch/x86/Kconfig             |  1 +
 include/linux/irq.h          |  4 +++
 kernel/irq/Kconfig           |  4 +++
 kernel/irq/Makefile          |  2 +-
 kernel/irq/migration.c       | 68 ++++++++++++++++++++++++++++++++++++++++++++
 16 files changed, 86 insertions(+), 129 deletions(-)

-- 
2.5.0



WARNING: multiple messages have this Message-ID (diff)
From: yangyingliang@huawei.com (Yang Yingliang)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v3 0/3] arm/arm64: fix a migrating irq bug when hotplug cpu
Date: Wed, 16 Sep 2015 11:58:24 +0800	[thread overview]
Message-ID: <1442375907-11496-1-git-send-email-yangyingliang@huawei.com> (raw)

----
Changes in v3:
 - introduce config GENERIC_IRQ_MIGRATION for compiling migration.c
 - rename migrate_irqs in arch/ia64/kernel/irq.c to avoid compiling error

Changes in v2:
 - use the exiting helper to set IRQD_MOVE_PCNTXT flag
 - use for_each_active_irq() instead of for_each_irq_desc()
 - add some warn messages when affinity is null or do set affinity failed
----

Hi All,

There is a bug:

When cpu is disabled, all irqs will be migratged to another cpu.
In some cases, a new affinity is different, it needed to be coppied
to irq's affinity. But if the type of irq is LPI, it's affinity will
not be coppied because of irq_set_affinity's return value.



As Marc and Will suggested, I refactor the arm/arm64 migrating interrupts
code and fix the migrating irq bug while cpu is offline.

I'm trying let the core code do the migrating interrupts matter. kernel/irq/migration.c
depends on CONFIG_GENERIC_PENDING_IRQ, so I introduce config GENERIC_IRQ_MIGRATION for
compiling migration.c. On ia64, there is a migrate_irqs() in arch/ia64/kernel/irq.c,
rename it to avoid compiling error.

With the above preparation, move the migrating interrupts code into kernel/irq/migration.c
and fix the bug by using irq_do_set_affinity().

Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Hanjun Guo <hanjun.guo@linaro.org>

Yang Yingliang (3):
  genirq: introduce CONFIG_GENERIC_IRQ_MIGRATION
  ia64: rename migrate_irqs() to avoid compiling error
  arm/arm64: fix a migrating irq bug when hotplug cpu

 arch/arc/Kconfig             |  1 +
 arch/arm/Kconfig             |  1 +
 arch/arm/include/asm/irq.h   |  1 -
 arch/arm/kernel/irq.c        | 62 ----------------------------------------
 arch/arm64/Kconfig           |  1 +
 arch/arm64/include/asm/irq.h |  1 -
 arch/arm64/kernel/irq.c      | 62 ----------------------------------------
 arch/hexagon/Kconfig         |  1 +
 arch/ia64/Kconfig            |  1 +
 arch/ia64/kernel/irq.c       |  4 +--
 arch/tile/Kconfig            |  1 +
 arch/x86/Kconfig             |  1 +
 include/linux/irq.h          |  4 +++
 kernel/irq/Kconfig           |  4 +++
 kernel/irq/Makefile          |  2 +-
 kernel/irq/migration.c       | 68 ++++++++++++++++++++++++++++++++++++++++++++
 16 files changed, 86 insertions(+), 129 deletions(-)

-- 
2.5.0

             reply	other threads:[~2015-09-16  4:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-16  3:58 Yang Yingliang [this message]
2015-09-16  3:58 ` [RFC PATCH v3 0/3] arm/arm64: fix a migrating irq bug when hotplug cpu Yang Yingliang
2015-09-16  3:58 ` [RFC PATCH v3 1/3] genirq: introduce CONFIG_GENERIC_IRQ_MIGRATION Yang Yingliang
2015-09-16  3:58   ` Yang Yingliang
2015-09-16  8:13   ` Thomas Gleixner
2015-09-16  8:13     ` Thomas Gleixner
2015-09-16 11:07     ` Yang Yingliang
2015-09-16 11:07       ` Yang Yingliang
2015-09-16  3:58 ` [RFC PATCH v3 2/3] ia64: rename migrate_irqs() to avoid compiling error Yang Yingliang
2015-09-16  3:58   ` Yang Yingliang
2015-09-16  8:21   ` Thomas Gleixner
2015-09-16  8:21     ` Thomas Gleixner
2015-09-16 11:13     ` Yang Yingliang
2015-09-16 11:13       ` Yang Yingliang
2015-09-16  3:58 ` [RFC PATCH v3 3/3] arm/arm64: fix a migrating irq bug when hotplug cpu Yang Yingliang
2015-09-16  3:58   ` Yang Yingliang
2015-09-16  8:21   ` Thomas Gleixner
2015-09-16  8:21     ` Thomas Gleixner
2015-09-16 11:15     ` Yang Yingliang
2015-09-16 11:15       ` Yang Yingliang

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=1442375907-11496-1-git-send-email-yangyingliang@huawei.com \
    --to=yangyingliang@huawei.com \
    --cc=hanjun.guo@linaro.org \
    --cc=jiang.liu@linux.intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=marc.zyngier@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=tglx@linutronix.de \
    --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 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.