Date: Wed, 13 Jan 2021 17:35:22 -0400 From: Mitchell Horne <mhorne063@gmail.com> To: Mitchell Horne <mhorne@freebsd.org> Cc: src-committers <src-committers@freebsd.org>, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org Subject: Re: git: 818390ce0ca5 - main - arm64: fix early devmap assertion Message-ID: <CADeAsy3jhatg_MN1MPaGg7sDyeKhVyNd0EDaySsbH5m2fb9e2Q@mail.gmail.com> In-Reply-To: <202101132128.10DLS8ZH018542@gitrepo.freebsd.org> References: <202101132128.10DLS8ZH018542@gitrepo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 13, 2021 at 5:28 PM Mitchell Horne <mhorne@freebsd.org> wrote: > > The branch main has been updated by mhorne: > > URL: https://cgit.FreeBSD.org/src/commit/?id=818390ce0ca539300dd15d7a817784f1e3f7a9b8 > > commit 818390ce0ca539300dd15d7a817784f1e3f7a9b8 > Author: Mitchell Horne <mhorne@FreeBSD.org> > AuthorDate: 2021-01-13 18:30:50 +0000 > Commit: Mitchell Horne <mhorne@FreeBSD.org> > CommitDate: 2021-01-13 21:27:44 +0000 > > arm64: fix early devmap assertion > > The purpose of this KASSERT is to ensure that we do not run out of space > in the early devmap. However, the devmap grew beyond its initial size of > 2MB in r336519, and this assertion did not grow with it. > > A devmap mapping of a 1080p framebuffer requires 1920x1080 bytes, or > 1.977 MB, so it is just barely able to fit without triggering the > assertion, provided no other devices are mapped before it. With the > addition of `options GDB` in GENERIC by bbfa199cbc16, the uart is now > mapped for the purposes of a debug port, before mapping the framebuffer. > The presence of both these conditions pushes the selected virtual > address just below the threshold, triggering the assertion. > > To fix this, use the correct size of the devmap, defined by > PMAP_MAPDEV_EARLY_SIZE. Since this code is shared with RISC-V, define > it for that platform as well (although it is a different size). > > PR: 25241 Sigh. This should be PR 252541. Mitchell > Reported by: gbe > MFC after: 3 days > Sponsored by: The FreeBSD Foundation > --- > sys/kern/subr_devmap.c | 2 +- > sys/riscv/include/vmparam.h | 1 + > 2 files changed, 2 insertions(+), 1 deletion(-) > > diff --git a/sys/kern/subr_devmap.c b/sys/kern/subr_devmap.c > index 581e85086f0f..8e07199b7f73 100644 > --- a/sys/kern/subr_devmap.c > +++ b/sys/kern/subr_devmap.c > @@ -275,7 +275,7 @@ pmap_mapdev(vm_offset_t pa, vm_size_t size) > if (early_boot) { > akva_devmap_vaddr = trunc_page(akva_devmap_vaddr - size); > va = akva_devmap_vaddr; > - KASSERT(va >= VM_MAX_KERNEL_ADDRESS - L2_SIZE, > + KASSERT(va >= VM_MAX_KERNEL_ADDRESS - PMAP_MAPDEV_EARLY_SIZE, > ("Too many early devmap mappings")); > } else > #endif > diff --git a/sys/riscv/include/vmparam.h b/sys/riscv/include/vmparam.h > index f3cab1074454..9580ab3e1218 100644 > --- a/sys/riscv/include/vmparam.h > +++ b/sys/riscv/include/vmparam.h > @@ -235,6 +235,7 @@ extern vm_offset_t init_pt_va; > #define ZERO_REGION_SIZE (64 * 1024) /* 64KB */ > > #define DEVMAP_MAX_VADDR VM_MAX_KERNEL_ADDRESS > +#define PMAP_MAPDEV_EARLY_SIZE (L2_SIZE * 2) > > /* > * No non-transparent large page support in the pmap.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADeAsy3jhatg_MN1MPaGg7sDyeKhVyNd0EDaySsbH5m2fb9e2Q>