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 | 83 | KBUILD_CFLAGS += -m64 |
| 84 | 84 | |
| 85 | 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 | 90 | # Use -mpreferred-stack-boundary=3 if supported. |
| 89 | 91 | KBUILD_CFLAGS += $(call cc-option,-mpreferred-stack-boundary=3) |
| @@ -26,6 +26,9 @@ · 25 unmodified lines | ||
| 26 | 26 | |
| 27 | 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 | 32 | #if defined CONFIG_PCI && defined CONFIG_PARAVIRT |
| 30 | 33 | /* |
| 31 | 34 | * Interrupt control on vSMPowered systems: |
| @@ -101,6 +104,10 @@ static void __init set_vsmp_pv_ops(void) · 69 unmodified lines | ||
| 101 | 104 | #ifdef CONFIG_SMP |
| 102 | 105 | if (cap & ctl & BIT(8)) { |
| 103 | 106 | ctl &= ~BIT(8); |
| 107 | + | |
| 108 | + /* Interrupt routing set to ignore */ | |
| 109 | + irq_routing_comply = 0; | |
| 110 | + | |
| 104 | 111 | #ifdef CONFIG_PROC_FS |
| 105 | 112 | /* Don't let users change irq affinity via procfs */ |
| 106 | 113 | no_irq_affinity = 1; |
| @@ -218,7 +225,9 @@ static void vsmp_apic_post_init(void) · 111 unmodified lines | ||
| 218 | 225 | { |
| 219 | 226 | /* need to update phys_pkg_id */ |
| 220 | 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 | 233 | void __init vsmp_init(void) |