Mark Kettenis <mark.kette...@xs4all.nl> wrote:

> So isn't the real problem that some of the lower-level code involved
> in the resume path isn't properly marked to not do the
> instrumentation?  Traditionally that was assembly code and we'd use
> NENTRY() (in amd64) or ENTRY_NP() (on some other architectures) to
> prevent thise functions from calling _mcount().  But that was only
> ever done for code used during early bootstrap of the kernel.  And
> these days there may be C code that needs this as well.
> 
> With your diff, functions in the suspend/resume path will still call
> _mcount() which may not be safe.

I guess you can make critical functions not do _PROF_PROLOGUE
or you can make __mcount or _mcount aware that they should "do nothing",
or "nothing scary".

Hell, save & toggle the 'gmoninit' variable during the suspend/resume
sequence, and then adjust one comment:

        /*
         * Do not profile execution if memory for the current CPU
         * descriptor and profiling buffers has not yet been allocated
         * or if the CPU we are running on has not yet set its trap
-        * handler
+        * handler, or disabled during a suspend/resume sequence
         */
        if (gmoninit == 0)
                return;


Does this really need another variable?

It feels like this can be 4 1-line diffs.

Reply via email to