Répondre

8

Non, les ioctls fonctionnent généralement dans un contexte de processus. Si un pilote saisit un spinlock pendant le traitement de l'ioctl, le pilote entrera dans le contexte atomique et restera dans le contexte atomique jusqu'à ce qu'il libère le spinlock.

Voir: http://lwn.net/Articles/274695/ pour une bonne discussion sur le contexte atomique dans Linux

2

Avez-vous mis CONFIG_DEBUG_SPINLOCK_SLEEP, qui pourrait vous donner plus d'information, incluant une trace de pile, d'où l'erreur est.

L'autre angle à regarder est ce que vous appelez des fonctions de sommeil. Les exemples sont msleep(), mutex_lock(), copy_to_user() etc.

Questions connexes