온보드 하드웨어 드라이버 모범 사례

온보드 하드웨어 드라이버 모범 사례

내가 컴퓨터 관리(VME 버스 시스템) 작업을 시작했을 때 드라이버는 커널에 내장되어야 했고 위반해서는 안 되는 몇 가지 매우 합리적인 규칙이 있었습니다.

적절한 드라이버 없이 하드웨어를 연결/설치하지 마십시오.

그 주된 이유는 하드웨어가 IRQ를 생성할 가능성이 높기 때문입니다. IRQ가 부적절하게 생성되거나 처리되지 않으면 커널 패닉이 발생할 수 있습니다.


공교롭게도 Intel ICH10 사우스브리지가 있는 마더보드에서 -4 또는 -5 Linux 커널을 실행하고 lshw를 실행하면 다음과 같은 결과가 나타납니다.

*-serial UNCLAIMED
    description: SMBus
    product: 82801JI (ICH10 Family) SMBus Controller

이는 전용 드라이버인 것으로 알고 있는 CONFIG_I2C_I801 커널 옵션의 설정과 아무 관련이 없습니다.

즉, SMBus를 연결하면 적어도 슈퍼 I/O 칩을 얻을 수 있습니다(강력한 로컬 인터럽트 기능이 있다고 생각하고 전용 드라이버가 있지만 SMBus가 구동되지 않기 때문에 쓸모가 없습니다).

그대로 두는 것이 100% 안전합니까(생산 등급을 의미합니까)(vg 슈퍼 I/O 칩이 구동되지 않음)?

답변1

상관없습니다. 괴물은 사라졌습니다. PCI 버스 장치입니다. PCI 장치는 우리의 친구입니다.

$ lspci | grep SMBus
00:1f.3 SMBus: Intel Corporation Wildcat Point-LP SMBus Controller (rev 03)

PCI 장치의 주소 할당은 소프트웨어에 의해 제어됩니다. 장치는 고정 IO 포트나 메모리 주소를 수신할 필요가 없습니다.

따라서 실수로 활성화될 수 없습니다. 표준에는 장치 IRQ가 특별히 활성화되어야 한다고 명시되어 있습니다(그리고 이를 수행하는 표준 방법이 있습니다).

https://en.wikipedia.org/wiki/Peripheral_Component_Interconnect#Auto_configuration

경고가 있습니다. SMBus 드라이버를 로드하지 않는 것이 좋습니다. SMBus 장치는 ACPI 펌웨어(자금 세탁 방지). 이 경우 커널은 이를 구동해서는 안 됩니다. ACPI는 커널이 이러한 상황을 피할 수 있도록 SMBus 장치 리소스를 선언해야 합니다. ACPI에 문제가 있는지 확실하지 않습니다. 예전에는 커널이 잘못했다고 생각했는데 이제는 인식합니다.

i801_smbus 0000:00:1f.3: PCI INT B -> GSI 21 (level, low) -> IRQ 21
ACPI: I/O resource 0000:00:1f.3 [0x400-0x41f] conflicts with ACPI region SMRG [0x400-0x40f]
ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver

관련 정보