Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Mar 2015 03:22:52 -0700
From:      Mark Millard <markmi@dsl-only.net>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   10.1-STABLE kern.vty=vt crashes PowerMac G5 extremely early in boot for 2560x1440 display...
Message-ID:  <8B7B5167-0C94-4BA3-9515-B4CB8A817BDB@dsl-only.net>

next in thread | raw e-mail | index | archive | help
Basic context:

$ freebsd-version -ku; uname -a
10.1-STABLE
10.1-STABLE
FreeBSD FBSDG5S0 10.1-STABLE FreeBSD 10.1-STABLE #0 r279507M: Fri Mar  6 =
23:08:59 PST 2015     root@FBSDG5S0:/usr/obj/usr/src/sys/GENERIC64vtsc  =
powerpc


The crash details (X11 is not part of the context, just console use):

I tried using a 2560x1440 display with a PowerMac G5 but forgot to =
switch from kern.vty=3Dvt to kern.vty=3Dsc in /boot/loader.conf first.

But the result was new since the last time I'd done such a thing (long =
ago)...

It crashed so early that it returned to Apple's OpenFirmware.

That allowed me to use .registers in OpenFirmware to find where it had =
crashed at.

It turned out that the Interrupt Vector was 0x700 and SRR0 was 0x380. =
(Openfirmare does not put an exception handler at 0x380 (leaving zeros) =
so a 0x380 exception handler's attempted use leads to a double fault =
when OpenFirmware's handlers are all that are in place, the 2nd of the =
pair going to the 0x700 exception handler.)

Luckily LR is preserved in this sequence and it ended up pointing to:

vtbuf_init_early+0x78 (0x40787c was the address for the build)

and that was the instruction after a bl to .vtbuf_fill.

This was fully repeatable.


As conformation of the size dependency: Switching to a smaller display =
booted fine (again fully repeatable).


I'll note that kern.vty=3Dsc handles the 2560x1440 display fine for that =
same PowerMac G5. sc uses most but not all of the width and it uses all =
of the height.


Other context details:

$ cd /usr/src
$ svnlite info
Path: .
Working Copy Root Path: /usr/src
URL: https://svn0.us-west.freebsd.org/base/stable/10
Relative URL: ^/stable/10
Repository Root: https://svn0.us-west.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 279507
Node Kind: directory
Schedule: normal
Last Changed Author: ngie
Last Changed Rev: 279507
Last Changed Date: 2015-03-01 14:12:24 -0800 (Sun, 01 Mar 2015)

$ svnlite st --no-ignore
?       .snap
?       restoresymtable
M       sys/ddb/db_main.c
M       sys/ddb/db_script.c
I       sys/powerpc/conf/GENERIC64vtsc
I       sys/powerpc/conf/GENERICvtsc
M       sys/powerpc/ofw/ofw_machdep.c
M       sys/powerpc/ofw/ofwcall64.S
M       sys/powerpc/powerpc/dump_machdep.c

sys/powerpc/ofw/ofw_machdep.c has a PowerMac G5 specific change to avoid =
intermittent boot problems.

sys/ddb/... and sys/powerpc/ofw/ofwcall64.S are just to help me get =
evidence if I do end up with another early-boot failure. DDB and GDB are =
listed in sys/powerpc/conf/GENERIC64vtsc for the same reason.

sys/powerpc/powerpc/dump_machdep.c is from me forcing the DMA transfer =
size for dumps to be small enough not to be rejected as too large of a =
DMA request size.

sys/powerpc/conf/GENERIC64vtsc turns off ps3 in order to turn on both vt =
and sc. It includes the standard GENERIC64.

# more /etc/make.conf
#CPP=3Dclang-cpp
#CC=3Dclang
#CXX=3Dclang++
WRKDIRPREFIX=3D/usr/obj/portswork
WITH_DEBUG=3D
MALLOC_PRODUCTION=3D

# more /etc/src.conf
#CPP=3Dclang-cpp
#CC=3Dclang
#CXX=3Dclang++
#CFLAGS+=3D-DELF_VERBOSE
#WITH_DEBUG_FILES=3D
#WITHOUT_CLANG

=3D=3D=3D
Mark Millard
markmi at dsl-only.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8B7B5167-0C94-4BA3-9515-B4CB8A817BDB>