Pull x86 fixes from Peter Anvin: "Two very small changes: one fix for the vSMP Foundation platform, and one to help LLVM not choke on options it doesn't understand (although it probably should)" * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/vsmp: Fix irq routing x86: LLVMLinux: Wrap -mno-80387 with cc-option
Unified · Split
| @@ -83,7 +83,9 @@ else · 82 unmodified lines | |||
| 83 | KBUILD_CFLAGS += -m64 | 83 | KBUILD_CFLAGS += -m64 |
| 84 | 84 | ||
| 85 | # Don't autogenerate traditional x87, MMX or SSE instructions | 85 | # Don't autogenerate traditional x87, MMX or SSE instructions |
| 86 | KBUILD_CFLAGS += -mno-mmx -mno-sse -mno-80387 -mno-fp-ret-in-387 | 86 | KBUILD_CFLAGS += -mno-mmx -mno-sse |
| 87 | KBUILD_CFLAGS += $(call cc-option,-mno-80387) | ||
| 88 | KBUILD_CFLAGS += $(call cc-option,-mno-fp-ret-in-387) | ||
| 87 | 89 | ||
| 88 | # Use -mpreferred-stack-boundary=3 if supported. | 90 | # Use -mpreferred-stack-boundary=3 if supported. |
| 89 | KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3) | 91 | KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3) |
| @@ -26,6 +26,9 @@ · 25 unmodified lines | |||
| 26 | 26 | ||
| 27 | #define TOPOLOGY_REGISTER_OFFSET 0x10 | 27 | #define TOPOLOGY_REGISTER_OFFSET 0x10 |
| 28 | 28 | ||
| 29 | /* Flag below is initialized once during vSMP PCI initialization. */ | ||
| 30 | static int irq_routing_comply = 1; | ||
| 31 | |||
| 29 | #if defined CONFIG_PCI && defined CONFIG_PARAVIRT | 32 | #if defined CONFIG_PCI && defined CONFIG_PARAVIRT |
| 30 | /* | 33 | /* |
| 31 | * Interrupt control on vSMPowered systems: | 34 | * Interrupt control on vSMPowered systems: |
| @@ -101,6 +104,10 @@ static void __init set_vsmp_pv_ops(void) · 69 unmodified lines | |||
| 101 | #ifdef CONFIG_SMP | 104 | #ifdef CONFIG_SMP |
| 102 | if (cap & ctl & BIT(8)) { | 105 | if (cap & ctl & BIT(8)) { |
| 103 | ctl &= ~BIT(8); | 106 | ctl &= ~BIT(8); |
| 107 | |||
| 108 | /* Interrupt routing set to ignore */ | ||
| 109 | irq_routing_comply = 0; | ||
| 110 | |||
| 104 | #ifdef CONFIG_PROC_FS | 111 | #ifdef CONFIG_PROC_FS |
| 105 | /* Don't let users change irq affinity via procfs */ | 112 | /* Don't let users change irq affinity via procfs */ |
| 106 | no_irq_affinity = 1; | 113 | no_irq_affinity = 1; |
| @@ -218,7 +225,9 @@ static void vsmp_apic_post_init(void) · 111 unmodified lines | |||
| 218 | { | 225 | { |
| 219 | /* need to update phys_pkg_id */ | 226 | /* need to update phys_pkg_id */ |
| 220 | apic->phys_pkg_id = apicid_phys_pkg_id; | 227 | apic->phys_pkg_id = apicid_phys_pkg_id; |
| 221 | apic->vector_allocation_domain = fill_vector_allocation_domain; | 228 | |
| 229 | if (!irq_routing_comply) | ||
| 230 | apic->vector_allocation_domain = fill_vector_allocation_domain; | ||
| 222 | } | 231 | } |
| 223 | 232 | ||
| 224 | void __init vsmp_init(void) | 233 | void __init vsmp_init(void) |