Print this page
9707 Enable parallel crash dump
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>


   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright (c) 2016 by Delphix. All rights reserved.

  25  */
  26 
  27 #include <sys/machsystm.h>
  28 #include <sys/archsystm.h>
  29 #include <sys/vm.h>
  30 #include <sys/cpu.h>
  31 #include <sys/atomic.h>
  32 #include <sys/reboot.h>
  33 #include <sys/kdi.h>
  34 #include <sys/bootconf.h>
  35 #include <sys/memlist_plat.h>
  36 #include <sys/memlist_impl.h>
  37 #include <sys/prom_plat.h>
  38 #include <sys/prom_isa.h>
  39 #include <sys/autoconf.h>
  40 #include <sys/ivintr.h>
  41 #include <sys/fpu/fpusystm.h>
  42 #include <sys/iommutsb.h>
  43 #include <vm/vm_dep.h>
  44 #include <vm/seg_dev.h>


 613 sync_handler(void)
 614 {
 615         struct  panic_trap_info         ti;
 616         int i;
 617 
 618         /*
 619          * Prevent trying to talk to the other CPUs since they are
 620          * sitting in the prom and won't reply.
 621          */
 622         for (i = 0; i < NCPU; i++) {
 623                 if ((i != CPU->cpu_id) && CPU_XCALL_READY(i)) {
 624                         cpu[i]->cpu_flags &= ~CPU_READY;
 625                         cpu[i]->cpu_flags |= CPU_QUIESCED;
 626                         CPUSET_DEL(cpu_ready_set, cpu[i]->cpu_id);
 627                 }
 628         }
 629 
 630         /*
 631          * Force a serial dump, since there are no CPUs to help.
 632          */
 633         dump_plat_mincpu = 0;
 634 
 635         /*
 636          * We've managed to get here without going through the
 637          * normal panic code path. Try and save some useful
 638          * information.
 639          */
 640         if (!panicstr && (curthread->t_panic_trap == NULL)) {
 641                 ti.trap_type = sync_tt;
 642                 ti.trap_regs = &sync_reg_buf;
 643                 ti.trap_addr = NULL;
 644                 ti.trap_mmu_fsr = 0x0;
 645 
 646                 curthread->t_panic_trap = &ti;
 647         }
 648 
 649         /*
 650          * If we're re-entering the panic path, update the signature
 651          * block so that the SC knows we're in the second part of panic.
 652          */
 653         if (panicstr)




   5  * Common Development and Distribution License (the "License").
   6  * You may not use this file except in compliance with the License.
   7  *
   8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
   9  * or http://www.opensolaris.org/os/licensing.
  10  * See the License for the specific language governing permissions
  11  * and limitations under the License.
  12  *
  13  * When distributing Covered Code, include this CDDL HEADER in each
  14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15  * If applicable, add the following below this CDDL HEADER, with the
  16  * fields enclosed by brackets "[]" replaced with your own identifying
  17  * information: Portions Copyright [yyyy] [name of copyright owner]
  18  *
  19  * CDDL HEADER END
  20  */
  21 
  22 /*
  23  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright (c) 2016 by Delphix. All rights reserved.
  25  * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  26  */
  27 
  28 #include <sys/machsystm.h>
  29 #include <sys/archsystm.h>
  30 #include <sys/vm.h>
  31 #include <sys/cpu.h>
  32 #include <sys/atomic.h>
  33 #include <sys/reboot.h>
  34 #include <sys/kdi.h>
  35 #include <sys/bootconf.h>
  36 #include <sys/memlist_plat.h>
  37 #include <sys/memlist_impl.h>
  38 #include <sys/prom_plat.h>
  39 #include <sys/prom_isa.h>
  40 #include <sys/autoconf.h>
  41 #include <sys/ivintr.h>
  42 #include <sys/fpu/fpusystm.h>
  43 #include <sys/iommutsb.h>
  44 #include <vm/vm_dep.h>
  45 #include <vm/seg_dev.h>


 614 sync_handler(void)
 615 {
 616         struct  panic_trap_info         ti;
 617         int i;
 618 
 619         /*
 620          * Prevent trying to talk to the other CPUs since they are
 621          * sitting in the prom and won't reply.
 622          */
 623         for (i = 0; i < NCPU; i++) {
 624                 if ((i != CPU->cpu_id) && CPU_XCALL_READY(i)) {
 625                         cpu[i]->cpu_flags &= ~CPU_READY;
 626                         cpu[i]->cpu_flags |= CPU_QUIESCED;
 627                         CPUSET_DEL(cpu_ready_set, cpu[i]->cpu_id);
 628                 }
 629         }
 630 
 631         /*
 632          * Force a serial dump, since there are no CPUs to help.
 633          */
 634         dump_ncpu_low = 0;
 635 
 636         /*
 637          * We've managed to get here without going through the
 638          * normal panic code path. Try and save some useful
 639          * information.
 640          */
 641         if (!panicstr && (curthread->t_panic_trap == NULL)) {
 642                 ti.trap_type = sync_tt;
 643                 ti.trap_regs = &sync_reg_buf;
 644                 ti.trap_addr = NULL;
 645                 ti.trap_mmu_fsr = 0x0;
 646 
 647                 curthread->t_panic_trap = &ti;
 648         }
 649 
 650         /*
 651          * If we're re-entering the panic path, update the signature
 652          * block so that the SC knows we're in the second part of panic.
 653          */
 654         if (panicstr)