> So, I found a suspicious place, added printfs, triggered the bug again
> and voila, I think I got it.
[...]
> There are more places in that pmap where we explicitly check for zero
> and not for being valid. Unfortunately this place was missed.
>
> Patrick
>
> diff --git a/sys/arch/arm/arm/pmap7.c b/sys/arch/arm/arm/pmap7.c
> index 0d32bf9..e965c48 100644
> --- a/sys/arch/arm/arm/pmap7.c
> +++ b/sys/arch/arm/arm/pmap7.c
> @@ -1155,7 +1155,7 @@ pmap_page_remove(struct vm_page *pg)
> KDASSERT(l2b != NULL);
>
> ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)];
> - if (l2pte_valid(*ptep)) {
> + if (*ptep != 0) {
> pte = *ptep;
>
> /* inline pmap_is_current(pm) */
>
With this patch, my BBB no longer trigers uvm_fault in trying to
compile arm-none-eabi-gcc-linaro.
--
Mattieu Baptiste
"/earth is 102% full ... please delete anyone you can."