From patchwork Sat Oct 26 16:45:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 1184758 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 470n386Gdbz9sPf for ; Sun, 27 Oct 2019 03:47:46 +1100 (AEDT) Received: from localhost ([::1]:40810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iOPE6-0002cw-NM for incoming@patchwork.ozlabs.org; Sat, 26 Oct 2019 12:47:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:32824) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iOPCm-0002Vm-8j for qemu-devel@nongnu.org; Sat, 26 Oct 2019 12:46:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iOPCl-00011g-9X for qemu-devel@nongnu.org; Sat, 26 Oct 2019 12:46:20 -0400 Received: from mout.kundenserver.de ([212.227.126.135]:42253) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iOPCl-00010s-03; Sat, 26 Oct 2019 12:46:19 -0400 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N95mR-1htMEY0ng7-0167vV; Sat, 26 Oct 2019 18:45:53 +0200 From: Laurent Vivier To: qemu-devel@nongnu.org Subject: [PATCH v15 01/11] esp: move handle_ti_cmd() cleanup code to esp_do_dma(). Date: Sat, 26 Oct 2019 18:45:36 +0200 Message-Id: <20191026164546.30020-2-laurent@vivier.eu> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191026164546.30020-1-laurent@vivier.eu> References: <20191026164546.30020-1-laurent@vivier.eu> MIME-Version: 1.0 X-Provags-ID: V03:K1:JL7/f9MYlM3Ni5d31Jhi5pzDIukczD49yhLrr2OrxXJ94USFtj/ Ol2/M3csHzbDC2poCE0yL3k8YQNTywU1H6kddRiNnNr5Z1FBUP7EkTCKfbcpHpxlyPflNxC 6wizxX3OO3C/qIOXrE8WXaVF1B4kC97tciCJ5HJZBSI0xFoqv+qsC4Xmo06cTkqBZ1ncOia kHKoBtteFCus1/HxKrQHA== X-UI-Out-Filterresults: notjunk:1; V03:K0:x8dXg1xNW6g=:SagtE7GgKFBXmz5bPI/u/H GpqpoKvkE+5QC7yV/cEcgbUrDsJlSnnybwoL5ttzBbs4KITHLH6E7C/RCewRQHe+U3fFW7LPj eU4Ci4bEbLUpAoQ9Dd9ht52sRT+C/pvNcpUrXK2K14fYffoIKh7B6mVqnsP/NqMzErFOeR5YS zbjoBBiP84h/AHhthdCqWAJvXo5zjvgdqrfejCkpDTkAiMD+ZIpF6qSqGLu9A6aAJy6rTjDWP j9mtSJx6YypGi3DmNDllUgsAlOxYOfzvp0XMwVnbpZ0SaGtB++Wezpz8yYaq+hJC/vUuTqoHn Pkc2JYCUYqq357zNo9ye76a6syn9hXm/fdyOUsk+nNfEo0Idgdz3nhPYhl+/q6ITjTPjwj0WP j3nG/Xt0h4frEsQ10ZEYbOxe10YbRjY92IngtRSwbgJHY12En6cLttmB//qoIiRJMN2RFZgIX DGRz5eYUkTyQCzyO0bEdKvh00OGaA0swA2XncfBQuPhVCyWUVF0HiSHi1v1MfrIPq4oSM4o/f ZuWhwEGkjBDOH7EH/IVQiuxlhq4v9q2XEAZyY47Yff7sT4Z52gD7FsRzEtmH7aWYF00CE3spq y+CbUI5d0+ek/BJBTl9LpehuG3GBdohpp4c2PDtSibFvcvpJ1RxvzPRsB8oEaCH/HkuAjdqFj Dhjmdq34YFXtTzCjTMUXJrnyc/WOk15Z7ZjrcovsGv34RYb4nfJoQsBvPxKTilFR5oN0aFzYQ TCaWHkT4Jb053p8ND+TneuKDyoXR/ATLzAT3E6dkRyAzRguzr/WXE+iCpmQ3yXn8MaX6G4fz+ 9lEJziNnxf85AtuIfBAUHo3CT/UU9gcgDzJTKynjPGrXMsujH8rKOCdVnCiaUNtH7MUh3gcwv XrEtxCZTZFCf9RJwZkJg== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.126.135 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: Kevin Wolf , Fam Zheng , qemu-block@nongnu.org, Thomas Huth , Jason Wang , Mark Cave-Ayland , Laurent Vivier , "Dr . David Alan Gilbert" , =?utf-8?b?SGVydsOp?= =?utf-8?q?_Poussineau?= , Gerd Hoffmann , Paolo Bonzini , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Max Reitz , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Aurelien Jarno Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" To prepare following patches move do_cmd and DMA special case from handle_ti() to esp_do_dma(). This part of the code must be only executed with real DMA, not with pseudo-DMA. And PDMA is detected in esp_do_dma(), so move this part of the code in esp_do_dma(). We keep the code in handle_ti_cmd() in the case no DMA is done. Signed-off-by: Laurent Vivier Acked-by: Paolo Bonzini --- hw/scsi/esp.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 841d79b60e..09b28cba17 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -249,10 +249,19 @@ static void esp_do_dma(ESPState *s) len = s->dma_left; if (s->do_cmd) { + /* + * handle_ti_cmd() case: esp_do_dma() is called only from + * handle_ti_cmd() with do_cmd != NULL (see the assert()) + */ trace_esp_do_dma(s->cmdlen, len); assert (s->cmdlen <= sizeof(s->cmdbuf) && len <= sizeof(s->cmdbuf) - s->cmdlen); s->dma_memory_read(s->dma_opaque, &s->cmdbuf[s->cmdlen], len); + trace_esp_handle_ti_cmd(s->cmdlen); + s->ti_size = 0; + s->cmdlen = 0; + s->do_cmd = 0; + do_cmd(s, s->cmdbuf); return; } if (s->async_len == 0) { @@ -373,8 +382,7 @@ static void handle_ti(ESPState *s) s->dma_left = minlen; s->rregs[ESP_RSTAT] &= ~STAT_TC; esp_do_dma(s); - } - if (s->do_cmd) { + } else if (s->do_cmd) { trace_esp_handle_ti_cmd(s->cmdlen); s->ti_size = 0; s->cmdlen = 0;