From patchwork Mon Oct 28 18:16:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1185639 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vivier.eu Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4723W16CDVz9sPf for ; Tue, 29 Oct 2019 05:42:52 +1100 (AEDT) Received: from localhost ([::1]:46274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iP9yZ-0002QL-Tp for incoming@patchwork.ozlabs.org; Mon, 28 Oct 2019 14:42:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56455) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iP9Zh-0002YO-Vh for qemu-devel@nongnu.org; Mon, 28 Oct 2019 14:17:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iP9Zg-0003xD-LO for qemu-devel@nongnu.org; Mon, 28 Oct 2019 14:17:05 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:37703) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iP9Zg-0003w4-Bq; Mon, 28 Oct 2019 14:17:04 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MpUpW-1hdxG41tG8-00psSJ; Mon, 28 Oct 2019 19:16:52 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PULL 02/11] esp: move get_cmd() post-DMA code to get_cmd_cb() Date: Mon, 28 Oct 2019 19:16:34 +0100 Message-Id: <20191028181643.5143-3-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191028181643.5143-1-laurent@vivier.eu> References: <20191028181643.5143-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:KoHlabvA03FPSJtuk/zidWr5y9K83Kjw8M/6QBYO9SOrVlvEj0q Y+Fx2srY+x9yshKO/JHF0k3ROtiME7Vy+nBvUC0FFcLIxPABVCuf54y1pKWQHp9vdTOBx1T KnWPh9qksyK61U687NLS6gPWAyG3GO6kApNJ2vT7ZjiEWt+tNL/tniilDPB5aBS72OPP4Ux FZY20yGhpgaS2S6JALd/A== X-UI-Out-Filterresults: notjunk:1; V03:K0:/AS9RZQHuQ0=:gn5w/ToHbGeW7B0irQRTDi AsUS4MNxHANf041FJEQqpqD+MUJCr3rVlFha10fEkyJv4cKLbHxh4OHGIKKzwUoZ09hJmz/bU UeG5LY/Edonh7c8wN7Ja0bTmZdgbxPVHaQhNalhIh7GF+vkW+sRn3j61iHR+SfA5Ue94VpEWS dqzaH3xPLxRuDhlKSUf/oYje0HkfAE8TzZYOdUTi0Jjkb/CEQOqFeYwT5QgN4gRnZQTZv59zW bPG51kYUj6+umEaI4e1PiC8w7nJD4/fvJFPNCZ65w6Xyw2HGKt3uqH2sMKA7VYqXUTS1LZkeg KerEsMKZY16Hzaxt/0xZcWKRiHgtqZZfJhcoxtfCve3D+ADXRK4La2w9vB8N1m4XzZ9ri/cy2 GLMa4EmssZMVQd04z80wb299IsoG109WCe6ORU9YnbfAjXwotCqOTLHcVXQmFxbewo1+jEaIQ koakGuYK1+IJeNhy0ZXIzfV8jaZog+pXKhemcirURI+E14UWIPhqBEFfh3jqK/vl/zGKJtda9 z0rFyIt2eqtt6/sZKnYoNxzV8xTOh0DJr2As/6w7uuJwWyRDoDEyE1zrXTZUpjWoVszGLrcMO hfyEPHBoeVAV2zgPrB0W+oe/mY6/BNx8dwXFlT+zB+lkyRvBenxj4bG5Z0fdVySCtx+j0eXyH iInbs2HgaVok5SzpxLo5s2IszbRKPbkOX5lQpfaxOOp6mA/dyiTSBjrBxeBmBrl3AGBISEhuh Qro+3vymdKwQNKpHRhKiSEKda2FIoOcw5SStyrCXEse+62H4kRzJSSMwGjteRAq+SLy4llMvb 3SnaXTJ9MvbW4qBxkLczAhjxKRvmepHkk8ucvP9ebY393hL3r3wl/i2GBtJI4HmkOPn4T36xO /PNJMkTo8CvR6IlVpskl0kK9mYS6T0rht8128yTSY= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.73 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Jason Wang , Laurent Vivier , Max Reitz , Paolo Bonzini , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This will be needed to implement pseudo-DMA Signed-off-by: Laurent Vivier Reviewed-by: Philippe Mathieu-Daudé Acked-by: Paolo Bonzini Message-Id: <20191026164546.30020-3-laurent@vivier.eu> --- hw/scsi/esp.c | 46 +++++++++++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 09b28cba17..0230ede21d 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -84,6 +84,34 @@ void esp_request_cancelled(SCSIRequest *req) } } +static int get_cmd_cb(ESPState *s) +{ + int target; + + target = s->wregs[ESP_WBUSID] & BUSID_DID; + + s->ti_size = 0; + s->ti_rptr = 0; + s->ti_wptr = 0; + + if (s->current_req) { + /* Started a new command before the old one finished. Cancel it. */ + scsi_req_cancel(s->current_req); + s->async_len = 0; + } + + s->current_dev = scsi_device_find(&s->bus, 0, target, 0); + if (!s->current_dev) { + /* No such drive */ + s->rregs[ESP_RSTAT] = 0; + s->rregs[ESP_RINTR] = INTR_DC; + s->rregs[ESP_RSEQ] = SEQ_0; + esp_raise_irq(s); + return -1; + } + return 0; +} + static uint32_t get_cmd(ESPState *s, uint8_t *buf, uint8_t buflen) { uint32_t dmalen; @@ -108,23 +136,7 @@ static uint32_t get_cmd(ESPState *s, uint8_t *buf, uint8_t buflen) } trace_esp_get_cmd(dmalen, target); - s->ti_size = 0; - s->ti_rptr = 0; - s->ti_wptr = 0; - - if (s->current_req) { - /* Started a new command before the old one finished. Cancel it. */ - scsi_req_cancel(s->current_req); - s->async_len = 0; - } - - s->current_dev = scsi_device_find(&s->bus, 0, target, 0); - if (!s->current_dev) { - // No such drive - s->rregs[ESP_RSTAT] = 0; - s->rregs[ESP_RINTR] = INTR_DC; - s->rregs[ESP_RSEQ] = SEQ_0; - esp_raise_irq(s); + if (get_cmd_cb(s) < 0) { return 0; } return dmalen;