Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Jun 2017 23:51:25 +0000
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        Konstantin Belousov <kib@FreeBSD.org>
Cc:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r316767 - head/sys/amd64/amd64
Message-ID:  <20170610235125.GA3587@FreeBSD.org>
In-Reply-To: <201704131549.v3DFnt9I004050@repo.freebsd.org>
References:  <201704131549.v3DFnt9I004050@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Apr 13, 2017 at 03:49:55PM +0000, Konstantin Belousov wrote:
> New Revision: 316767
> URL: https://svnweb.freebsd.org/changeset/base/316767
> 
> Log:
>   Map DMAP as nx.
>   
>   Demotions preserve PG_NX, so it is enough to set nx bit for initial
>   lowest-level paging entries.

Hi Kostik,

It seems this change breaks resume with radeonkms(4): my laptop fells into
sleep, but upon resume it immediately reboots with kernels after r316767.

Reverting these two lines fixes resuming at least up to r316986, but the
latest -CURRENT still reboots, perhaps for another reason.

I'll continue my bisecting of higher revisions.  Meanwhile, any ideas?

./danfe

> Modified:
>   head/sys/amd64/amd64/pmap.c
> 
> Modified: head/sys/amd64/amd64/pmap.c
> ==============================================================================
> --- head/sys/amd64/amd64/pmap.c	Thu Apr 13 15:49:32 2017	(r316766)
> +++ head/sys/amd64/amd64/pmap.c	Thu Apr 13 15:49:55 2017	(r316767)
> @@ -933,14 +933,14 @@ create_pagetables(vm_paddr_t *firstaddr)
>  		pd_p[j] = (vm_paddr_t)i << PDRSHIFT;
>  		/* Preset PG_M and PG_A because demotion expects it. */
>  		pd_p[j] |= X86_PG_RW | X86_PG_V | PG_PS | X86_PG_G |
> -		    X86_PG_M | X86_PG_A;
> +		    X86_PG_M | X86_PG_A | pg_nx;
>  	}
>  	pdp_p = (pdp_entry_t *)DMPDPphys;
>  	for (i = 0; i < ndm1g; i++) {
>  		pdp_p[i] = (vm_paddr_t)i << PDPSHIFT;
>  		/* Preset PG_M and PG_A because demotion expects it. */
>  		pdp_p[i] |= X86_PG_RW | X86_PG_V | PG_PS | X86_PG_G |
> -		    X86_PG_M | X86_PG_A;
> +		    X86_PG_M | X86_PG_A | pg_nx;
>  	}
>  	for (j = 0; i < ndmpdp; i++, j++) {
>  		pdp_p[i] = DMPDphys + ptoa(j);



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