Date: Tue, 17 Nov 2009 15:30:32 +0100 From: Attilio Rao <attilio@freebsd.org> To: Andriy Gapon <avg@icyb.net.ua> Cc: freebsd-current@freebsd.org, Kai Gallasch <gallasch@free.de> Subject: Re: 8.0RC2 amd64 - kernel panic running make buildworld Message-ID: <3bbf2fe10911170630l5b1ebbbgb9bba7e73b77b04d@mail.gmail.com> In-Reply-To: <4B025FA9.7020003@icyb.net.ua> References: <1031257439203@webmail57.yandex.ru> <941257966918@webmail42.yandex.ru> <200911111504.14906.jhb@freebsd.org> <20091112195932.5875387e@orwell.free.de> <4AFD140D.7010407@icyb.net.ua> <20091113144804.2c0fb90f@orwell.free.de> <4AFD655E.5020801@icyb.net.ua> <20091114022121.217dd831@orwell.free.de> <4AFE7A32.7060203@icyb.net.ua> <4B025FA9.7020003@icyb.net.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
2009/11/17 Andriy Gapon <avg@icyb.net.ua>: > on 14/11/2009 11:36 Andriy Gapon said the following: >> on 14/11/2009 03:21 Kai Gallasch said the following: >>> Hi. The patch did help for surviving a makeworld. >>> >>> But now I have another machine check exception with this server. It >>> happened with your patch active, and vm.pmap.pg_ps_enabled="1". I >>> copied data from a remote server by NFS mount to the instable server. >>> Destination was a local ZFS filesystem. >>> >>> ---------------- >>> >>> sonnenkraft:~ # MCA: CPU 7 UNCOR PCC OVER DTLB L1 error >>> MCA: Address 0xff800d860000 >> >> It's interesting because the same happened to me too, only in my case it was >> zpool scrub that triggered it. >> I will try to look into this further. >> > > Kai, > > the latest patch in the works, it's against a clean tree: > > diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c > index 44b71f3..ff35eb9 100644 > --- a/sys/amd64/amd64/pmap.c > +++ b/sys/amd64/amd64/pmap.c > @@ -2365,6 +2365,9 @@ pmap_demote_pde > * the read above and the store below. > */ > pde_store(pde, newpde); > + pmap_invalidate_page(pmap, va); > + clflush((vm_offset_t)vtopde(va)); > + mfence(); > > /* > * Invalidate a stale recursive mapping of the page table page. > @@ -2981,6 +2984,11 @@ setpte: > * Map the superpage. > */ > pde_store(pde, PG_PS | newpde); > + pmap_invalidate_range(pmap, va & ~PDRMASK, (va & ~PDRMASK) + NBPDR); > + clflush((vm_offset_t)vtopde(va)); > + mfence(); > + if (va >= VM_MAXUSER_ADDRESS) > + pmap_invalidate_page(pmap, (vm_offset_t)vtopte(va)); > > pmap_pde_promotions++; > CTR2(KTR_PMAP, "pmap_promote_pde: success for va %#lx" > I think you should use mb() rather than mfence(). Thanks, Attilio -- Peace can only be achieved by understanding - A. Einstein
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3bbf2fe10911170630l5b1ebbbgb9bba7e73b77b04d>