Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Apr 2010 23:27:54 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/kern kern_shutdown.c
Message-ID:  <201004192328.o3JNSKuh002298@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
attilio     2010-04-19 23:27:54 UTC

  FreeBSD src repository

  Modified files:
    sys/kern             kern_shutdown.c 
  Log:
  SVN rev 206878 on 2010-04-19 23:27:54Z by attilio
  
  Fix a deadlock in the shutdown code:
  When performing a smp_rendezvous() or more likely, on amd64 and i386,
  a smp_tlb_shootdown() the caller will end up with the smp_ipi_mtx
  spinlock held, busy-waiting for other CPUs to acknowledge the operation.
  As long as CPUs are suspended (via cpu_reset()) between the active mask
  read and IPI sending there can be a deadlock where the caller will wait
  forever for a dead CPU to acknowledge the operation.
  Please note that on CPU0 that is going to be someway heavier because of
  the spinlocks being disabled earlier than quitting the machine.
  
  Fix this bug by calling cpu_reset() with the smp_ipi_mtx held.
  Note that it is very likely that a saner offline/online CPUs mechanism
  will help heavilly in fixing similar cases as it is likely more bugs
  of this type may arise in the future.
  
  Reported by:    rwatson
  Discussed with: jhb
  Tested by:      rnoland, Giovanni Trematerra
                  <giovanni dot trematerra at gmail dot com>
  MFC:            2 weeks
  
  Special deciation to:   anyone who made possible to have 16-ways machines
                          in Netperf
  
  Revision  Changes    Path
  1.203     +12 -7     src/sys/kern/kern_shutdown.c



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