svn commit: r316767 - head/sys/amd64/amd64
Alexey Dokuchaev
danfe at FreeBSD.org
Sat Jun 10 23:51:26 UTC 2017
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);
More information about the svn-src-all
mailing list