PCI-Express 핫플러그 질문입니다.
안녕하세요.
요즘 회사에서 PCI-Express 리눅스 디바이스 드라이버를 제작하고 있습니다.
하드웨어는 케이블로 연결되어 밖으로 나와있는 형태입니다.
기존의 PCI 디바이스 드라이버를 제작했던것을 바탕으로 PCI-Express 에도 동작되게 수정을 하였습니다.
다른것들은 다 정상 동작하는데, 마무리 단계로 핫 플러그 기능을 구현하려 하는데,
하드웨어를 off하고 on하면, PCI의 bar0에 있는 base address가
0으로 초기화 되버려, 디바이스 드라이버에서 더이상 접근할 수 없게 되버리네요.
base address를 bios에서도 다시 할당을 해줘야 할것 같은데, 잘 모르겠네요.
아래는 정상적인 off하기전의 PCI configuration 영역입니다.
03:00.0 Class ff00: Unknown device 1886:1978
00: 86 18 78 19 07 00 10 00 00 00 00 ff 04 00 00 00
10: 00 00 e0 d7 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 0a 01 00 00
아래는 off하고 on한후의 영역입니다.
03:00.0 Class ff00: Unknown device 1886:1978
00: 86 18 78 19 00 00 10 00 00 00 00 ff 00 00 00 00
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00
30: 00 00 00 00 40 00 00 00 00 00 00 00 ff 01 00 00
현재 사용하는 리눅스 버전은 RHEL 5 입니다. 커널 2.6.18 입니다.
경험있으신 여러분들의 조언 부탁드립니다. ^^
댓글 달기