Index | Thread | Search

From:
Mark Kettenis <mark.kettenis@xs4all.nl>
Subject:
Re: Double pmap_clear_reference()
To:
Martin Pieuchot <mpi@grenadille.net>
Cc:
tech@openbsd.org
Date:
Mon, 23 Dec 2024 10:58:58 +0100

Download raw body.

Thread
> Date: Mon, 23 Dec 2024 10:28:57 +0100
> From: Martin Pieuchot <mpi@grenadille.net>
> 
> uvm_pagedeactivate() already calls pmap_clear_reference() when a page is
> placed on the inactive queue.  Do not call it twice.
> 
> ok?

That would save a bit of unnecessary pmap locking...

99% sure this is indeed correct.

ok kettenis@

> Index: uvm/uvm_anon.c
> ===================================================================
> RCS file: /cvs/src/sys/uvm/uvm_anon.c,v
> diff -u -p -r1.59 uvm_anon.c
> --- uvm/uvm_anon.c	26 Nov 2024 10:10:28 -0000	1.59
> +++ uvm/uvm_anon.c	23 Dec 2024 09:26:18 -0000
> @@ -202,7 +202,6 @@ uvm_anon_pagein(struct vm_amap *amap, st
>  	/*
>  	 * Deactivate the page (to put it on a page queue).
>  	 */
> -	pmap_clear_reference(pg);
>  	pmap_page_protect(pg, PROT_NONE);
>  	uvm_lock_pageq();
>  	uvm_pagedeactivate(pg);
> Index: uvm/uvm_aobj.c
> ===================================================================
> RCS file: /cvs/src/sys/uvm/uvm_aobj.c,v
> diff -u -p -r1.113 uvm_aobj.c
> --- uvm/uvm_aobj.c	20 Dec 2024 18:49:37 -0000	1.113
> +++ uvm/uvm_aobj.c	23 Dec 2024 09:26:22 -0000
> @@ -1411,7 +1411,6 @@ uao_pagein_page(struct uvm_aobj *aobj, i
>  	/*
>  	 * deactivate the page (to put it on a page queue).
>  	 */
> -	pmap_clear_reference(pg);
>  	uvm_lock_pageq();
>  	uvm_pagedeactivate(pg);
>  	uvm_unlock_pageq();
> 
> 
>