Port-i386 archive

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

Re: GENERIC kernel hangs on boot on WYSE Winterm s10



> I've came up with two hypotheses: either the companion device is
> acting flaky because of this write, [...]

Testing shows that the companion device is keeping address line 20 low
after every write
to port 64h in which the value is not D1h.

Simply adding a write of D1h inside pckbc_send_cmd makes it boot on
the Geode, but that causes
very early resets on other computer I've tested (so early, that even
userconf won't start
if booted with -c ).

This modification makes it boot on the Geode
	printf(">>>...send_cmd: writing the actual value...");
	bus_space_write_1(iot, ioh_c, 0, val);
	printf("okay...");
	printf("writing D1...");
	bus_space_write_1(iot, ioh_c, 0, 0xD1);
	printf("okay...\n");
	printf(">>>...send_cmd: ok, exiting function\n");

page 123 of that datasheet pretty much explains what the chip is doing.

I've also looked into how OpenBSD handles that issue and they are
using timeouts (callout(9)), but I
was unable to boot the miniroot image successfully.

I don't think callout approach will work, because as soon as the chip
pulls down A20, all the addressing break
and the CPU will execute wrong code.

Any ideas?


Home | Main Index | Thread Index | Old Index