Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Nov 2009 10:32:41 +0200
From:      Andriy Gapon <avg@icyb.net.ua>
To:        Kai Gallasch <gallasch@free.de>
Cc:        freebsd-current@freebsd.org
Subject:   Re: 8.0RC2 amd64 - kernel panic running make buildworld
Message-ID:  <4B025FA9.7020003@icyb.net.ua>
In-Reply-To: <4AFE7A32.7060203@icyb.net.ua>
References:  <1031257439203@webmail57.yandex.ru>	<hdc73v$4rt$1@ger.gmane.org>	<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>

next in thread | previous in thread | raw e-mail | index | archive | help
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"


-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B025FA9.7020003>