Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Jul 2020 18:06:48 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        Oliver Pinter <oliver.pntr@gmail.com>
Cc:        Scott Long <scottl@freebsd.org>,  "src-committers@freebsd.org" <src-committers@freebsd.org>,  "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>,  "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r363060 - in head: stand/defaults sys/amd64/amd64 sys/powerpc/aim sys/vm
Message-ID:  <CANCZdfqbhcbxU_pfdXt_bqXf9giR1XvF5KjJCSoFYkym0j%2BrSQ@mail.gmail.com>
In-Reply-To: <CAPjTQNH6z6Z%2BqBC=R18LUfaDHtfBWHuzpZk-6%2BZVXU3BgnTznw@mail.gmail.com>
References:  <202007092238.069McbU4014226@repo.freebsd.org> <CAPjTQNH6z6Z%2BqBC=R18LUfaDHtfBWHuzpZk-6%2BZVXU3BgnTznw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jul 9, 2020 at 4:54 PM Oliver Pinter <oliver.pntr@gmail.com> wrote:

>
>
> On Friday, July 10, 2020, Scott Long <scottl@freebsd.org> wrote:
>
>> Author: scottl
>> Date: Thu Jul  9 22:38:36 2020
>> New Revision: 363060
>> URL: https://svnweb.freebsd.org/changeset/base/363060
>>
>> Log:
>>   Revert r362998, r326999 while a better compatibility strategy is
>> devised.
>>
>> 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     Thu Jul  9 20:55:18 2020
>> (r363059)
>> +++ head/stand/defaults/loader.conf     Thu Jul  9 22:38:36 2020
>> (r363060)
>> @@ -53,7 +53,7 @@ entropy_cache_type="boot_entropy_cache"       #
>> Required for
>>  ram_excludelist_load="NO"              # Set this to YES to load a file
>>                                         # containing a list of addresses
>> to
>>                                         # exclude from the running system.
>> -ram_excludelist_name="/boot/excludelist.txt" # Set this to the name of
>> the file
>> +ram_excludeist_name="/boot/excludelist.txt" # Set this to the name of
>> the file
>
>
> Hi!
>
> This part of the revert seems still broken.
>

I think youre correct. Can you look at
https://reviews.freebsd.org/D25606
please and let me know if you think that's right?

Warner


