Patchwork IRQ service is not returned back.

login
register
about
Submitter 유택연
Date 2009-11-26 08:59:41
Message ID <efa814ff0911260059h13b08714g6a8d665d6761a1b5@mail.gmail.com>
Download mbox | patch
Permalink /patch/601/
State Not Applicable, archived
Headers show

Comments

유택연 - 2009-11-26 08:59:41
The basic IRQ handler that is serviced by x86emu module is not
returned back to caller.
So must be patched.

-- jaagar
Bao, Zheng - 2009-11-26 09:44:32
It has fixed my vga rom hanging problem.
But I don't know why, so ...

Reviewed-by: Zheng Bao <zheng.bao@amd.com>


-----Original Message-----
From: coreboot-bounces+zheng.bao=amd.com@coreboot.org
[mailto:coreboot-bounces+zheng.bao=amd.com@coreboot.org] On Behalf Of
Yoo, Taik-Yon
Sent: Thursday, November 26, 2009 5:00 PM
To: coreboot
Subject: [coreboot] [PATCH] IRQ service is not returned back.

The basic IRQ handler that is serviced by x86emu module is not
returned back to caller.
So must be patched.

-- jaagar
Myles Watson - 2009-11-26 16:10:14
> It has fixed my vga rom hanging problem.
> But I don't know why, so ...
So the real problem was x86emu, not CBFS or the onboard driver?

Can you confirm that by using vm86 or SeaBIOS for VGA init?

Thanks,
Myles
Myles Watson - 2009-11-26 16:11:51
> The basic IRQ handler that is serviced by x86emu module is not
> returned back to caller.
> So must be patched.
I think this patch could use some more explanation, since it's not intuitive
to set SS to initialcs instead of STACK_SEGMENT.  It doesn't look right.

Thanks,
Myles
ron minnich - 2009-11-26 18:57:23
On Thu, Nov 26, 2009 at 8:11 AM, Myles Watson <mylesgw@gmail.com> wrote:
>
>> The basic IRQ handler that is serviced by x86emu module is not
>> returned back to caller.
>> So must be patched.
> I think this patch could use some more explanation, since it's not intuitive
> to set SS to initialcs instead of STACK_SEGMENT.  It doesn't look right.

Yeah, this is weird. initialcs is f000, stack_segment is 1000. It is
hard to believe, but could it be that the stack is more than 64K?
Seems unlikely.

Having the stack at f000:fffe actually seems a really bad idea as that
is the code segment.
I wonder why this works at all?

Thanks for the patch, however, it seems a very important data point.

Another question: where does the emulator put the emulated stack in
physical memory? Does it use the real memory at 0x10000 or something
else? Because it could be a code overwriting problem again.

ron

Patch

--- coreboot-a/util/x86emu/biosemu.c	2009-11-25 00:35:25.000000000 +0900
+++ coreboot-b/util/x86emu/biosemu.c	2009-11-25 04:49:42.000000000 +0900
@@ -553,7 +561,7 @@ 
 	X86_CS = initialcs;
 
 	/* Initialize stack and data segment */
-	X86_SS = STACK_SEGMENT;
+	X86_SS = initialcs;
 	X86_SP = STACK_START_OFFSET;;
 	X86_DS = DATA_SEGMENT;