lkml.org 
[lkml]   [2005]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH][RFC] swsusp: speed up image restoring on x86-64
    Hi!

    > > Sure, but I think it's there for a reason.
    > >
    > > > Anyway, this is likely to clash with hugang's work; I'd prefer this not to be applied.
    > >
    > > I am aware of that, but you are not going to merge the hugang's patches soon, are you?
    > > If necessary, I can change the patch to work with his code (hugang, what do you think?).
    > >
    > I like this patch, And I change my code with this, Please have a look,
    > It pass in qemu X86_64. :)
    >
    > Full patch still can get from
    > http://soulinfo.com/~hugang/swsusp/2005-1-21/
    >
    > here is only x86_64 part.

    Okay, why not, if you are changing it anyway...


    > --- 2.6.11-rc1-mm1/arch/x86_64/kernel/suspend_asm.S 2004-12-30 14:56:35.000000000 +0800
    > +++ 2.6.11-rc1-mm1-swsusp-x86_64/arch/x86_64/kernel/suspend_asm.S 2005-01-21 10:13:15.000000000 +0800
    > @@ -35,6 +35,7 @@ ENTRY(swsusp_arch_suspend)
    > call swsusp_save
    > ret
    >
    > + .section .data.nosave
    > ENTRY(swsusp_arch_resume)
    > /* set up cr3 */
    > leaq init_level4_pgt(%rip),%rax

    But why does it go into data section?

    > @@ -49,43 +50,32 @@ ENTRY(swsusp_arch_resume)
    > movq %rcx, %cr3;
    > movq %rax, %cr4; # turn PGE back on
    >
    > - movl nr_copy_pages(%rip), %eax
    > - xorl %ecx, %ecx
    > - movq $0, %r10
    > - testl %eax, %eax
    > - jz done
    > -.L105:
    > - xorl %esi, %esi
    > - movq $0, %r11
    > - jmp .L104
    > - .p2align 4,,7
    > -copy_one_page:
    > - movq %r10, %rcx
    > -.L104:
    > - movq pagedir_nosave(%rip), %rdx
    > - movq %rcx, %rax
    > - salq $5, %rax
    > - movq 8(%rdx,%rax), %rcx
    > - movq (%rdx,%rax), %rax
    > - movzbl (%rsi,%rax), %eax
    > - movb %al, (%rsi,%rcx)
    > -
    > - movq %cr3, %rax; # flush TLB
    > - movq %rax, %cr3;
    > -
    > - movq %r11, %rax
    > - incq %rax
    > - cmpq $4095, %rax
    > - movq %rax, %rsi
    > - movq %rax, %r11
    > - jbe copy_one_page
    > - movq %r10, %rax
    > - incq %rax
    > - movq %rax, %rcx
    > - movq %rax, %r10
    > - mov nr_copy_pages(%rip), %eax
    > - cmpq %rax, %rcx
    > - jb .L105
    > + movq pagedir_nosave(%rip), %rax
    > + testq %rax, %rax
    > + je done
    > +
    > +copyback_page:
    > + movq 24(%rax), %r9
    > + xorl %r8d, %r8d
    > +

    Are you sure %r8 and %r9 are caller-saved? I'd use low registers if I
    were you, they look nincer and generate shorter opcodes ;-).

    Pavel
    --
    People were complaining that M$ turns users into beta-testers...
    ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
    -
    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: 2005-03-22 14:09    [W:0.028 / U:213.648 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site