Hi,

I want to instrument all store instructions, and for this I wrote a helper
function (in helper.c) which prints out some information every time a store
is executed. I call this helper function from within every store OPROTO in
ops_mem.h

for example:
void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void)
{
   glue(stl, MEMSUFFIX)(A0, T0);
   helper_print_info(A0); // MY HELPER FUNCTION
   FORCE_RET();
}


This works just fine for me for some time, but after a while when the
frequency of calls to helper_print_info increases, QEMU just hangs throwing
out some information on the QEMU console. I have typed in the error message
in parts below - (If you need more information, please let me know - I
included  a subset just because I do not yet know how to copy-paste text
from QEMU console to the host machine console)

*******************************************
BUG: soft lockup detected on CPU#0!

Pid: 0, comm: swapper
EIP: 0060:[<c027adfb>] CPU: 0
EIP is at serio_interrupt+0x7f/0x18f
EFLAGS: 00000286
...
[c02c1b2d>] cdrom_pc_intr+0x90/0x21a
...
[<c0105b1d>] do_IRQ+0x4a/0x82
=======================
...
[<c04242fe>] unknown_bootoption+0x0/0x1cd
****************************************

QEMU hangs after throwing out the above error. However, if I switch to the
Monitor and disable  my helper function, QEMU resumes back and works fine.
Can somebody tell me -
1. Am I instrumenting all stores if I instrument the OPROTOs in ops_mem.h?
2. From my above example, am I instrumenting the stores with my helper
function in the right way?
3. Can you please tell me why "BUG: soft lockup detected..." error shows up
freezing QEMU?

Looking forward to your help.
Thanks in advance.
-Shashi.

Reply via email to