>
>
>>  ram_excludelist_type="ram_excludelist" # Required for the kernel to find
>>                                         # the blacklist module
>>
>>
>> Modified: head/sys/amd64/amd64/pmap.c
>>
>> ==============================================================================
>> --- head/sys/amd64/amd64/pmap.c Thu Jul  9 20:55:18 2020        (r363059)
>> +++ head/sys/amd64/amd64/pmap.c Thu Jul  9 22:38:36 2020        (r363060)
>> @@ -2060,7 +2060,7 @@ pmap_init(void)
>>         int error, i, ret, skz63;
>>
>>         /* L1TF, reserve page @0 unconditionally */
>> -       vm_page_excludelist_add(0, bootverbose);
>> +       vm_page_blacklist_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_excludelist_add(0x40000000 +
>> +                               ret = vm_page_blacklist_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    Thu Jul  9 20:55:18 2020
>> (r363059)
>> +++ head/sys/powerpc/aim/mmu_radix.c    Thu Jul  9 22:38:36 2020
>> (r363060)
>> @@ -3557,7 +3557,7 @@ mmu_radix_init()
>>         int error, i, pv_npg;
>>
>>         /* L1TF, reserve page @0 unconditionally */
>> -       vm_page_excludelist_add(0, bootverbose);
>> +       vm_page_blacklist_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       Thu Jul  9 20:55:18 2020        (r363059)
>> +++ head/sys/vm/vm_page.c       Thu Jul  9 22:38:36 2020        (r363060)
>> @@ -155,11 +155,10 @@ vm_page_t vm_page_array;
>>  long vm_page_array_size;
>>  long first_page;
>>
>> -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 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 uma_zone_t fakepg_zone;
>>
>> @@ -259,16 +258,16 @@ vm_set_page_size(void)
>>  }
>>
>>  /*
>> - *     vm_page_excludelist_next:
>> + *     vm_page_blacklist_next:
>>   *
>> - *     Find the next entry in the provided string of excludelist
>> + *     Find the next entry in the provided string of blacklist
>>   *     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_excludelist_next(char **list, char *end)
>> +vm_page_blacklist_next(char **list, char *end)
>>  {
>>         vm_paddr_t bad;
>>         char *cp, *pos;
>> @@ -315,13 +314,13 @@ vm_page_excludelist_next(char **list, char *end)
>>                         *list = cp;
>>                 return (trunc_page(bad));
>>         }
>> -       printf("Garbage in RAM excludelist, skipping\n");
>> +       printf("Garbage in RAM blacklist, skipping\n");
>>         *list = NULL;
>>         return (0);
>>  }
>>
>>  bool
>> -vm_page_excludelist_add(vm_paddr_t pa, bool verbose)
>> +vm_page_blacklist_add(vm_paddr_t pa, bool verbose)
>>  {
>>         struct vm_domain *vmd;
>>         vm_page_t m;
>> @@ -337,7 +336,7 @@ vm_page_excludelist_add(vm_paddr_t pa, bool verbose)
>>         vm_domain_free_unlock(vmd);
>>         if (ret != 0) {
>>                 vm_domain_freecnt_inc(vmd, -1);
>> -               TAILQ_INSERT_TAIL(&excludelist_head, m, listq);
>> +               TAILQ_INSERT_TAIL(&blacklist_head, m, listq);
>>                 if (verbose)
>>                         printf("Skipping page with pa 0x%jx\n",
>> (uintmax_t)pa);
>>         }
>> @@ -345,35 +344,35 @@ vm_page_excludelist_add(vm_paddr_t pa, bool verbose)
>>  }
>>
>>  /*
>> - *     vm_page_excludelist_check:
>> + *     vm_page_blacklist_check:
>>   *
>> - *     Iterate through the provided string of excludelist addresses,
>> pulling
>> + *     Iterate through the provided string of blacklist addresses,
>> pulling
>>   *     each entry out of the physical allocator free list and putting it
>> - *     onto a list for reporting via the vm.page_excludelist sysctl.
>> + *     onto a list for reporting via the vm.page_blacklist sysctl.
>>   */
>>  static void
>> -vm_page_excludelist_check(char *list, char *end)
>> +vm_page_blacklist_check(char *list, char *end)
>>  {
>>         vm_paddr_t pa;
>>         char *next;
>>
>>         next = list;
>>         while (next != NULL) {
>> -               if ((pa = vm_page_excludelist_next(&next, end)) == 0)
>> +               if ((pa = vm_page_blacklist_next(&next, end)) == 0)
>>                         continue;
>> -               vm_page_excludelist_add(pa, bootverbose);
>> +               vm_page_blacklist_add(pa, bootverbose);
>>         }
>>  }
>>
>>  /*
>> - *     vm_page_excludelist_load:
>> + *     vm_page_blacklist_load:
>>   *
>> - *     Search for a special module named "ram_excludelist".  It'll be a
>> + *     Search for a special module named "ram_blacklist".  It'll be a
>>   *     plain text file provided by the user via the loader directive
>>   *     of the same name.
>>   */
>>  static void
>> -vm_page_excludelist_load(char **list, char **end)
>> +vm_page_blacklist_load(char **list, char **end)
>>  {
>>         void *mod;
>>         u_char *ptr;
>> @@ -382,7 +381,7 @@ vm_page_excludelist_load(char **list, char **end)
>>         mod = NULL;
>>         ptr = NULL;
>>
>> -       mod = preload_search_by_type("ram_excludelist");
>> +       mod = preload_search_by_type("ram_blacklist");
>>         if (mod != NULL) {
>>                 ptr = preload_fetch_addr(mod);
>>                 len = preload_fetch_size(mod);
>> @@ -396,7 +395,7 @@ vm_page_excludelist_load(char **list, char **end)
>>  }
>>
>>  static int
>> -sysctl_vm_page_excludelist(SYSCTL_HANDLER_ARGS)
>> +sysctl_vm_page_blacklist(SYSCTL_HANDLER_ARGS)
>>  {
>>         vm_page_t m;
>>         struct sbuf sbuf;
>> @@ -407,7 +406,7 @@ sysctl_vm_page_excludelist(SYSCTL_HANDLER_ARGS)
>>         if (error != 0)
>>                 return (error);
>>         sbuf_new_for_sysctl(&sbuf, NULL, 128, req);
>> -       TAILQ_FOREACH(m, &excludelist_head, listq) {
>> +       TAILQ_FOREACH(m, &blacklist_head, listq) {
>>                 sbuf_printf(&sbuf, "%s%#jx", first ? "" : ",",
>>                     (uintmax_t)m->phys_addr);
>>                 first = 0;
>> @@ -794,14 +793,14 @@ vm_page_startup(vm_offset_t vaddr)
>>         }
>>
>>         /*
>> -        * Remove excludelisted pages from the physical memory allocator.
>> +        * Remove blacklisted pages from the physical memory allocator.
>>          */
>> -       TAILQ_INIT(&excludelist_head);
>> -       vm_page_excludelist_load(&list, &listend);
>> -       vm_page_excludelist_check(list, listend);
>> +       TAILQ_INIT(&blacklist_head);
>> +       vm_page_blacklist_load(&list, &listend);
>> +       vm_page_blacklist_check(list, listend);
>>
>> -       list = kern_getenv("vm.excludelist");
>> -       vm_page_excludelist_check(list, NULL);
>> +       list = kern_getenv("vm.blacklist");
>> +       vm_page_blacklist_check(list, NULL);
>>
>>         freeenv(list);
>>  #if VM_NRESERVLEVEL > 0
>>
>> Modified: head/sys/vm/vm_page.h
>>
>> ==============================================================================
>> --- head/sys/vm/vm_page.h       Thu Jul  9 20:55:18 2020        (r363059)
>> +++ head/sys/vm/vm_page.h       Thu Jul  9 22:38:36 2020        (r363060)
>> @@ -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_excludelist_add(vm_paddr_t pa, bool verbose);
>> +bool vm_page_blacklist_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,
>> _______________________________________________
>> svn-src-head@freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/svn-src-head
>> To unsubscribe, send any mail to "svn-src-head-unsubscribe@freebsd.org"
>>
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfqbhcbxU_pfdXt_bqXf9giR1XvF5KjJCSoFYkym0j%2BrSQ>