How does one tell where DMAP addresses should not appear when looking around via kgdb?

From: Mark Millard <marklmi_at_yahoo.com>
Date: Mon, 16 Dec 2024 19:29:11 UTC
In:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267028

I wrote about an example that is part of what prompts the
more general question . . .

--- Comment #241 from Mark Millard <marklmi26-fbsd@yahoo.com> ---
One of the older ("obsolete") crash dump reports is
for:

/*
 *      free:
 * 
 *      Free a block of memory allocated by malloc.
 * 
 *      This routine may not block.
 */
void
free(void *addr, struct malloc_type *mtp)
{
        uma_zone_t zone;
        uma_slab_t slab;
        u_long size;

#ifdef MALLOC_DEBUG
        if (free_dbg(&addr, mtp) != 0)
                return;
#endif
        /* free(NULL, ...) does nothing */
        if (addr == NULL)
                return;

        vtozoneslab((vm_offset_t)addr & (~UMA_SLAB_MASK), &zone, &slab);
. . .

where addr ended up being 0xfffff80000000007 , in other words
PHYS_TO_DMAP(0x7). The (vm_offset_t)addr & (~UMA_SLAB_MASK)
turned it into 0xfffff80000000000 for vtozoneslab. That in
turn reported a failure.

The presence of a NULL check in the kernel's free suggests to me that
the kernel's free may not be intended to handle DMAP addresses.
Similarly for other kernel code that checks against NULL but not
against PHYS_TO_DMAP(NULL).

How does one tell where DMAP addresses should not appear when
looking around via kgdb?

===
Mark Millard
marklmi at yahoo.com