lkml.org 
[lkml]   [2007]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] [5/12] x86_64: Make patching more robust, fix paravirt issue
    Andi Kleen wrote:
    > Commit 19d36ccdc34f5ed444f8a6af0cbfdb6790eb1177 "x86: Fix alternatives
    > and kprobes to remap write-protected kernel text" uses code which is
    > being patched for patching.
    >
    > In particular, paravirt_ops does patching in two stages: first it
    > calls paravirt_ops.patch, then it fills any remaining instructions
    > with nop_out(). nop_out calls text_poke() which calls
    > lookup_address() which calls pgd_val() (aka paravirt_ops.pgd_val):
    > that call site is one of the places we patch.
    >
    > If we always do patching as one single call to text_poke(), we only
    > need make sure we're not patching the memcpy in text_poke itself.
    > This means the prototype to paravirt_ops.patch needs to change, to
    > marshal the new code into a buffer rather than patching in place as it
    > does now. It also means all patching goes through text_poke(), which
    > is known to be safe (apply_alternatives is also changed to make a
    > single patch).
    >

    Hi Andi,

    This patch breaks Xen booting. I get infinite recursive faults during
    patching when this patch is present. If I boot with
    "noreplace-paravirt" it works OK, and it works as expected if I back
    this patch out. I haven't tracked down the exact failure mode; its a
    little hard to debug because it overwrites all kernel memory with
    recursive fault stackframes and then finally traps out to Xen when it
    hits the bottom of memory.

    I think we should back this one out before .23.

    J
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-08-18 02:07    [W:4.037 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site