From owner-svn-src-all@freebsd.org Tue Jul 7 20:33:13 2020 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 59DB134C58C; Tue, 7 Jul 2020 20:33:13 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4B1YzY1jvfz45QW; Tue, 7 Jul 2020 20:33:13 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1EDE615062; Tue, 7 Jul 2020 20:33:13 +0000 (UTC) (envelope-from scottl@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 067KXD0l029719; Tue, 7 Jul 2020 20:33:13 GMT (envelope-from scottl@FreeBSD.org) Received: (from scottl@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 067KXC9V029714; Tue, 7 Jul 2020 20:33:12 GMT (envelope-from scottl@FreeBSD.org) Message-Id: <202007072033.067KXC9V029714@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: scottl set sender to scottl@FreeBSD.org using -f From: Scott Long Date: Tue, 7 Jul 2020 20:33:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r362998 - in head: stand/defaults sys/amd64/amd64 sys/powerpc/aim sys/vm X-SVN-Group: head X-SVN-Commit-Author: scottl X-SVN-Commit-Paths: in head: stand/defaults sys/amd64/amd64 sys/powerpc/aim sys/vm X-SVN-Commit-Revision: 362998 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2020 20:33:13 -0000 Author: scottl Date: Tue Jul 7 20:33:11 2020 New Revision: 362998 URL: https://svnweb.freebsd.org/changeset/base/362998 Log: Migrate the feature of excluding RAM pages to use "excludelist" as its nomenclature. MFC after: 1 week Modified: head/stand/defaults/loader.conf head/sys/amd64/amd64/pmap.c head/sys/powerpc/aim/mmu_radix.c head/sys/vm/vm_page.c head/sys/vm/vm_page.h Modified: head/stand/defaults/loader.conf ============================================================================== --- head/stand/defaults/loader.conf Tue Jul 7 19:09:38 2020 (r362997) +++ head/stand/defaults/loader.conf Tue Jul 7 20:33:11 2020 (r362998) @@ -49,12 +49,12 @@ entropy_cache_type="boot_entropy_cache" # Required for # must not change value even if the # _name above does change! -### RAM Blacklist configuration ############################ -ram_blacklist_load="NO" # Set this to YES to load a file +### RAM Excludelist configuration ############################ +ram_excludelist_load="NO" # Set this to YES to load a file # containing a list of addresses to # exclude from the running system. -ram_blacklist_name="/boot/blacklist.txt" # Set this to the name of the file -ram_blacklist_type="ram_blacklist" # Required for the kernel to find +ram_excludeist_name="/boot/excludelist.txt" # Set this to the name of the file +ram_excludelist_type="ram_excludelist" # Required for the kernel to find # the blacklist module ### Microcode loading configuration ######################## Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Tue Jul 7 19:09:38 2020 (r362997) +++ head/sys/amd64/amd64/pmap.c Tue Jul 7 20:33:11 2020 (r362998) @@ -2060,7 +2060,7 @@ pmap_init(void) int error, i, ret, skz63; /* L1TF, reserve page @0 unconditionally */ - vm_page_blacklist_add(0, bootverbose); + vm_page_excludelist_add(0, bootverbose); /* Detect bare-metal Skylake Server and Skylake-X. */ if (vm_guest == VM_GUEST_NO && cpu_vendor_id == CPU_VENDOR_INTEL && @@ -2081,7 +2081,7 @@ pmap_init(void) printf("SKZ63: skipping 4M RAM starting " "at physical 1G\n"); for (i = 0; i < atop(0x400000); i++) { - ret = vm_page_blacklist_add(0x40000000 + + ret = vm_page_excludelist_add(0x40000000 + ptoa(i), FALSE); if (!ret && bootverbose) printf("page at %#lx already used\n", Modified: head/sys/powerpc/aim/mmu_radix.c ============================================================================== --- head/sys/powerpc/aim/mmu_radix.c Tue Jul 7 19:09:38 2020 (r362997) +++ head/sys/powerpc/aim/mmu_radix.c Tue Jul 7 20:33:11 2020 (r362998) @@ -3557,7 +3557,7 @@ mmu_radix_init() int error, i, pv_npg; /* L1TF, reserve page @0 unconditionally */ - vm_page_blacklist_add(0, bootverbose); + vm_page_excludelist_add(0, bootverbose); zone_radix_pgd = uma_zcache_create("radix_pgd_cache", RADIX_PGD_SIZE, NULL, NULL, Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Tue Jul 7 19:09:38 2020 (r362997) +++ head/sys/vm/vm_page.c Tue Jul 7 20:33:11 2020 (r362998) @@ -155,10 +155,11 @@ vm_page_t vm_page_array; long vm_page_array_size; long first_page; -static TAILQ_HEAD(, vm_page) blacklist_head; -static int sysctl_vm_page_blacklist(SYSCTL_HANDLER_ARGS); -SYSCTL_PROC(_vm, OID_AUTO, page_blacklist, CTLTYPE_STRING | CTLFLAG_RD | - CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_page_blacklist, "A", "Blacklist pages"); +static TAILQ_HEAD(, vm_page) excludelist_head; +static int sysctl_vm_page_excludelist(SYSCTL_HANDLER_ARGS); +SYSCTL_PROC(_vm, OID_AUTO, page_excludelist, CTLTYPE_STRING | CTLFLAG_RD | + CTLFLAG_MPSAFE, NULL, 0, sysctl_vm_page_excludelist, "A", + "Blacklist pages"); static uma_zone_t fakepg_zone; @@ -258,16 +259,16 @@ vm_set_page_size(void) } /* - * vm_page_blacklist_next: + * vm_page_excludelist_next: * - * Find the next entry in the provided string of blacklist + * Find the next entry in the provided string of excludelist * addresses. Entries are separated by space, comma, or newline. * If an invalid integer is encountered then the rest of the * string is skipped. Updates the list pointer to the next * character, or NULL if the string is exhausted or invalid. */ static vm_paddr_t -vm_page_blacklist_next(char **list, char *end) +vm_page_excludelist_next(char **list, char *end) { vm_paddr_t bad; char *cp, *pos; @@ -314,13 +315,13 @@ vm_page_blacklist_next(char **list, char *end) *list = cp; return (trunc_page(bad)); } - printf("Garbage in RAM blacklist, skipping\n"); + printf("Garbage in RAM excludelist, skipping\n"); *list = NULL; return (0); } bool -vm_page_blacklist_add(vm_paddr_t pa, bool verbose) +vm_page_excludelist_add(vm_paddr_t pa, bool verbose) { struct vm_domain *vmd; vm_page_t m; @@ -336,7 +337,7 @@ vm_page_blacklist_add(vm_paddr_t pa, bool verbose) vm_domain_free_unlock(vmd); if (ret != 0) { vm_domain_freecnt_inc(vmd, -1); - TAILQ_INSERT_TAIL(&blacklist_head, m, listq); + TAILQ_INSERT_TAIL(&excludelist_head, m, listq); if (verbose) printf("Skipping page with pa 0x%jx\n", (uintmax_t)pa); } @@ -344,35 +345,35 @@ vm_page_blacklist_add(vm_paddr_t pa, bool verbose) } /* - * vm_page_blacklist_check: + * vm_page_excludelist_check: * - * Iterate through the provided string of blacklist addresses, pulling + * Iterate through the provided string of excludelist addresses, pulling * each entry out of the physical allocator free list and putting it - * onto a list for reporting via the vm.page_blacklist sysctl. + * onto a list for reporting via the vm.page_excludelist sysctl. */ static void -vm_page_blacklist_check(char *list, char *end) +vm_page_excludelist_check(char *list, char *end) { vm_paddr_t pa; char *next; next = list; while (next != NULL) { - if ((pa = vm_page_blacklist_next(&next, end)) == 0) + if ((pa = vm_page_excludelist_next(&next, end)) == 0) continue; - vm_page_blacklist_add(pa, bootverbose); + vm_page_excludelist_add(pa, bootverbose); } } /* - * vm_page_blacklist_load: + * vm_page_excludelist_load: * - * Search for a special module named "ram_blacklist". It'll be a + * Search for a special module named "ram_excludelist". It'll be a * plain text file provided by the user via the loader directive * of the same name. */ static void -vm_page_blacklist_load(char **list, char **end) +vm_page_excludelist_load(char **list, char **end) { void *mod; u_char *ptr; @@ -381,7 +382,7 @@ vm_page_blacklist_load(char **list, char **end) mod = NULL; ptr = NULL; - mod = preload_search_by_type("ram_blacklist"); + mod = preload_search_by_type("ram_excludelist"); if (mod != NULL) { ptr = preload_fetch_addr(mod); len = preload_fetch_size(mod); @@ -395,7 +396,7 @@ vm_page_blacklist_load(char **list, char **end) } static int -sysctl_vm_page_blacklist(SYSCTL_HANDLER_ARGS) +sysctl_vm_page_excludelist(SYSCTL_HANDLER_ARGS) { vm_page_t m; struct sbuf sbuf; @@ -406,7 +407,7 @@ sysctl_vm_page_blacklist(SYSCTL_HANDLER_ARGS) if (error != 0) return (error); sbuf_new_for_sysctl(&sbuf, NULL, 128, req); - TAILQ_FOREACH(m, &blacklist_head, listq) { + TAILQ_FOREACH(m, &excludelist_head, listq) { sbuf_printf(&sbuf, "%s%#jx", first ? "" : ",", (uintmax_t)m->phys_addr); first = 0; @@ -793,14 +794,14 @@ vm_page_startup(vm_offset_t vaddr) } /* - * Remove blacklisted pages from the physical memory allocator. + * Remove excludelisted pages from the physical memory allocator. */ - TAILQ_INIT(&blacklist_head); - vm_page_blacklist_load(&list, &listend); - vm_page_blacklist_check(list, listend); + TAILQ_INIT(&excludelist_head); + vm_page_excludelist_load(&list, &listend); + vm_page_excludelist_check(list, listend); - list = kern_getenv("vm.blacklist"); - vm_page_blacklist_check(list, NULL); + list = kern_getenv("vm.excludelist"); + vm_page_excludelist_check(list, NULL); freeenv(list); #if VM_NRESERVLEVEL > 0 Modified: head/sys/vm/vm_page.h ============================================================================== --- head/sys/vm/vm_page.h Tue Jul 7 19:09:38 2020 (r362997) +++ head/sys/vm/vm_page.h Tue Jul 7 20:33:11 2020 (r362998) @@ -613,7 +613,7 @@ vm_page_t vm_page_alloc_contig_domain(vm_object_t obje vm_page_t vm_page_alloc_freelist(int, int); vm_page_t vm_page_alloc_freelist_domain(int, int, int); void vm_page_bits_set(vm_page_t m, vm_page_bits_t *bits, vm_page_bits_t set); -bool vm_page_blacklist_add(vm_paddr_t pa, bool verbose); +bool vm_page_excludelist_add(vm_paddr_t pa, bool verbose); vm_page_t vm_page_grab(vm_object_t, vm_pindex_t, int); vm_page_t vm_page_grab_unlocked(vm_object_t, vm_pindex_t, int); int vm_page_grab_pages(vm_object_t object, vm_pindex_t pindex, int allocflags,