summaryrefslogtreecommitdiff
path: root/arch/x86/kernel/vsmp_64.c
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2014-05-16 16:08:32 +0200
committerDaniel Lezcano <daniel.lezcano@linaro.org>2014-05-16 16:08:32 +0200
commit3f04e3d3eb77ac9df70619b9c87da71b0eeddc36 (patch)
treecf1cbadc390888d1910a81ffc40161f783363075 /arch/x86/kernel/vsmp_64.c
parent8cffcb0ca33381e07cee4ebe1301d0794054fc97 (diff)
parent2779ac167b1a1bf8153dca9f3a141c6148c6b89f (diff)
downloadlinux-3f04e3d3eb77ac9df70619b9c87da71b0eeddc36.tar.gz
linux-3f04e3d3eb77ac9df70619b9c87da71b0eeddc36.tar.bz2
linux-3f04e3d3eb77ac9df70619b9c87da71b0eeddc36.zip
Merge remote-tracking branch 'tip/timers/core/timers/core' into clockevents/3.16
Diffstat (limited to 'arch/x86/kernel/vsmp_64.c')
-rw-r--r--arch/x86/kernel/vsmp_64.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/x86/kernel/vsmp_64.c b/arch/x86/kernel/vsmp_64.c
index f6584a90aba3..5edc34b5b951 100644
--- a/arch/x86/kernel/vsmp_64.c
+++ b/arch/x86/kernel/vsmp_64.c
@@ -26,6 +26,9 @@
#define TOPOLOGY_REGISTER_OFFSET 0x10
+/* Flag below is initialized once during vSMP PCI initialization. */
+static int irq_routing_comply = 1;
+
#if defined CONFIG_PCI && defined CONFIG_PARAVIRT
/*
* Interrupt control on vSMPowered systems:
@@ -101,6 +104,10 @@ static void __init set_vsmp_pv_ops(void)
#ifdef CONFIG_SMP
if (cap & ctl & BIT(8)) {
ctl &= ~BIT(8);
+
+ /* Interrupt routing set to ignore */
+ irq_routing_comply = 0;
+
#ifdef CONFIG_PROC_FS
/* Don't let users change irq affinity via procfs */
no_irq_affinity = 1;
@@ -218,7 +225,9 @@ static void vsmp_apic_post_init(void)
{
/* need to update phys_pkg_id */
apic->phys_pkg_id = apicid_phys_pkg_id;
- apic->vector_allocation_domain = fill_vector_allocation_domain;
+
+ if (!irq_routing_comply)
+ apic->vector_allocation_domain = fill_vector_allocation_domain;
}
void __init vsmp_init(void)