On Thursday, 7 of February 2008, Pavel Machek wrote: > Hi! Hi, > >>>> Hmm, maybe I know where problem could be. Try > >>>> > >>>> movl $(wakeup_stack - wakeup_code), %esp # > >>>> Private stack is needed for ASUS bo\ > >>>> > >>>> instead of existing stack setup. That helped on one of my test-boxes > >>> Thanks, I will try that. > >>> Because clearing the flags imply pop/push in the stack it could be the > >>> problem > >> That doesn't help : it still crash in pushl $0. > >> > > All stack stuff in wakeup_code crash for me. > > I tried to change the stack position, make sure upper bit of %esp are > > clear, ... nothing work. > > What's are strange is that according to my x86 manual, in real mode the > > failure can only happen if the stack wrap which is not the case here. > > Any x86 guru advice ? > > Could you try the .c wakeup? I changed it a bit, perhaps that's enough. > > > If I remove stack access (remove clearing flag stuff, not call to video > > stuff) the resume works. > > Actually, I see a possible problem: > > _start: > cli > cld > > /* Set up segments */ > movw %cs,%ax > movw %ax,%ds > movw %ax,%es > movw %ax,%ss > > movl $wakeup_stack_end, %esp > > /* Clear the EFLAGS */ > pushl $0 > popfl > > ...if someone calls start as 0x1234:0, we are okay. But if some broken > bios calls us as 0x1:0x234, we've got a problem. Well, in that case the signature/end_signature tests below would trigger, no? Rafael _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm