Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Oct 2021 02:54:33 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: ce21d4bff1bc - main - amd64 efirt: do not flush cache for runtime pages
Message-ID:  <202110060254.1962sXka087660@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=ce21d4bff1bc7e562471eeab6fb012b35029bf50

commit ce21d4bff1bc7e562471eeab6fb012b35029bf50
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2021-10-05 14:14:11 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2021-10-06 02:53:20 +0000

    amd64 efirt: do not flush cache for runtime pages
    
    We actually do not know is it safe or not to flush cache for random
    BAR/register page existing in the system.  It is well-known that for
    instance LAPICs cannot tolerate cache flush.  As report indicates,
    there are more such devices.
    
    This issue typically affects AMD machines which do not report self-snoop,
    causing real CLFLUSH invocation on the mapped pages.  Intels do self-snoop,
    so this change should be nop for them, and unsafe devices, if any, are
    already ignored.
    
    Reported and tested by: manu
    Reviewed by:    alc, markj
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Differential revision:  https://reviews.freebsd.org/D32318
---
 sys/amd64/amd64/efirt_machdep.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/amd64/amd64/efirt_machdep.c b/sys/amd64/amd64/efirt_machdep.c
index 6fb64816385e..6fffd113f868 100644
--- a/sys/amd64/amd64/efirt_machdep.c
+++ b/sys/amd64/amd64/efirt_machdep.c
@@ -254,7 +254,7 @@ efi_create_1t1_map(struct efi_md *map, int ndesc, int descsz)
 				vm_page_init_page(m, va, -1);
 				m->order = VM_NFREEORDER + 1; /* invalid */
 				m->pool = VM_NFREEPOOL + 1; /* invalid */
-				pmap_page_set_memattr(m, mode);
+				pmap_page_set_memattr_noflush(m, mode);
 			}
 		}
 		VM_OBJECT_WUNLOCK(obj_1t1_pt);



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