Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Nov 2011 08:25:17 -0800
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        =?iso-8859-1?Q?Marc_L=F6rner?= <loerner@gmx.de>
Cc:        freebsd-ia64@freebsd.org
Subject:   Re: Booting 9.0 RC2
Message-ID:  <E2E0A7B4-2E77-41CB-8F88-0651D54DF613@xcllnt.net>
In-Reply-To: <20111117104937.192340@gmx.net>
References:  <20111117104937.192340@gmx.net>

next in thread | previous in thread | raw e-mail | index | archive | help

On Nov 17, 2011, at 2:49 AM, Marc L=F6rner wrote:

> Hello Marcel,
> good news: loader starts now.
>=20
> Unfortunately I got the same problems that you have with =
Machine-Checks on
> the early booting stage with GENERIC.
>=20
> I did some investigation in code and code-changes and I probably found =
the
> cause:=20
> In __start (locore.S) you try to store PA of bootinfo block to =
pa_bootinfo
> which seems to reside in kernel-text space
> =3D> DATA-ACCESS-RIGHTS fault because text-space is pinned in DTR with =
AR_RX.
> (c.f. mmu_setup_paged calling mmu_wire in the loader code)

Yup. I fixed the the loader already. I played with having the kernel
apply relocations with translation disabled, but for some reason that
didn't work, so I'll leave the whole kernel text mapped RX for later.

> After changing this kernel started, at least I now got output on =
console.
>=20
> Unfortunately the next hang is in sapic_create accessing =
sa->sa_register
> which seems to be NULL, at least I got NULL as returnvalue of =
pmap_mapdev.

I tightened the pmap_mapdev function to make sure we don't mix and
match cached vs uncached accesses. The function now expects the
memory to be described in the EFI memory map. You should have gotten
a message about that. Either "... not covered by memory descriptor"
or "... is in DRAM". I assume the first, for which the following
helps:

Index: ia64/ia64/pmap.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- ia64/ia64/pmap.c    (.../head/sys)  (revision 225405)
+++ ia64/ia64/pmap.c    (.../projects/altix/sys)        (revision =
227522)
@@ -2261,7 +2261,7 @@
        if (md =3D=3D NULL) {
                printf("%s: [%#lx..%#lx] not covered by memory =
descriptor\n",
                    __func__, pa, pa + sz - 1);
-               return (NULL);
+               return ((void *)IA64_PHYS_TO_RR6(pa));
        }
=20
        if (md->md_type =3D=3D EFI_MD_TYPE_FREE) {


BTW: Do you have the latest firmware?

> Hope this helps to get FreeBSD GENERIC working again on Montecito =
platforms,

It's wasn't broken in such generic terms. I have Montecito and Montvale
machines and FreeBSD works on them for the most part :-)

There are still some known issues, but in general we're getting better
with every release.

--=20
Marcel Moolenaar
marcel@xcllnt.net





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E2E0A7B4-2E77-41CB-8F88-0651D54DF613>