linux内核关闭中断_x86系统中的外部中断。 第2部分。
linux内核关闭中断
In the last part we of the from the in the x86 (PIC → APIC → MSI), , and all the .
在上一部分中,我们讨论了来自x86系统中的设备(PIC→APIC→MSI),通用理论和所有必要术语的中断传递过程的演变。
In this part we will look at how to roll back to the use of of in Linux, and in we will look at Linux boot :
在这个实际的部分中,我们将研究如何回滚到Linux中使用过时的中断传递方法,尤其是我们将研究Linux内核引导选项:
Also we will look at the order in which the OS looks for (ACPI//$PIR) and what the is from the boot :
此外,我们还将研究操作系统寻找中断路由表(ACPI / / $ PIR)的顺序,以及以下引导选项的影响:
You've used some of these when one of the in your hasn't of an . We'll go these and find out what they do and how they the '/proc/' .
当系统中的某个设备由于中断问题而无法正常工作时,您可能已经使用了这些选项的某种组合。 我们将研究这些选项,并找出它们的作用以及它们如何更改内核“ / proc / ”接口的输出。
无需任何额外选项即可启动 (Boot any extra )
In this for our we will be using board with the Intel i7 CPU with the -LP which runs .
在本文中进行中断调查时,我们将结合使用带有 i7 CPU和-LP芯片组(运行)的定制板。
We will be about in the Linux the :
我们将通过以下命令获取有关Linux系统中中断的信息:
cat /proc/interrupts
Here is the when the was any :
这是在没有任何外部选项的情况下启动内核时的输出:
CPU0 CPU1 CPU2 CPU3 0: 15 0 0 0 IO-APIC-edge timer1: 0 1 0 1 IO-APIC-edge i80428: 0 0 0 1 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 12: 0 0 0 1 IO-APIC-edge 23: 16 247 7 10 IO-APIC-fasteoi ehci_hcd:usb156: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME57: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME58: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME59: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME60: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME61: 0 0 0 0 PCI-MSI-edge aerdrv,PCIe PME62: 3118 1984 972 3454 PCI-MSI-edge ahci 63: 1 0 0 0 PCI-MSI-edge eth5964: 2095 57 4 832 PCI-MSI-edge eth59-rx-065: 6 18 1 1309 PCI-MSI-edge eth59-rx-166: 13 512 2 1 PCI-MSI-edge eth59-rx-267: 10 61 232 2 PCI-MSI-edge eth59-rx-368: 169 0 0 0 PCI-MSI-edge eth59-tx-069: 14 14 4 205 PCI-MSI-edge eth59-tx-170: 11 491 3 0 PCI-MSI-edge eth59-tx-271: 20 19 134 50 PCI-MSI-edge eth59-tx-372: 0 0 0 0 PCI-MSI-edge eth5873: 2 1 0 152 PCI-MSI-edge eth58-rx-074: 3 150 2 0 PCI-MSI-edge eth58-rx-175: 2 34 117 2 PCI-MSI-edge eth58-rx-276: 153 0 2 0 PCI-MSI-edge eth58-rx-377: 4 0 2 149 PCI-MSI-edge eth58-tx-078: 4 149 2 0 PCI-MSI-edge eth58-tx-179: 4 0 117 34 PCI-MSI-edge eth58-tx-280: 153 0 2 0 PCI-MSI-edge eth58-tx-381: 66 106 2 101 PCI-MSI-edge snd_hda_intel82: 928 5657 262 224 PCI-MSI-edge i91583: 545 56 32 15 PCI-MSI-edge snd_hda_intel
NMI: 0 0 0 0 Non-maskable interrupts
LOC: 4193 3644 3326 3499 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 Performance monitoring interrupts
IWI: 290 233 590 111 IRQ work interrupts
RTR: 3 0 0 0 APIC ICR read retries
RES: 1339 2163 2404 1946 Rescheduling interrupts
CAL: 607 537 475 559 Function call interrupts
TLB: 163 202 164 251 TLB shootdowns
TRM: 48 48 48 48 Thermal event interrupts
THR: 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 Machine check exceptions
MCP: 3 3 3 3 Machine check polls
ERR: 0
MIS: 0
File '/proc/' is the Linux to the , and it a table about the of on every CPU core in the in the form:
文件“ / proc / ”是中断子系统的 Linux接口,它以以下形式显示有关系统中每个CPU内核上的中断数的表:
Last : () with this 最后一列:与此中断关联的设备(驱动程序)
here is like it is to be in the . For the and which MSI/MSI-X, this is the type of that they use. The rest of the is done the APIC .
这里的一切就像应该在现代系统中一样。 对于支持MSI / MSI-X的设备和驱动程序,这是它们使用的中断类型。 其余的中断路由是通过APIC控制器完成的。
, the can be drawn like this: (red lines are paths and black lines are paths)
简单地说,中断路由原理图可以这样绘制:(红线是活动的路由路径,黑线是未使用的路由路径)
A that MSI/MSI-X have that in its PCI space.
支持MSI / MSI-X中断的设备应具有其PCI配置空间中列出的特定功能。
As an of that let's look at a of the lspci for the that they use MSI/MSI-X. In our case it is a SATA ( 'ahci'), two ( 'eth58*' and 'eth59*'), ('i915'), and two HD Audio ('').
例如,让我们看一下声明它们使用MSI / MSI-X的设备的lspci输出的一小部分。 在我们的例子中,它