Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 May 2019 14:40:46 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, Justin Hibbits <chmeeedalf@gmail.com>
Subject:   kernel mode EXC_DSE handling depends on td->td_pcb-> not slb faulting in setting up its slbmte use?
Message-ID:  <F5A63B10-9225-4EB7-8C7A-0B66E8965047@yahoo.com>

next in thread | raw e-mail | index | archive | help
/usr/src/sys/powerpc/powerpc/trap.c has:

        } else {
                /* Kernel Mode Traps */

                KASSERT(cold || td->td_ucred !=3D NULL,
                    ("kernel trap doesn't have ucred"));
                switch (type) {
. . .
#if defined(__powerpc64__) && defined(AIM)
                case EXC_DSE:
                        if (td->td_pcb->pcb_cpu.aim.usr_vsid !=3D 0 &&
                            (frame->dar & SEGMENT_MASK) =3D=3D =
USER_ADDR) {
                                __asm __volatile ("slbmte %0, %1" ::
                                        =
"r"(td->td_pcb->pcb_cpu.aim.usr_vsid),
                                        "r"(USER_SLB_SLBE));
                                return;
                        }
                        break;
#endif

in trap(...).

If the kernel mode EXC_DSE code got a slb fault from
td->td_pcb-> would things still be okay? (Nested trap
handling.)

If not, does something need to be done to guarantee
that td->td_pcb-> will not have an slb fault in the
above code?


=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F5A63B10-9225-4EB7-8C7A-0B66E8965047>