From patchwork Tue Jan 4 07:29:47 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Taranowski X-Patchwork-Id: 77391 X-Patchwork-Delegate: galak@kernel.crashing.org Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from bilbo.ozlabs.org (localhost [127.0.0.1]) by ozlabs.org (Postfix) with ESMTP id 14204B7339 for ; Tue, 4 Jan 2011 18:30:19 +1100 (EST) Received: from mail-fx0-f51.google.com (mail-fx0-f51.google.com [209.85.161.51]) by ozlabs.org (Postfix) with ESMTP id 5FD8BB70DA for ; Tue, 4 Jan 2011 18:30:11 +1100 (EST) Received: by fxm5 with SMTP id 5so13190239fxm.38 for ; Mon, 03 Jan 2011 23:30:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:mime-version:sender:received:from:date :x-google-sender-auth:message-id:subject:to:content-type; bh=T13XxbdSxD+4X22cZ/GpeBBA9n4nl5ZtzxWw1San0T8=; b=j/TyIoU0TpOj9VGcQiAl+nTiKtwMrjw8kEIHFqV5U2PG48K/WZH9CgBfsGU9Phs55O 6QwoOTqq2elzdmTbV1z3W1ro94z+Keo6wSgykt7qtZUtAAvf+afbFJ8WJ4C1QSeWutcr uhqc3AKpSbP0cCkagFtbvQhDeM0xx8YYZ/KrQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:from:date:x-google-sender-auth:message-id :subject:to:content-type; b=YKKjhKo4hrg1A6cjf8ucxUUO9h5T7hcEDTwcKX3VE+lSdMQ++OrBgrWPzZpFm1fSrG YEIouPm5RjVlNw9sklutFeXBLh9FcOnRfKrljpiyOqa+pdaCr6yFdsVbbyl+jhz1UJq2 yyO3z1MI39j1Vb35Dgm/DczqD9ZkLL9IaE7u0= Received: by 10.223.120.193 with SMTP id e1mr850655far.106.1294126208044; Mon, 03 Jan 2011 23:30:08 -0800 (PST) MIME-Version: 1.0 Received: by 10.223.119.1 with HTTP; Mon, 3 Jan 2011 23:29:47 -0800 (PST) From: Thomas Taranowski Date: Mon, 3 Jan 2011 23:29:47 -0800 X-Google-Sender-Auth: L0_8TllwfpaT18ByY6s3JZXzHTE Message-ID: Subject: [PATCH] RapidIO: Fix hang on RapidIO doorbell queue full condition To: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org In fsl_rio_dbell_handler, the code currently simply acknowledges the QFI queue full interrupt, but does nothing to resolve the queue full condition. Instead, it jumps to the end of the isr. When a queue full condition occurs, the isr is then re-entered immediately and continually, forever. The fix is to just fall through and read out current doorbell entries. Tested against 2.6.26-rc8 on a p2020 Signed-off-by: Thomas Taranowski --- arch/powerpc/sysdev/fsl_rio.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/arch/powerpc/sysdev/fsl_rio.c b/arch/powerpc/sysdev/fsl_rio.c index 9725369..9f99bef 100644 --- a/arch/powerpc/sysdev/fsl_rio.c +++ b/arch/powerpc/sysdev/fsl_rio.c @@ -973,7 +973,6 @@ fsl_rio_dbell_handler(int irq, void *dev_instance) if (dsr & DOORBELL_DSR_QFI) { pr_info("RIO: doorbell queue full\n"); out_be32(&priv->msg_regs->dsr, DOORBELL_DSR_QFI); - goto out; } /* XXX Need to check/dispatch until queue empty */