Re: PR 252541: Early kernel panic on RPi4B (Too many early devmatch mappings)

Mark Millard via freebsd-arm <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>

On 2021-Jan-12, at 00:38, Gordon Bergling <gbe at freebsd.org> wrote:

> On Tue, Jan 12, 2021 at 12:16:30AM -0800, Mark Millard via freebsd-arm wrote:
>> On 2021-Jan-11, at 23:13, Klaus Küchemann <maciphone2 at googlemail.com> wrote:
>>>> Am 12.01.2021 um 07:42 schrieb Mark Millard via freebsd-arm <[email protected]>:
>>>> 
>>>> Also, my context was a amd64->aarch64 cross-build
>>>> instead of being an aarch64 native build.…….src.conf like file, make.conf …...
>>> 
>>> I have compiled directly on the RPI with nonexistent src.conf/make.conf & standard kernconfs,
>>> no problems .
>> 
>> Good to know what you used for such files and the build machine.
>> 
>> We do not have builds of the same source version yet. I will not
>> get to it tonight, but I will hopefully later try to build the
>> version that you identified and see what I get for different
>> variations in how to build that source version to produce debug
>> kernel builds. (I might include the two printf's that report
>> the figures that the KASSERT is based on.)
>> 
>> ===
>> Mark Millard
>> marklmi at yahoo.com
>> ( dsl-only.net went
>> away in early 2018-Mar)
> 
> Hi Mark,
> 
> thanks for your work on that issue. I have some spare time today and will try some combinations
> about NO INVARIANTS and so on. My src.conf is the following,

For non-_STANDALONE contexts . . .

KASSERT's only turn into do-something code when INVARIANTS
is in use in the kernel build:

#if defined(INVARIANTS) || defined(_STANDALONE)
#define KASSERT(exp,msg) do {                                           \
        if (__predict_false(!(exp)))                                    \
                kassert_panic msg;                                      \
} while (0)
#else /* !INVARIANTS && !_STANDALONE */
#define KASSERT(exp,msg) do { \
} while (0)
#endif /* INVARIANTS || _STANDALONE */

But even when INVARIANTS is in use, there is a way to
make KASSERT's report but not panic: KASSERT_PANIC_OPTIONAL
and the resulting kassert_panic definition:

#if defined(_STANDALONE)
struct ucred;
/*
 * Until we have more experience with KASSERTS that are called
 * from the boot loader, they are off. The bootloader does this
 * a little differently than the kernel (we just call printf atm).
 * we avoid most of the common functions in the boot loader, so
 * declare printf() here too.
 */
int     printf(const char *, ...) __printflike(1, 2);
#  define kassert_panic printf
#else /* !_STANDALONE */
#  if defined(WITNESS) || defined(INVARIANT_SUPPORT)
#    ifdef KASSERT_PANIC_OPTIONAL
void    kassert_panic(const char *fmt, ...)  __printflike(1, 2);
#    else
#      define kassert_panic     panic
#    endif /* KASSERT_PANIC_OPTIONAL */
#  endif /* defined(WITNESS) || defined(INVARIANT_SUPPORT) */
#endif /* _STANDALONE */

But I've no clue what all might be broken when the
issue does not panic. (So: true of my non-debug
builds.)

> ---------------------------
> WITH_MALLOC_PRODUCTION=1
> WITH_EXTRA_TCP_STACKS=1
> WITH_BEARSSL=1
> WITH_PIE=1
> WITH_RETPOLINE=1
> WITHOUT_CLEAN=1
> ---------------------------

The WITHOUT_CLEAN can lead to oddities. It might be worth
a from-scratch build to see if it gets the same result.

I happened to have started from an empty build tree because
because I do not normally keep a debug kernel build tree
around. So my WITH_META_MODE in teh build script should not
have made a difference.

> I know that the change itselfs doesn't seems to be significant, but it was the
> first that has triggered the panic. Maybe it is also the u-boot.bin, I haven't
> updated them since the July.

u-boot and the loader have both finished and the kernel is
starting from what I've seen. So if u-boot or the loader
is involved, it is via data left over after they finished.

> I'll keep you posted.

Thanks. Me too.

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

_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-arm
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.