On Fri, 21 Dec 2001, H. Peter Anvin wrote:
> > there are boot problems with new kernels on AMD SC410 processors.
>
> "On one particular SC410 board."
Ok, but it's one of the most widespread embedded x86 boards in Europe.
> The loop counter you're outputting is the 2nd byte of the loop counter,
> which really isn't interesting;
This was just from the last test: the result was %ch=0 and %cl=1.
> what probably makes more sense to output is the value of %dx in your
> code.
%dx? Do you mean %cx or do I not understand the code? ;)
> I would like to suggest making the following changes and try them out:
>
> a) Change A20_TEST_LOOPS to something like 32768 in the new kernel code.
Still reboots.
> b) Add a "call delay" between the movw and the cmpw in your old_loop
> and see if it suddenly breaks;
No, it still works.
> c) Check what your %dx value is (if it's nonzero, there might be an
> issue.)
I assume you mean in my old_wait code, at the lines where I give out the
stuff to the LED ports? Neither %dl nor %dh has something different from
0 here. How could something come into %dx here?
> d) Once again, please complain to your motherboard/BIOS vendor and tell
> them to implement int 15h, ax=2401h.
I'll do that, but this won't help for the hundrets of boards which are
still out there and worked fine with the previous code...
> e) Add a strictly serializing instruction sequence, such as:
>
> pushw %dx
> smsw %dx
> lmsw %dx
> popw %dx
>
> ... where the "call delay" call is in a20_test.
Hope I understand you correctly - I'm not an assembler wizzard yet ;) Is
this correct:
----------8<----------
a20_test:
pushw %cx
pushw %ax
xorw %cx, %cx
movw %cx, %fs # Low memory (segment 0x0000)
decw %cx
movw %cx, %gs # High memory area (segment 0xffff)
movw $A20_TEST_LOOPS, %cx
movw %fs:(A20_TEST_ADDR), %ax # put content of test address...
pushw %ax # ... on stack
a20_test_wait:
incw %ax
movw %ax, %fs:(A20_TEST_ADDR)
pushw %dx
smsw %dx
call delay # Serialize and make delay constant
lmsw %dx
popw %dx
cmpw %gs:(A20_TEST_ADDR+0x10), %ax
loope a20_test_wait
popw %fs:(A20_TEST_ADDR)
popw %ax
popw %cx
ret
---------->8----------
Still reboots with this code.
Robert
-- +--------------------------------------------------------+ | Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de | | Pengutronix - Linux Solutions for Science and Industry | | Braunschweiger Str. 79, 31134 Hildesheim, Germany | | Phone: +49-5121-28619-0 | Fax: +49-5121-28619-4 | +--------------------------------------------------------+- 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/
This archive was generated by hypermail 2b29 : Sun Dec 23 2001 - 21:00:27 EST