Hi... On Wed, Jun 8, 2011 at 21:54, emilie lefebvre <tricheurs@xxxxxxxxxx> wrote: > > This is my function : > > static spinlock_t xgr_learn_lock = SPIN_LOCK_UNLOCKED; > static int piga_seq_cpt = 1; > > /* > * Function called for each systemcall (Hook SELinux avc function) > */ > int piga_control(u32 ssid, ...., struct av_decision * avd) { > > /* > * Here my hypercall work but block my vm with this error : > * " BUG: scheduling while atomic ... " > */ > > spin_lock_bh(&xgr_learn_lock); > if ( in_atomic()) > kvm_hypercall2 ( 6, (unsigned long)2 ,(unsigned > long)piga_seq_cpt); AFAIK, anything that trigger context switching, usually trigger rescheduling too....or in other word, does blocking. Therefore, grabbing lock must be avoided IMHO > spin_unlock_bh(&xgr_learn_lock); > > if (piga_on == 1) { > /* > * Here my hypercall make a kernel panic with this error: > * " divide error: 0000 [#1] SMP" > */ > spin_lock_bh(&xgr_learn_lock); > set_current_state(TASK_UNINTERRUPTIBLE); wait wait, why setting as uninterruptible? > kvm_hypercall2 ( 6, (unsigned long)2 ,(unsigned > long)piga_seq_cpt); > set_current_state(TASK_RUNNING); > spin_lock_bh(&xgr_learn_lock); > } > } > > > > > >> Date: Wed, 8 Jun 2011 15:52:33 +0530 >> Subject: Re: Problems with hypercalls >> From: fs.rajat@xxxxxxxxx >> To: mulyadi.santosa@xxxxxxxxx >> CC: tricheurs@xxxxxxxxxx; kernelnewbies@xxxxxxxxxxxxxxxxx >> >> are you doing 64bit devision on 32 bit arch? If that is the case, >> do_div is worth considering. >> >> On Wed, Jun 8, 2011 at 3:25 PM, Mulyadi Santosa >> <mulyadi.santosa@xxxxxxxxx> wrote: >> > On Tue, Jun 7, 2011 at 15:39, emilie lefebvre <tricheurs@xxxxxxxxxx> >> > wrote: >> >> "divide error: 0000 [#1] SMP >> >> ... >> >> [<ffffffff813f8cdd>] panic+0x78/0x137 >> >> [<ffffffff813fcb94>] oops_end+0xe4/0x100 >> >> [<ffffffff8101021b>] die+0x5b/0x90 >> >> [<ffffffff813fc444>] do_trap+0xc4/0x160 >> >> [<ffffffff8100df2f>] do_divide_error+0x8f/0xb0 >> >> [<ffffffff811f974c>] ? my_function+0xdc/0xe70 " >> >> >> >> Could you have any suggestions ? >> > >> > Could you show us your code? perhaps by pasting them somewhere? >> > >> > >From what I guess, sounds like your code did some math (directly or >> > indirectly) that fiddle with floating point numbers? >> > >> > >> > -- >> > regards, >> > >> > Mulyadi Santosa >> > Freelance Linux trainer and consultant >> > >> > blog: the-hydra.blogspot.com >> > training: mulyaditraining.blogspot.com >> > >> > _______________________________________________ >> > Kernelnewbies mailing list >> > Kernelnewbies@xxxxxxxxxxxxxxxxx >> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> > >> >> _______________________________________________ >> Kernelnewbies mailing list >> Kernelnewbies@xxxxxxxxxxxxxxxxx >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > > -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies