[lkml]   [2008]   [May]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [PATCH] kexec based hibernation: a prototype of kexec multi-stage load
    "Huang, Ying" <> writes:

    > On Wed, 2008-05-14 at 14:43 -0700, Eric W. Biederman wrote:
    > [...]
    >> Then as a preliminary design let's plan on this.
    >> - Pass the rentry point as the return address (using the C ABI).
    >> We may want to load the stack pointer etc so we can act as
    >> a direct entry point for new code.
    > There are some issues about passing entry point as return address. The
    > kexec jump (or kexec with return) is used for
    > - Switching between original kernel (A) and kexeced kernel (B)
    > - Call some code (such as BIOS code) in physical mode
    > 1) When call some code in physical mode, the called code can use a
    > simple return to return to kernel A. So there is no return address on
    > stack after return to kernel A. Instead, argument 1 is on stack top.
    > 2) When switch back from kernel B to kernel A, kernel B will call the
    > jump back entry of kernel A with C ABI. So, the return address is on
    > stack top. And kernel A get jump back entry of kernel B via the return
    > address.
    > Because the stack state is different between 1) and 2), the jump back
    > entry of kernel A should distinguish them.

    Yes. Because the stack state is different we need to be careful.

    However I don't see that we care how we got to the proper piece of
    code. If we don't care we don't need to distinguish them.

    Therefore I see two possible solutions.
    1) Write a tiny trampoline that goes in the core file to keep
    the calling conventions sane.

    2) After we figure out our address read the stack pointer from
    a fixed location and simply set it. (This is my preference)


     \ /
      Last update: 2008-05-15 20:53    [W:0.025 / U:27.588 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site