From patchwork Mon Jun 11 18:16:36 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Collins X-Patchwork-Id: 164264 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from chlorine.canonical.com (chlorine.canonical.com [91.189.94.204]) by ozlabs.org (Postfix) with ESMTP id 677EFB6FC3 for ; Tue, 12 Jun 2012 09:01:21 +1000 (EST) Received: from localhost ([127.0.0.1] helo=chlorine.canonical.com) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1SeDbl-0003QN-8d; Mon, 11 Jun 2012 23:01:13 +0000 Received: from mail-pz0-f49.google.com ([209.85.210.49]) by chlorine.canonical.com with esmtp (Exim 4.71) (envelope-from ) id 1SeDbi-0003CA-7s for kernel-team@lists.ubuntu.com; Mon, 11 Jun 2012 23:01:10 +0000 Received: by mail-pz0-f49.google.com with SMTP id m1so6348062dad.8 for ; Mon, 11 Jun 2012 16:01:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:in-reply-to:references:from:date:subject:to; bh=cIZIRz9ScOH/L9kmEB7C7xtTSIXNXvGep69587FYQNY=; b=W5mBt5BamlrFQ9zfYkVgF4anC2gfvEF4SDmKPj1dHVmggiM7C3YR7RA+ywlsh8904g e/i2fkfViuucW46IZwG7iVLM4I4GOzYSay0nvmCAJqJpv8qYLnYMjpLZMf62hPwMBrnB 3efC6E1Fd2q3/7zFgZxx/UIK5/fXd1EiOrRsKj0dVOrGBmMkA/v3pcsX4Jn0ho6C/SkL 6eg37VYfxnb1Kw5RtvrGNO1cz1IDxOmFpGwMGybG5Rl2WvGGq0tmYNc9H+qVTVdABM/3 wRbG4vPIiITI0LAUYZLRBRR1RIa5zfGuxYxwpBBSMCE3sHuV7zxkbzqrBNTiQdPKhSs4 QnwQ== Received: by 10.68.195.97 with SMTP id id1mr32045995pbc.91.1339455669792; Mon, 11 Jun 2012 16:01:09 -0700 (PDT) Received: from localhost (ip68-13-200-36.hr.hr.cox.net. [68.13.200.36]) by mx.google.com with ESMTPS id oo6sm19938591pbc.22.2012.06.11.16.01.06 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 11 Jun 2012 16:01:08 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Mon, 11 Jun 2012 19:01:04 -0400 Message-Id: <677641da53c3579ee59d4e78aae667b852f6164e.1339455421.git.bcollins@ubuntu.com> In-Reply-To: References: From: Ben Collins Date: Mon, 11 Jun 2012 14:16:36 -0400 Subject: [PATCH 05/27] UBUNTU: [Upstream] SCSI: AACRAID: Better handling of in-flight events on thread stop To: kernel-team@lists.ubuntu.com X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.13 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: kernel-team-bounces@lists.ubuntu.com Errors-To: kernel-team-bounces@lists.ubuntu.com When an error occured that would shut down the driver, some in-flight events were getting caught up, deadlocking a CPU or two. Signed-off-by: Ben Collins Cc: Adaptec OEM Raid Solutions aif_thread) + if (aac->aif_thread) { + int i; + /* Clear out events first */ + for (i = 0; i < (aac->scsi_host_ptr->can_queue + AAC_NUM_MGT_FIB); i++) { + struct fib *fib = &aac->fibs[i]; + if (!(fib->hw_fib_va->header.XferState & cpu_to_le32(NoResponseExpected | Async)) && + (fib->hw_fib_va->header.XferState & cpu_to_le32(ResponseExpected))) + up(&fib->event_wait); + } kthread_stop(aac->thread); + } aac_send_shutdown(aac); aac_adapter_disable_int(aac); free_irq(aac->pdev->irq, aac); @@ -1191,6 +1200,7 @@ static int __devinit aac_probe_one(struct pci_dev *pdev, if (IS_ERR(aac->thread)) { printk(KERN_ERR "aacraid: Unable to create command thread.\n"); error = PTR_ERR(aac->thread); + aac->thread = NULL; goto out_deinit; }