qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Re: 2.6.10-mm3: swsusp: out of memory on resume


From: hugang
Subject: Re: [Qemu-devel] Re: 2.6.10-mm3: swsusp: out of memory on resume
Date: Sun, 16 Jan 2005 12:38:27 +0800
User-agent: Mutt/1.3.28i

On Sun, Jan 16, 2005 at 12:40:56AM +0800, address@hidden wrote:
> On Sat, Jan 15, 2005 at 12:48:54PM +0100, Fabrice Bellard wrote:
...
> 
> When I using Qemu as X86_64 emulataion for testing software suspend, I
> get the first oops the instruction is this, 
> IN:
> 0xffffffff80116a8a:  movzwl 0x8(%rbx),%eax
> 0xffffffff80116a8e:  mov    %eax,%ss  <- general protection 
> 
> That's in 
> arch/x86_64/kernel/suspend.c +105
>  asm volatile ("movw %0, %%ss" :: "r" (ctxt->ss)); <-- general protection.
> 
> I don't why, but I check %eax and %ss are same value, so I just comment 
> this line, the oops go away, But still geting hang, Now I have no idea,
> :)
> 
> 

Ok, I enable the raise_exception_err, and catach this.
.....
/* only works if protected mode and not VM86. seg_reg must be != R_CS */
void load_seg(int seg_reg, int selector)
{
    uint32_t e1, e2;
    int cpl, dpl, rpl;
    SegmentCache *dt;
    int index;
    target_ulong ptr;

    selector &= 0xffff;
    if ((selector & 0xfffc) == 0) {
        /* null selector case */
        if (seg_reg == R_SS)
            raise_exception_err(EXCP0D_GPF, 0);
        cpu_x86_load_seg_cache(env, seg_reg, selector, 0, 0, 0);
    } else {
        ....

In the comment line, said must be != R_CS, But in code is check R_SS, I
just change R_SS to R_CS, then the software-suspend suspend part passed 
in qemu, I geting hang at copyback memory in resume, Still debuging...

:)

Maybe that, also useful for other, Eg. Win2k disk full...

-- 
Hu Gang       .-.
              /v\
             // \\ 
Linux User  /(   )\  [204016]
GPG Key ID   ^^-^^   http://soulinfo.com/~hugang/hugang.asc




reply via email to

[Prev in Thread] Current Thread [Next in Thread]