From patchwork Sun Feb 17 11:37:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Schnelle X-Patchwork-Id: 10816987 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A7A02922 for ; Sun, 17 Feb 2019 11:38:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7AA2220416 for ; Sun, 17 Feb 2019 11:38:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 519FF2A51F; Sun, 17 Feb 2019 11:38:44 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 6A51520416 for ; Sun, 17 Feb 2019 11:38:43 +0000 (UTC) Received: from localhost ([127.0.0.1]:39723 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvKmN-0000bY-TO for patchwork-qemu-devel@patchwork.kernel.org; Sun, 17 Feb 2019 06:38:39 -0500 Received: from eggs.gnu.org ([209.51.188.92]:33189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gvKlf-0000HQ-Tu for qemu-devel@nongnu.org; Sun, 17 Feb 2019 06:37:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gvKlW-00059Y-EV for qemu-devel@nongnu.org; Sun, 17 Feb 2019 06:37:48 -0500 Received: from smtp.duncanthrax.net ([2001:470:70c5:1111::170]:54559) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gvKlT-000583-7r for qemu-devel@nongnu.org; Sun, 17 Feb 2019 06:37:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=duncanthrax.net; s=dkim; h=Content-Transfer-Encoding:MIME-Version: Message-Id:Date:Subject:Cc:To:From; bh=ZqTxfXTBy2aDU7h4KKUiYH6lQQHNwIevqRXfIPPz0/8=; b=Ivp/UN3M4g1b16tIEmPuRTWNW3 f+MpknNGpy8a3llotaBEcP0dvD/ITdz8z1OBEJTkGJrJjQ45mKoIOIdDjQx8A7Eb/KiGYQwHmKttW tzIzDG+EqSn3wNA82Feh9sJdPfioSOupMDobuhwkFDsAtoXm+jvd8sn3ipQZ2yyk2ZI0=; Received: from hsi-kbw-109-193-150-175.hsi7.kabel-badenwuerttemberg.de ([109.193.150.175] helo=t470p.stackframe.org) by smtp.eurescom.eu with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1gvKlM-0008N5-SJ; Sun, 17 Feb 2019 12:37:36 +0100 From: Sven Schnelle To: qemu-devel@nongnu.org Date: Sun, 17 Feb 2019 12:37:17 +0100 Message-Id: <20190217113717.7077-1-svens@stackframe.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:470:70c5:1111::170 Subject: [Qemu-devel] [PATCH] lsi: check if SIGP bit is already set in Wait reselect X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Paolo Bonzini , Helge Deller , Sven Schnelle Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP If SIGP is set, the 'Wait for Reselection' command should jump immediately to the address stored in the second DWORD of the instruction. This fixes spurious hangs in the HP-UX 11.11 installer when the SIGP bit gets set by the kernel before the 'Wait for Reselection' command is executed by SCRIPTS. Signed-off-by: Sven Schnelle Tested-by: Helge Deller --- hw/scsi/lsi53c895a.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c index 8ba07f8756..bcff859bac 100644 --- a/hw/scsi/lsi53c895a.c +++ b/hw/scsi/lsi53c895a.c @@ -1297,8 +1297,10 @@ again: } break; case 2: /* Wait Reselect */ - if (!lsi_irq_on_rsl(s)) { - lsi_wait_reselect(s); + if (s->istat0 & LSI_ISTAT0_SIGP) { + s->dsp = s->dnad; + } else if (!lsi_irq_on_rsl(s)) { + lsi_wait_reselect(s); } break; case 3: /* Set */