Re: svn commit: r360233 - in head: contrib/jemalloc . . . : This partially breaks a 2-socket 32-bit powerpc (old PowerMac G4) based on head -r360311
Brandon Bergren
bdragon at FreeBSD.org
Sun Jun 28 00:03:00 UTC 2020
On Sat, Jun 27, 2020, at 5:32 PM, Mark Millard wrote:
> where moea64_pvo_remove_from_page involves
> vm_page_aflag_clear(????,PGA_WRITEABLE | PGA_EXECUTABLE) via:
>
> static inline void
> moea64_pvo_remove_from_page_locked(mmu_t mmu, struct pvo_entry *pvo,
> vm_page_t m)
> {
>
> . . .
> /*
> * Update vm about page writeability/executability if managed
> */
> PV_LOCKASSERT(pvo->pvo_pte.pa & LPTE_RPGN);
> if (pvo->pvo_vaddr & PVO_MANAGED) {
> if (m != NULL) {
> LIST_REMOVE(pvo, pvo_vlink);
> if (LIST_EMPTY(vm_page_to_pvoh(m)))
> vm_page_aflag_clear(m,
> PGA_WRITEABLE | PGA_EXECUTABLE);
> }
> }
> . . .
> }
>
> But 32-bit has/uses:
>
> static void mmu_null_remove_pages(mmu_t mmu, pmap_t pmap)
> {
> return;
> }
>
>
> so it does not involve:
>
> vm_page_aflag_clear(????,PGA_WRITEABLE | PGA_EXECUTABLE)
>
> but apparently should involve such in order to pass:
>
> KASSERT((m->a.flags & (PGA_EXECUTABLE | PGA_WRITEABLE)) == 0,
> ("vm_page_free_prep: mapping flags set in page %p", m));
>
looking at the history of the 64 bit code:
r233017 -- "Implement pmap_remove_pages(). This will be added later to the 32-bit MMU module."
Oops!
--
Brandon Bergren
bdragon at FreeBSD.org
More information about the freebsd-ppc
mailing list