On Thu, Jan 02, 2020 at 02:58:16PM +0100, Idwer Vollering wrote: > This can happen on amd64, on r356262, too. > > $ kgdb /boot/kernel/kernel vmcore.0 > GNU gdb (GDB) 8.3.1 [GDB v8.3.1 for FreeBSD] > Copyright (C) 2019 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. > Type "show copying" and "show warranty" for details. > This GDB was configured as "x86_64-portbld-freebsd13.0". > Type "show configuration" for configuration details. > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>. > Find the GDB manual and other documentation resources online at: > <http://www.gnu.org/software/gdb/documentation/>. > > For help, type "help". > Type "apropos word" to search for commands related to "word"... > Reading symbols from /boot/kernel/kernel... > Reading symbols from /usr/lib/debug//boot/kernel/kernel.debug... > > Unread portion of the kernel message buffer: > panic: vm_page_astate_fcmpset: invalid head requeue request for page Sorry for the breakage. I believe the patch below will fix the problem, I am testing it now. diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 1e74f5c4c6db..cbdab1374f72 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c _at__at_ -834,6 +834,7 _at__at_ vm_pageout_launder(struct vm_domain *vmd, int launder, bool in_shortfall) if (new.act_count > ACT_MAX) new.act_count = ACT_MAX; + new.flags &= ~PGA_QUEUE_OP_MASK; new.flags |= PGA_REQUEUE; new.queue = PQ_ACTIVE; if (!vm_page_pqstate_commit(m, &old, new)) _at__at_ -1313,8 +1314,9 _at__at_ vm_pageout_scan_active(struct vm_domain *vmd, int page_shortage) */ ps_delta = 0; if (old.queue != PQ_ACTIVE) { - old.queue = PQ_ACTIVE; - old.flags |= PGA_REQUEUE; + new.flags &= ~PGA_QUEUE_OP_MASK; + new.flags |= PGA_REQUEUE; + new.queue = PQ_ACTIVE; } } else { /* _at__at_ -1350,6 +1352,7 _at__at_ vm_pageout_scan_active(struct vm_domain *vmd, int page_shortage) ps_delta = 1; } + new.flags &= ~PGA_QUEUE_OP_MASK; new.flags |= PGA_REQUEUE; new.queue = nqueue; } _at__at_ -1560,6 +1563,7 _at__at_ vm_pageout_scan_inactive(struct vm_domain *vmd, int shortage, if (new.act_count > ACT_MAX) new.act_count = ACT_MAX; + new.flags &= ~PGA_QUEUE_OP_MASK; new.flags |= PGA_REQUEUE; new.queue = PQ_ACTIVE; if (!vm_page_pqstate_commit(m, &old, new))Received on Thu Jan 02 2020 - 13:16:52 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:22 UTC