Hi Shashi,

I think it is sufficient to add your intercept code in ops_mem.h. I am not
sure about the writes from the I/O though.

Regards,
Atif

On 5/17/07, Shashidhar Mysore <[EMAIL PROTECTED]> wrote:

Hi Atif,

Thanks for the quick reply. Yes, you are right, I want to consider all
updates to memory. Can you tell me if it is sufficient enough to instrument
just those in ops_mem.h?  I want to make sure I am not missing any form of
write to the memory (even it is from IO devices, which I think is taken care
of).

Thanks,
-Shashi.

On 5/17/07, Atif Hashmi <[EMAIL PROTECTED]> wrote:
>
> Hi,
>
> Answering "1. Am I instrumenting all stores if I instrument the OPROTOs
> in ops_mem.h? "
>
> Do you consider all updates to memory as stores? e.g. add %ebx, (%eax),
> will also write to the memory and
> void OPPROTO glue(glue(op_stl, MEMSUFFIX), _T0_A0)(void) or one of its
> variant will be called.
>
> If you are interested in all the memory updates, then your approach is
> correct. If you are only interested in store instructions then your approach
> is not correct.
>
> Atif
>
> On 5/17/07, Shashidhar Mysore <[EMAIL PROTECTED]> wrote:
> >
> > 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