2012-06-05 35 views
5

Trong /proc/interrupts tệp Tôi thấy cấp IO-APIC (hoặc cạnh) và trong hệ thống khác của tôi, tôi thấy PCI-MSI-X. Cả hai đều có cùng một thiết bị etho.
Tôi không nhận được sự khác biệt giữa hai điều này. Tôi có thể thay đổi PCI-MSI-X thành IO-APIC không? Những mô-đun hạt nhân hoặc tập tin hoặc conf hoặc tập tin proc, nó thuộc về?khác biệt giữa mức IO-APIC và PCI-MSI-X

Có an toàn khi phân phối các ngắt tới tất cả các lõi CPU có sẵn không?

+0

Bỏ phiếu để mở lại. Câu hỏi này là về lập trình trình điều khiển thiết bị. – Peter

Trả lời

12

Ngắt MSI-X là ngắt dựa trên thông báo và là phương pháp duy nhất có sẵn cho thiết bị PCIe để báo hiệu ngắt. Thay vì khẳng định một dòng phần cứng để báo hiệu ngắt, thiết bị sẽ ghi một từ vào một địa chỉ được định cấu hình sẵn. Địa chỉ đó là một thanh ghi điều khiển trong CPU, hoặc một thanh ghi trong cổng gốc PCIe mô phỏng hệ thống ngắt kế thừa. Bạn đang nhìn thấy cả hai trường hợp đó.

BIOS cấu hình bảng để gửi ngắt MSI tới cổng gốc, mô phỏng ngắt INTx, đến CPU thông qua định tuyến trong APIC. Khi hệ điều hành hỗ trợ MSI trực tiếp, trình điều khiển thiết bị có thể lập trình lại địa chỉ đích MSI, sao cho thông báo ngắt đến trực tiếp thanh ghi CPU gián đoạn.

MSI-X khác với MSI chỉ đơn giản bằng cách hỗ trợ nhiều vectơ ngắt (một cho mỗi cổng mạng trên NIC cổng kép, ví dụ hoặc một cho TX và RX).

MSI thực hiện tốt hơn so với mô phỏng INTX, vì mô phỏng INTX chia sẻ ngắt giữa các thiết bị phía sau cùng một cầu PCIe, mặc dù điều này thực sự chỉ quan trọng trên các thiết bị tạo ra nhiều gián đoạn. Câu hỏi của bạn nên là, "tại sao một trong các hệ thống của tôi không cho phép gián đoạn MSI-X trên thẻ mạng của tôi."

Tài liệu tham khảo:

http://lwn.net/Articles/44139/

http://en.wikipedia.org/wiki/Message_Signaled_Interrupts

+1

Lưu ý rằng PCIe không mô phỏng các ngắt kế thừa (a.k.a. INTx theo đặc điểm kỹ thuật) để cho phép tương thích ngược với các trình điều khiển cũ hơn. Nhưng không giống như PCI, chúng được thực hiện với một cặp giao dịch tin nhắn PCIe (Assert_INTx và Deassert_INTx) thay vì các dòng vật lý chạy tới bộ điều khiển ngắt. – ctuffli

Các vấn đề liên quan