[질문] SMP 모드에서 Driver 작성할 때 고려해야 할 점???
글쓴이: skjean / 작성시간: 토, 2004/05/29 - 10:25오전
SMP 모드로 동작하는 Linux에서 돌아갈 디바이스 드라이버를
작성할 때, 특별히 고려해야 하는 점이 있나요?
질문이 좀 구체적이지는 못하지만.. SMP에 대해서는 별로
아는게 없어서요...
실제 CPU 하나에서 돌아가는 Linux 상에서 잘 동작하는 디바이스
드라이버가 SMP 상에서는 다음과 같은 에러를 내면서 죽어버립니다.
도움 부탁드립니다.
(참고로 네트워크 드라이버인데.. insmod 이후 ifconfig로 IP 주소
설정하면서 나타난 메시지입니다.
Unhandled kernel unaligned access in unaligned.c::emulate_load_store_insn, line 483: $0 : 00000000 80315d60 c3529544 ffffffed c352c01c 00001043 00000001 8ff6fe68 $8 : 00000001 7fff7e18 00000000 00000000 10438a50 8234c448 8234c450 00000003 $16: c352cfa0 00000000 00001043 c352cfa0 80117f60 c352cfa0 8ff6fe78 7fff7c20 $24: 00000000 2ac18ab0 8ff6e000 8ff6fde8 00008914 c352957c Hi : 00000000 Lo : 00000e80 epc : c3529574 Tainted: PF Status: 30001f03 Cause : 80800010 Process ifconfig (pid: 143, stackpage=8ff6e000) Stack: 8025a39c 8025a370 802f84b0 80125df8 c352cfa0 00000000 00001043 00000000 8ff78f30 80219b58 8021cbc0 80258820 8ff6fe68 00000000 c352cfa0 00001002 8021bb94 8021bb64 c352cfa0 802589f0 8ff6fe68 802199d8 8ff6fe68 8d33ec20 00000000 00000000 80259428 802591e4 8560e018 00000003 8ff6fe90 802199d8 65686966 65000000 00000000 00000000 10438a50 00000003 10008a50 7fff7e18 ... Call Trace: [<8025a39c>] [<8025a370>] [<80125df8>] [<c352cfa0>] [<80219b58>] [<8021cbc0>] [<80258820>] [<c352cfa0>] [<8021bb94>] [<8021bb64>] [<c352cfa0>] [<802589f0>] [<802199d8>] [<80259428>] [<802591e4>] [<802199d8>] [<8025c714>] [<80211850>] [<80143ca4>] [<80159c00>] [<80212028>] [<8010aa94>] [<801183ec>] Code: 26947f60 3c04c353 2484c01c <0280f809> 8cb10068 8e230004 8e720020 8e24000c 24630001 Segmentation fault
Forums:
spinlock 을 잘 쓰셔야 됩니다.SMP 가 아닌 경우는 전역
spinlock 을 잘 쓰셔야 됩니다.
SMP 가 아닌 경우는 전역변수를 액세스할때 lock 을 주의해서 사용하지 않아도 문제가 발견되지 않고 넘어가는 경우가 많습니다. 범용 디바이스 드라이버를 개발/테스트하시려면 듀얼 CPU 시스템을 꼭 갖춰야 하죠.
댓글 달기