NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: port-sparc/57623: pv_flushcache4m called with bogus vm_page
The following reply was made to PR port-sparc/57623; it has been noted by GNATS.
From: Martin Husemann <martin%duskware.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: port-sparc/57623: pv_flushcache4m called with bogus vm_page
Date: Thu, 21 Sep 2023 17:51:31 +0200
I got another one and looked a bit deeper:
0xf003dc88 is in pmap_copy_page4m (../../../../arch/sparc/sparc/pmap.c:7212).
7207 int spte, dpte;
7208
7209 kpreempt_disable();
7210 if ((pg = PHYS_TO_VM_PAGE(src)) != NULL) {
7211 if (CACHEINFO.c_vactype == VAC_WRITEBACK)
7212 pv_flushcache4m(pg);
7213 }
7214
7215 spte = SRMMU_TEPTE | SRMMU_PG_C | PPROT_N_RX |
7216 (src >> SRMMU_PPNPASHIFT);
In the case I caught in ddb I have src=0x11f800 and dst=0x79a7000,
ddb says:
db{1}> mach page 0x79a7000
pa 79a7000 pg 0xf09b0b40
db{1}> mach page 0x11f800
pa 11f800 pg 0x0
and the call comes from:
0xf029c2bc is in uvmfault_promote (../../../../uvm/uvm_fault.c:648).
643 */
644 if (opg) {
645 pmap_remove(vm_map_pmap(ufi->orig_map), ufi->orig_rvaddr,
646 ufi->orig_rvaddr + PAGE_SIZE);
647 pmap_update(vm_map_pmap(ufi->orig_map));
648 uvm_pagecopy(opg, pg);
.. so opg was != NULL but now is not mapped anymore, which explains why we
can't copy it over.
Martin
Home |
Main Index |
Thread Index |
Old Index