irqchip/gic: Make locking a BL_SWITCHER only feature
authorMarc Zyngier <marc.zyngier@arm.com>
Mon, 27 Jun 2016 17:11:43 +0000 (18:11 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 12 Sep 2016 18:46:19 +0000 (19:46 +0100)
commit04c8b0f82c7d5a9a1c296eef914ae3bb820bcb85
tree0f0d6f5a723d59c97f0c28674c0b486ead7a544e
parent9395452b4aab7bc2475ef8935b4a4fb99d778d70
irqchip/gic: Make locking a BL_SWITCHER only feature

The BL switcher code manipulates the logical/physical CPU mapping,
forcing a lock to be taken on the IPI path. With an IPI heavy load,
this single lock becomes contended.

But when CONFIG_BL_SWITCHER is not enabled, there is no reason
to take this lock at all since the CPU mapping is immutable.

This patch allows the lock to be entierely removed when BL_SWITCHER
is not enabled (which is the case in most configurations), leading
to a small improvement of "perf bench sched pipe" (measured on
an 8 core AMD Seattle system):

Before: 101370 ops/sec
After:  103680 ops/sec

Take this opportunity to remove a useless lock being taken when
handling an interrupt on a secondary GIC.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
drivers/irqchip/irq-gic.c