Hi... On Thu, Mar 17, 2011 at 00:26, va stg2010 <va.storage2010@gmail.com> wrote:
I also looked into sg_miter_next() and sg_miter_stop() implementations. They are calling kmap_atomic() and kunmap_atomic() respectively. Based on comment -- Is following an illegal operation? and why? 1) IRQ disabled 2) sg_miter_next , meaning kmap_atomic 3) IRQ enabled 4) IRQ disabled again little later 5) sg_miter_stop, meaning kunmap_atomic()
The above sequence caused following scheduler messages (if sg_miter_stop() is moved between step1 & step3 then following error messages disappeared) :-------- BUG: scheduling while atomic: swapper/0/0xffffffff Modules linked in: my_scsi_lld
quite likely the error was triggered not due to kmap_atomic() and kunmap_atomic(), but due to something that you do toward the page allocated via kmap_atomic() itself. kmap_atomic() theoritically should not be affected by the state of interrupt delivery.... -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com