forked fromtorvalds/linux
- Notifications
You must be signed in to change notification settings - Fork1
Commita31e58e
committed
x86/apic: Switch all APICs to Fixed delivery mode
Some of the APIC incarnations are operating in lowest priority deliverymode. This worked as long as the vector management code allocated the samevector on all possible CPUs for each interrupt.Lowest priority delivery mode does not necessarily respect the affinitysetting and may redirect to some other online CPU. This was documentedsomewhere in the old code and the conversion to single target deliverymissed to update the delivery mode of the affected APIC drivers whichresults in spurious interrupts on some of the affected CPU/Chipsetcombinations.Switch the APIC drivers over to Fixed delivery mode and remove allleftovers of lowest priority delivery mode.Switching to Fixed delivery mode is not a problem on these CPUs because thekernel already uses Fixed delivery mode for IPIs. The reason for this isthat th SDM explicitely forbids lowest prio mode for IPIs. The reason isobvious: If the irq routing does not honor destination targets in lowestprio mode then an IPI targeted at CPU1 might end up on CPU0, which would bea fatal problem in many cases.As a consequence of this change, the apic::irq_delivery_mode field is nowpointless, but this needs to be cleaned up in a separate patch.Fixes:fdba46f ("x86/apic: Get rid of multi CPU affinity")Reported-by: vcaputo@pengaru.comSigned-off-by: Thomas Gleixner <tglx@linutronix.de>Tested-by: vcaputo@pengaru.comCc: Pavel Machek <pavel@ucw.cz>Link:https://lkml.kernel.org/r/alpine.DEB.2.20.1712281140440.1688@nanos1 parent64e05d1 commita31e58e
File tree
6 files changed
+8
-16
lines changed- arch/x86/kernel/apic
- drivers/pci/host
6 files changed
+8
-16
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
151 | 151 |
| |
152 | 152 |
| |
153 | 153 |
| |
154 |
| - | |
| 154 | + | |
155 | 155 |
| |
156 | 156 |
| |
157 | 157 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
110 | 110 |
| |
111 | 111 |
| |
112 | 112 |
| |
113 |
| - | |
| 113 | + | |
114 | 114 |
| |
115 | 115 |
| |
116 | 116 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
39 | 39 |
| |
40 | 40 |
| |
41 | 41 |
| |
42 |
| - | |
43 |
| - | |
44 |
| - | |
| 42 | + | |
45 | 43 |
| |
46 | 44 |
| |
47 | 45 |
| |
48 | 46 |
| |
49 | 47 |
| |
50 |
| - | |
51 |
| - | |
52 |
| - | |
| 48 | + | |
53 | 49 |
| |
54 | 50 |
| |
55 | 51 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
105 | 105 |
| |
106 | 106 |
| |
107 | 107 |
| |
108 |
| - | |
| 108 | + | |
109 | 109 |
| |
110 | 110 |
| |
111 | 111 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
184 | 184 |
| |
185 | 185 |
| |
186 | 186 |
| |
187 |
| - | |
| 187 | + | |
188 | 188 |
| |
189 | 189 |
| |
190 | 190 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
985 | 985 |
| |
986 | 986 |
| |
987 | 987 |
| |
988 |
| - | |
989 |
| - | |
990 |
| - | |
| 988 | + | |
991 | 989 |
| |
992 | 990 |
| |
993 | 991 |
| |
| |||
1008 | 1006 |
| |
1009 | 1007 |
| |
1010 | 1008 |
| |
1011 |
| - | |
1012 |
| - | |
1013 |
| - | |
| 1009 | + | |
1014 | 1010 |
| |
1015 | 1011 |
| |
1016 | 1012 |
| |
|
0 commit comments
Comments
(0)