From patchwork Fri Oct 28 19:16:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696460 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=l9yLlxHZ; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXQR74k0z23lR for ; Sat, 29 Oct 2022 06:18:38 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUr9-0001gO-Sa; Fri, 28 Oct 2022 15:17:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr7-0001fu-2k for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:25 -0400 Received: from esa9.hc2706-39.iphmx.com ([216.71.140.197]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr4-00031W-PF for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:24 -0400 X-IronPort-RemoteIP: 209.85.166.71 X-IronPort-MID: 234531092 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:GN0obKvH8XStF/lKIjxazFDYX+fnVOdcMUV32f8akzHdYApBsoF/q tZmKTjVb/aDN2H9KYogady+9ExSvZOHzNc1Gwdrrnw0ES5D9ZOVVN+UEBzMMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlVEliefSAOKU5NfsYkhZXRVjRDoqlSVtkus4hp8AqdWiCkaGt MiaT/f3YTdJ4BYpdDNJg06/gEk35q6r4GlI5gdWic1j5zcyqVFEVPrzGonsdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVHmZkh+AsBOsTAbzsAG6ZvXAdJHAathZ5RlqPgqo DlFncTYpQ7EpcQgksxEO/VTO3gW0aGrZNYriJVw2CCe5xSuTpfi/xlhJEZsZqtJ3OFeO2AN5 aATLW81UT7SwP3jldpXSsE07igiBMziPYdau3Y5iD+GVLApRpfMR6iM7thdtNsyrpoWTLCOO oxAN2QpM02ojx5nYz/7DLo3mPeuimPXeSAepV6IzUYyyzKIkFEqieC8arI5fPSKTOt1m1iCv lmewDmiWhExa82+xiSKpyfEaujn2HmTtJgpPKS18+MvjFCNy2g7DhoQWl2m5/6jhSaDt8l3L kUV/m8vqvF3+hPyCNb6WBK8rTiPuRt0t8dsLtDWITqlksL8izt1zEBeJtKdQLTKbPMLeAE= IronPort-HdrOrdr: A9a23:Gxdydqh52ewpYKugGA7q2djujHBQXuwji2hC6mlwRA09TyX+ra yTdZUguiMc7Qx7ZJhOo7690cW7IE80jKQFhbX5X43SPzUOyVHJEGgK1+KLqVDd8kvFh4tgPM xbAspD4bPLfCFHpPe/zA6kE8sxhPmrmZrY/ds2Fk0dKj2CvZsQiTtENg== Received: from mail-io1-f71.google.com ([209.85.166.71]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:16 -0400 Received: by mail-io1-f71.google.com with SMTP id a6-20020a056602208600b006bff2e56943so4979619ioa.11 for ; Fri, 28 Oct 2022 12:17:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JgfRpfP6VLgnjp69pRpP49HK9NoPSMvm+MPLV3BTs1g=; b=l9yLlxHZgGcOfagwyR24EdYFf0ry8dC2w5a4cCUD39A8OKPqmugwtkbSaTAaZDWUCL yhwBbvbXjF1hrePUmQ3AFcevI2/8qRmg4vJDjPruj/z5M/fY4y5Wbl8TS5DX4hZvjnxa gUeGyAXcPmp+rR6Z80yoCibKs3J2K2Jo5hJu6dEFHR/EaBvl26xGYnxkYMxcyhJlP4sD kz+HLoQVw5ame6mOTZsjFRj00Sl/wR+vUEIcgNCUy2wRVcU8+JdKuuZpPhx3hhif29C7 rtEfocCsaBRDSZ3nKETrJfwRXbtw+7e9SzZku/SH/pU2GXUXnFu54rcrUoitRv8nMV7O e3Fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JgfRpfP6VLgnjp69pRpP49HK9NoPSMvm+MPLV3BTs1g=; b=npxDjVXLHAfcC/U+MPIrdAyy8yK9+lyAtvG8FOJneFN21vnJWlA1Sr6ZWm2heKWrjD nLh71/yLwCN+8ApMp5/68DhaJybQGOqI23smHls3BIApuIyRuZ+rl/X57xRsmjt58jDX pYiP2MWs6zm9tJZCHzDRKHmWWNbM3NRjOJfhlYld1oGxmfELBXSUOfwxxXaDuvvpcysB RFTWwMZ0kFes52mz8VZ9b4C/aKVq5lHAE9TBPwWzvji4I5KsN9t057agWVFIHsKp0QHa 4Z0wVO8OtoAVZp87lqDEx6F+yAC3Uyd4b4qlMmdEV3GpyMwDp3+HTGDf4s7p0YkbrBYf 2tnw== X-Gm-Message-State: ACrzQf3py3btrhyh2nT7P4xCE2rATyMVG21LQZ9D7bUXolzQYLJ3MkG6 Gx/J3RH4av0kM8NqgTBwi2bonAMm6pU4o/FiM8qqL+y6gKUZv7E8xC4Nk+47RX0AvoLZW0VHuQz o5u+VNrgeaTmcpEAYXVodBVZwh8zULw== X-Received: by 2002:a05:6602:26d2:b0:6a3:f044:a942 with SMTP id g18-20020a05660226d200b006a3f044a942mr528744ioo.50.1666984635452; Fri, 28 Oct 2022 12:17:15 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4NEq4mgrxteIQyAOsG5zQLpgDSmxjuSf88TBvXeut7O1tbLwMSmITnuW4QdpN+OulCyEZv4g== X-Received: by 2002:a05:6602:26d2:b0:6a3:f044:a942 with SMTP id g18-20020a05660226d200b006a3f044a942mr528715ioo.50.1666984635165; Fri, 28 Oct 2022 12:17:15 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:14 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 1/7] memory: associate DMA accesses with the initiator Device Date: Fri, 28 Oct 2022 15:16:42 -0400 Message-Id: <20221028191648.964076-2-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=216.71.140.197; envelope-from=alxndr@bu.edu; helo=esa9.hc2706-39.iphmx.com X-Spam_score_int: 0 X-Spam_score: -0.1 X-Spam_bar: / X-Spam_report: (-0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Add transitionary DMA APIs which associate accesses with the device initiating them. The modified APIs maintain a "MemReentrancyGuard" in the DeviceState, which is used to prevent DMA re-entrancy issues. The MemReentrancyGuard is set/checked when entering IO handlers and when initiating a DMA access. 1.) mmio -> dma -> mmio case 2.) bh -> dma write -> mmio case These issues have led to problems such as stack-exhaustion and use-after-frees. Summary of the problem from Peter Maydell: https://lore.kernel.org/qemu-devel/CAFEAcA_23vc7hE3iaM-JVA6W38LK4hJoWae5KcknhPRD5fPBZA@mail.gmail.com Signed-off-by: Alexander Bulekov --- include/hw/qdev-core.h | 2 ++ include/sysemu/dma.h | 41 +++++++++++++++++++++++++++++++++++++++++ softmmu/memory.c | 15 +++++++++++++++ softmmu/trace-events | 1 + 4 files changed, 59 insertions(+) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index 785dd5a56e..ab78d211af 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -8,6 +8,7 @@ #include "qom/object.h" #include "hw/hotplug.h" #include "hw/resettable.h" +#include "sysemu/dma.h" enum { DEV_NVECTORS_UNSPECIFIED = -1, @@ -194,6 +195,7 @@ struct DeviceState { int alias_required_for_version; ResettableState reset; GSList *unplug_blockers; + MemReentrancyGuard mem_reentrancy_guard; }; struct DeviceListener { diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index a1ac5bc1b5..879b666bbb 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -15,6 +15,10 @@ #include "block/block.h" #include "block/accounting.h" +typedef struct { + bool engaged_in_io; +} MemReentrancyGuard; + typedef enum { DMA_DIRECTION_TO_DEVICE = 0, DMA_DIRECTION_FROM_DEVICE = 1, @@ -321,4 +325,41 @@ void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, uint64_t dma_aligned_pow2_mask(uint64_t start, uint64_t end, int max_addr_bits); +#define REENTRANCY_GUARD(func, ret_type, dev, ...) \ + ({\ + ret_type retval;\ + MemReentrancyGuard prior_guard_state = dev->mem_reentrancy_guard;\ + dev->mem_reentrancy_guard.engaged_in_io = 1;\ + retval = func(__VA_ARGS__);\ + dev->mem_reentrancy_guard = prior_guard_state;\ + retval;\ + }) +#define REENTRANCY_GUARD_NORET(func, dev, ...) \ + ({\ + MemReentrancyGuard prior_guard_state = dev->mem_reentrancy_guard;\ + dev->mem_reentrancy_guard.engaged_in_io = 1;\ + func(__VA_ARGS__);\ + dev->mem_reentrancy_guard = prior_guard_state;\ + }) +#define dma_memory_rw_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_memory_rw, MemTxResult, dev, __VA_ARGS__) +#define dma_memory_read_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_memory_read, MemTxResult, dev, __VA_ARGS__) +#define dma_memory_write_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_memory_write, MemTxResult, dev, __VA_ARGS__) +#define dma_memory_set_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_memory_set, MemTxResult, dev, __VA_ARGS__) +#define dma_memory_map_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_memory_map, void*, dev, __VA_ARGS__) +#define dma_memory_unmap_guarded(dev, ...) \ + REENTRANCY_GUARD_NORET(dma_memory_unmap, dev, __VA_ARGS__) +#define ldub_dma_guarded(dev, ...) \ + REENTRANCY_GUARD(ldub_dma, MemTxResult, dev, __VA_ARGS__) +#define stb_dma_guarded(dev, ...) \ + REENTRANCY_GUARD(stb_dma, MemTxResult, dev, __VA_ARGS__) +#define dma_buf_read_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_buf_read, MemTxResult, dev, __VA_ARGS__) +#define dma_buf_write_guarded(dev, ...) \ + REENTRANCY_GUARD(dma_buf_read, MemTxResult, dev, __VA_ARGS__) + #endif diff --git a/softmmu/memory.c b/softmmu/memory.c index 7ba2048836..c44dc75149 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -532,6 +532,7 @@ static MemTxResult access_with_adjusted_size(hwaddr addr, uint64_t access_mask; unsigned access_size; unsigned i; + DeviceState *dev = NULL; MemTxResult r = MEMTX_OK; if (!access_size_min) { @@ -541,6 +542,17 @@ static MemTxResult access_with_adjusted_size(hwaddr addr, access_size_max = 4; } + /* Do not allow more than one simultanous access to a device's IO Regions */ + if (mr->owner && + !mr->ram_device && !mr->ram && !mr->rom_device && !mr->readonly) { + dev = (DeviceState *) object_dynamic_cast(mr->owner, TYPE_DEVICE); + if (dev->mem_reentrancy_guard.engaged_in_io) { + trace_memory_region_reentrant_io(get_cpu_index(), mr, addr, size); + return MEMTX_ERROR; + } + dev->mem_reentrancy_guard.engaged_in_io = true; + } + /* FIXME: support unaligned access? */ access_size = MAX(MIN(size, access_size_max), access_size_min); access_mask = MAKE_64BIT_MASK(0, access_size * 8); @@ -555,6 +567,9 @@ static MemTxResult access_with_adjusted_size(hwaddr addr, access_mask, attrs); } } + if (dev) { + dev->mem_reentrancy_guard.engaged_in_io = false; + } return r; } diff --git a/softmmu/trace-events b/softmmu/trace-events index 22606dc27b..62d04ea9a7 100644 --- a/softmmu/trace-events +++ b/softmmu/trace-events @@ -13,6 +13,7 @@ memory_region_ops_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, u memory_region_ops_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size, const char *name) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u name '%s'" memory_region_subpage_read(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_subpage_write(int cpu_index, void *mr, uint64_t offset, uint64_t value, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" value 0x%"PRIx64" size %u" +memory_region_reentrant_io(int cpu_index, void *mr, uint64_t offset, unsigned size) "cpu %d mr %p offset 0x%"PRIx64" size %u" memory_region_ram_device_read(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_ram_device_write(int cpu_index, void *mr, uint64_t addr, uint64_t value, unsigned size) "cpu %d mr %p addr 0x%"PRIx64" value 0x%"PRIx64" size %u" memory_region_sync_dirty(const char *mr, const char *listener, int global) "mr '%s' listener '%s' synced (global=%d)" From patchwork Fri Oct 28 19:16:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696457 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=Vzhj2BlA; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXQR6xPZz23l4 for ; Sat, 29 Oct 2022 06:18:38 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUrB-0001hL-IQ; Fri, 28 Oct 2022 15:17:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrA-0001gt-Gk for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:28 -0400 Received: from esa10.hc2706-39.iphmx.com ([216.71.140.198]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr8-00031O-Uf for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:28 -0400 X-IronPort-RemoteIP: 209.85.166.71 X-IronPort-MID: 235579308 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:2xvnGaANYv8LlBVW/5jhw5YqxClBgxIJ4kV8jS/XYbTApD5002EHz WYdWjqPPfffZzf8e9t+Otu//RhVusSByodhTANkpHpgcSl2pJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdleF+lH3dOCJQUBUjcmgXqD7BPPPJhd/TAplTDZJoR94kqsyj5UAbeKRWmthg vuv5ZyCULOZ82QsaDhNs/jT8EgHUMna41v0gHRvPZing3eDzxH5PLpHTYmtIn3xRJVjH+LSb 44vG5ngows1Vz90Yj+Uuu+Tnn8iG9Y+DiDX4pZiYJVOtzAZzsAEPgfXA9JHAatfo23hc9mcU 7yhv7TpIesiFvSkdOjwz3C0usyxVEFL0OavHJSxjSCc50HJKl3t2/hnN04zZ90b9fpsUFhF6 dVNfVjhbjjb7w636LeyS+0ph8N6ace0ZcUQvXZvyTyfBvEjKXzBa/+StJkIgXFp2J4IQq+2i 8kxMFKDaDzJZw1JNk0/Ao94keu17pX6W2cD9Q/K9PFvswA/yiR20+KwNfXwJOauSJ0Kkx3Im 37Z5HvAV0Ry2Nu3jGDtHmiXrvbCmD6+VI8MGbmQ8Plsj1uOgGsJB3UruUCTpPC4jgu/XIsaJ RNNvCUpqqc2+QqgSdyVswCEnUNodyU0A7J4e9DWIinWokYIy2513lQ5cwM= IronPort-HdrOrdr: A9a23:eqRyMqFMLoCR75u5pLqENMeALOsnbusQ8zAXPiFKOGdom6mj/P xG88506faZslsssTIb6LS90dC7IE80rKQU3WBzB8bBYOCFghrREGgK1+KLqQEIfReOk9K1vp 0OT0ERMrHN5BdB/KHHCaSDYrAd6cjC2pqBwc3Zy25pTQlsYa0l1QFkEQyWe3cGJzWuQaBJba ah2g== Received: from mail-io1-f71.google.com ([209.85.166.71]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:17 -0400 Received: by mail-io1-f71.google.com with SMTP id f17-20020a5d8591000000b006bcbe59b6cdso4943305ioj.14 for ; Fri, 28 Oct 2022 12:17:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GgsC9drkjsxk4oyLe5Cp3wBBVsfVPperDzRvSbbTlmQ=; b=Vzhj2BlAuGrx8uvYE97JvdHNR80Od1SUt962y5I+fK09lnsElLOg/+5lUa6YG7eJ6S O5znDu2lZ2KWFFMWhXFvTh9jrEj4Gruww6Imyytgx6EGXskyrJVh9+03gKzu0wqoyQMk i34U48KG8i/Ojo8ay2ageNWA6Dow0/aW3jq6xagr/5v8xI9NsZRU06FS2nepDpCtm+IY MTfYnOkMjHdtxVPr1QAJav1REOMsxlanQF4K7Ogf++LzM90fUEZFHlOjxJuU6N8UHpcz /Ebhw28iNaNS9wzNEgiIvobTVsq7l2EkGDlxZ/eiZzrakk1lsB7f7RBUduU1VEZfpiOP noqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GgsC9drkjsxk4oyLe5Cp3wBBVsfVPperDzRvSbbTlmQ=; b=fIncW7wMy1J5V8Z30OkL6x1TzJ3zs347qqedTscB5wW2nAm9CqeZms39yMAqDd8PPf kE8O4uMr4s5vZELjrWaBSeLk4iiLqN2KabC3/o9lNMKrYinF9ixCEgobFSv/iEWsTkFW tUhL8Wr7c6eWgpVzMukXyW2nsqUCB3ph3D/VQmbrgTT+2Kj3tWVzfwBkLYNAqbUNfr9r Br6qwlezrn0lQJPxHkSOsAuCnhJDh94D/L9uoMMdzFfupqwEZEaesYycBmEPzMi8LOC1 whcGKFuZg6UtMRr3o6c4F15Pq97cje6has3DcT3n+loiWr7wNegzw4FwZdb8HBWolvkq TJAg== X-Gm-Message-State: ACrzQf0tiEBucawW4jiwbkUyM3jGzpFAqP6kLetwMRP1A7JLeetc1TgH aBPCvkesj8dpxAYaJ1Ypx0YV43hLoVYl87ZGXa+6Dv5HqyBMYTm9OwwYhMgZYeTFTs4TEICItwK Eu1OriUegrYXSNjds0g/RVLIqQ/7pyA== X-Received: by 2002:a05:6602:2e04:b0:6c6:641e:c174 with SMTP id o4-20020a0566022e0400b006c6641ec174mr497094iow.215.1666984637383; Fri, 28 Oct 2022 12:17:17 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4HUQQYOZDaBmUNyb/xAsrVrtg+Q4qO7k/1iU4w6a+gotL0tjGXJVvPN8o80A3QstrYKGsSOg== X-Received: by 2002:a05:6602:2e04:b0:6c6:641e:c174 with SMTP id o4-20020a0566022e0400b006c6641ec174mr497064iow.215.1666984637157; Fri, 28 Oct 2022 12:17:17 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:16 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 2/7] dma-helpers: switch to guarded DMA accesses Date: Fri, 28 Oct 2022 15:16:43 -0400 Message-Id: <20221028191648.964076-3-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=216.71.140.198; envelope-from=alxndr@bu.edu; helo=esa10.hc2706-39.iphmx.com X-Spam_score_int: 0 X-Spam_score: -0.1 X-Spam_bar: / X-Spam_report: (-0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Alexander Bulekov --- softmmu/dma-helpers.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 7820fec54c..ba2ad23324 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -90,9 +90,9 @@ static void dma_blk_unmap(DMAAIOCB *dbs) int i; for (i = 0; i < dbs->iov.niov; ++i) { - dma_memory_unmap(dbs->sg->as, dbs->iov.iov[i].iov_base, - dbs->iov.iov[i].iov_len, dbs->dir, - dbs->iov.iov[i].iov_len); + dma_memory_unmap_guarded(dbs->sg->dev, dbs->sg->as, + dbs->iov.iov[i].iov_base, dbs->iov.iov[i].iov_len, dbs->dir, + dbs->iov.iov[i].iov_len); } qemu_iovec_reset(&dbs->iov); } @@ -130,8 +130,8 @@ static void dma_blk_cb(void *opaque, int ret) while (dbs->sg_cur_index < dbs->sg->nsg) { cur_addr = dbs->sg->sg[dbs->sg_cur_index].base + dbs->sg_cur_byte; cur_len = dbs->sg->sg[dbs->sg_cur_index].len - dbs->sg_cur_byte; - mem = dma_memory_map(dbs->sg->as, cur_addr, &cur_len, dbs->dir, - MEMTXATTRS_UNSPECIFIED); + mem = dma_memory_map_guarded(dbs->sg->dev, dbs->sg->as, cur_addr, + &cur_len, dbs->dir, MEMTXATTRS_UNSPECIFIED); /* * Make reads deterministic in icount mode. Windows sometimes issues * disk read requests with overlapping SGs. It leads @@ -145,7 +145,7 @@ static void dma_blk_cb(void *opaque, int ret) if (ranges_overlap((intptr_t)dbs->iov.iov[i].iov_base, dbs->iov.iov[i].iov_len, (intptr_t)mem, cur_len)) { - dma_memory_unmap(dbs->sg->as, mem, cur_len, + dma_memory_unmap_guarded(dbs->sg->dev, dbs->sg->as, mem, cur_len, dbs->dir, cur_len); mem = NULL; break; @@ -296,7 +296,8 @@ static MemTxResult dma_buf_rw(void *buf, dma_addr_t len, dma_addr_t *residual, while (len > 0) { ScatterGatherEntry entry = sg->sg[sg_cur_index++]; dma_addr_t xfer = MIN(len, entry.len); - res |= dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, attrs); + res |= dma_memory_rw_guarded(sg->dev, sg->as, entry.base, ptr, xfer, + dir, attrs); ptr += xfer; len -= xfer; xresidual -= xfer; From patchwork Fri Oct 28 19:16:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696459 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=lAUZpich; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXQR6zKNz23lF for ; Sat, 29 Oct 2022 06:18:38 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUrC-0001ho-Oz; Fri, 28 Oct 2022 15:17:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr7-0001g3-F9 for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:26 -0400 Received: from esa3.hc2706-39.iphmx.com ([68.232.154.118]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr5-00031p-F0 for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:25 -0400 X-IronPort-RemoteIP: 209.85.166.198 X-IronPort-MID: 234246930 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:JnEU26PxoXkXPcTvrR0XlcFynXyQoLVcMsEvi/4bfWQNrUog3jIFy WFODW7VPK6OZGajc9l1Od6z9UlV6JOAydVlHAZtpSBmQkwRlceUXt7xwmUcns+xwm8vaGo9s q3yv/GZdJhcokf0/0vraP65xZVF/fngbqLmD+LZMTxGSwZhSSMw4TpugOd8iYNz6TSDK1rlV eja/ouOZTdJ5xYuajhOsvrZ+Es01BjPkGhwUmIWNKgjUGD2yiF94KI3fcmZM3b+S49IKe+2L 86rIGaRpz6xE78FU7tJo56iGqE4aue60Tum0xK6b5Ofbi1q/UTe5Eqa2M00Mi+7gx3R9zx4J U4kWZaYEG/FNYWV8AgRvoUx/4iT8sSq9ZeeSUVTv/B/wGWWf2v37u10FHgzfrci975IXG5u+ N8xfWVlghCr34pawZq+Q+how8UndYzlZdJP/H5nyj7dALAtRpWrr6fiv4cJmmdtwJkQQ7CHN ppxhTlHNXwsZzVGPkcRBIgWlvrui3XiG9FdgAjO+fBrvTmIlGSd1pDVc8CEY8Clfv9qsWKCj 0jbvG3gCEgVYYn3JT2ttyjEavX0tTr2XZ9XGLCm+/pChlqVyWoOThoMWjOGTeKRj0e/X5deL xVR9HN//e4980ukStS7VBq9yJKZgiMhtxNrO7VSwGmwJmD8v2512kBsouZ9VeEb IronPort-HdrOrdr: A9a23:EsfiiKjutIjifXZ6+51bOlKCQXBQXuAji2hC6mlwRA09TyX4ra yTdZEgviMc5wx/ZJhNo7690cu7IU80hKQV3WB5B97LNmTbUQ2TXeNfBODZsl7d8kPFh4lg/J YlX69iCMDhSXhW5PyKhjVQyuxQpeVvJprY4dvj8w== Received: from mail-il1-f198.google.com ([209.85.166.198]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:19 -0400 Received: by mail-il1-f198.google.com with SMTP id s2-20020a056e021a0200b0030087a59cf9so1900573ild.11 for ; Fri, 28 Oct 2022 12:17:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=zccmR32lXEF/vauFBFHowkJOCOp1zoL6e7IhPGS3/PQ=; b=lAUZpichTNkFUi46vz5yGuN53yia6fGE2M4bd34AxqMGCUiZ20zjzjEAI4HQMbdCvp B2R+mzHCTQUCnCX1bOg6NXB3j9H7zsGWRCBH7tAr4n0wWN43rvTFoUHXFXbLnXxsqm0/ opNYH9U1gdBGWCrFDH0D9di6hRMq3SMKLvUqKOq+bE90a0r9VBdoDks051qvKERLVNUD CiyFgm6tmQMvnddp6wk4CHh38tH8ZKIkFIXlVwm6IQsNVkWpNS5PbEV29Zp5LuULRSCJ zrhOy9ti9Jd8jR5r0iUIgUrU+/mrdepzpO8ewUs/EzWXficunRR8AEvcZ5m2pxkWD7ft 0LvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zccmR32lXEF/vauFBFHowkJOCOp1zoL6e7IhPGS3/PQ=; b=wNskX3eNsaIbjFEFvhbVsBZN6fkUWxcB+HRPqbCegYIpiLI0WxRtWkKH6ZTPqzX/fc 7uhSj82GC3gJlAaWsJE7hrprGe6hbODnq6vSaP5qVpk8+byPHfnotycuiyrnwMG5Inqz jb0TxXxYfdvPZ634pwxAsZlB/r/kzh+r29+6cta63orCnBLxWkVX3aO4a6bEVmllJHVd 9KTjP1CNA4Ytm4sjXM9Zs+dAb/zVf4enA01y33JOfh4gSV0R646+i4a8cXOrRslAnUkN DHWxlIdbu4uCKUY9pO81UFdAoZeZOJZ9S4KakN0zlBeBfgnzlNgjQ5oDMLZYt/rDk8yH UBng== X-Gm-Message-State: ACrzQf3VIIHBEHbHdeTGg6gxFjVINm1nyqRtVnviCi7HpQhAC3Iz5LFW 2mOJRsbB5VNSXfpkv4Jis6o9qlNJWULiRMbe8FpgI/r9zJGi0o2r8D+5Mi65WfesGsLOoNqxlW1 6RQKQ4P3IINGbltQBWzsBlf+Xb9oMQA== X-Received: by 2002:a5d:8d87:0:b0:6bb:bd2a:7535 with SMTP id b7-20020a5d8d87000000b006bbbd2a7535mr565318ioj.36.1666984639338; Fri, 28 Oct 2022 12:17:19 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7IREEdw5zsHIjadNYdBgV/Br+jc6myAyCC1z9eBmw7K8xzJVFpbVJNm7PqIzLb6fviud7vIA== X-Received: by 2002:a5d:8d87:0:b0:6bb:bd2a:7535 with SMTP id b7-20020a5d8d87000000b006bbbd2a7535mr565297ioj.36.1666984639141; Fri, 28 Oct 2022 12:17:19 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:18 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 3/7] ahci: switch to guarded DMA acccesses Date: Fri, 28 Oct 2022 15:16:44 -0400 Message-Id: <20221028191648.964076-4-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=68.232.154.118; envelope-from=alxndr@bu.edu; helo=esa3.hc2706-39.iphmx.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Fixes: https://gitlab.com/qemu-project/qemu/-/issues/62 Signed-off-by: Alexander Bulekov --- hw/ide/ahci.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 7ce001cacd..ffa817eebe 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -240,19 +240,21 @@ static void ahci_trigger_irq(AHCIState *s, AHCIDevice *d, ahci_check_irq(s); } -static void map_page(AddressSpace *as, uint8_t **ptr, uint64_t addr, +static void map_page(AHCIDevice *ad, uint8_t **ptr, uint64_t addr, uint32_t wanted) { hwaddr len = wanted; if (*ptr) { - dma_memory_unmap(as, *ptr, len, DMA_DIRECTION_FROM_DEVICE, len); + dma_memory_unmap_guarded(DEVICE(ad), ad->hba->as, + *ptr, len, DMA_DIRECTION_FROM_DEVICE, len); } - *ptr = dma_memory_map(as, addr, &len, DMA_DIRECTION_FROM_DEVICE, - MEMTXATTRS_UNSPECIFIED); + *ptr = dma_memory_map_guarded(DEVICE(ad), ad->hba->as, addr, &len, + DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); if (len < wanted && *ptr) { - dma_memory_unmap(as, *ptr, len, DMA_DIRECTION_FROM_DEVICE, len); + dma_memory_unmap_guarded(DEVICE(ad), ad->hba->as, *ptr, len, + DMA_DIRECTION_FROM_DEVICE, len); *ptr = NULL; } } @@ -720,7 +722,7 @@ static char *ahci_pretty_buffer_fis(const uint8_t *fis, int cmd_len) static bool ahci_map_fis_address(AHCIDevice *ad) { AHCIPortRegs *pr = &ad->port_regs; - map_page(ad->hba->as, &ad->res_fis, + map_page(ad, &ad->res_fis, ((uint64_t)pr->fis_addr_hi << 32) | pr->fis_addr, 256); if (ad->res_fis != NULL) { pr->cmd |= PORT_CMD_FIS_ON; @@ -747,7 +749,7 @@ static bool ahci_map_clb_address(AHCIDevice *ad) { AHCIPortRegs *pr = &ad->port_regs; ad->cur_cmd = NULL; - map_page(ad->hba->as, &ad->lst, + map_page(ad, &ad->lst, ((uint64_t)pr->lst_addr_hi << 32) | pr->lst_addr, 1024); if (ad->lst != NULL) { pr->cmd |= PORT_CMD_LIST_ON; From patchwork Fri Oct 28 19:16:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696461 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=LsxyIb9E; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXQS00yHz23lS for ; Sat, 29 Oct 2022 06:18:38 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUrC-0001hR-3Z; Fri, 28 Oct 2022 15:17:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrA-0001h1-S6 for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:28 -0400 Received: from esa6.hc2706-39.iphmx.com ([216.71.137.79]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr8-00032c-V0 for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:28 -0400 X-IronPort-RemoteIP: 209.85.166.69 X-IronPort-MID: 237806689 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:1Mjc26BqzeWu3hVW/5nhw5YqxClBgxIJ4kV8jS/XYbTApD120TFUx jcYC26EMveKa2HzLY0gatvlo01SsJWHzddiTANkpHpgcSl2pJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdleF+lH3dOCJQUBUjcmgXqD7BPPPJhd/TAplTDZJoR94kqsyj5UAbeKRWmthg vuv5ZyCULOZ82QsaDhNs/jT8EgHUMna41v0gHRvPZing3eDzxH5PLpHTYmtIn3xRJVjH+LSb 44vG5ngows1Vz90Yj+Uuu+Tnn8iG9Y+DiDX4pZiYJVOtzAZzsAEPgfXA9JHAatfo23hc9mcU 7yhv7TpIesiFvSkdOjwz3C0usyxVEFL0OavHJSxjSCc5x3fbES856hvN2AzJ4II4cddJV5nr cVNfVjhbjjb7w636LeyS+0ph8N6ace1bcUQvXZvyTyfBvEjKXzBa/+StJkIgXFp2J4IQ6e2i 8kxMFKDaDzJZw1JNk0/Ao94keu17pX6W2cD9wLN+/RnsgA/yiR64oPHOcr4JOemTPtnvGO3p UfY+Vn2V0Ry2Nu3jGDtHmiXrvbCmD6+VI8MGbmQ8Plsj1uOgGsJB3UruUCTpPC4jgu/XIsaJ RJFvCUpqqc2+QqgSdyVswCEnUNodyU0A7J4e9DWIinUlcI4Py7x6rA4cwN8 IronPort-HdrOrdr: A9a23:Dx0/Walr78FAx+99aVPbFsLEJXTpDfIL3DAbv31ZSRFFG/Fw9v re5MjzsCWetN9/Yh8dcLy7VZVpbxvnlKKdorNhWItKPzOW21dATrsSlLcKqgeIc0fDH4hmpM VdmsNFZ+EYY2IXsS+02njdLz+M+qjhzIm4wc3l5zNGSwVybqFp6A10TjycDlZ9SGB9ZabRUK DsgPZ6mw== Received: from mail-io1-f69.google.com ([209.85.166.69]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:21 -0400 Received: by mail-io1-f69.google.com with SMTP id x19-20020a0566022c5300b006c7e5c33b6eso4094035iov.7 for ; Fri, 28 Oct 2022 12:17:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/qKjWcvqbYAlP1L6WLudSWRDVzn6+aLRL1kY/UEGm4k=; b=LsxyIb9E+yp9dZcYkoppNQJ5ze628sU4ovMw74piW88dVvBUaaQjq3jkR//7td5pP4 pIbYsVimAqe1yOL1Cp1oyah8sY44HqRpcxju5lUggeJuHUmYxGPZT5pI6OImGAqV3K2A Ai7ktsQhC+r+FMH56uJmEQ1FDZfyEeFZZ9eCcRgYj0YP+QkIrMvnX9el9eq77CNRV/YQ I0snTDrprsa4CYj8F8XAccZ2P8E1Y5XTEIlPriUYkfcEJ3RKCSVZQM+QHUGiXyjB5hoV XXpM9nWvrKf06QQ+s7BQbRf7ItytOwrAY+Qt5rbDYPF/s7jnNGdDkMSyeaSa5AQvwMib AThg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/qKjWcvqbYAlP1L6WLudSWRDVzn6+aLRL1kY/UEGm4k=; b=bw1a+kgjkl4xSLYV3Nb9qfefBhFMdOMrdgBqAQM0VZwXbEerRPlqAqAbmcV91GPQim LrT6aTdLvTb3+57RgqC5JCUSyPc43dvhAExQ2IDDlWGqPOkgPis3Fmsj5PlqF2eyl+3q cnA0OgPO57ckglwlsbqE2q3YIOtxx7JLEuJ00bv/KSkA6JmXG0NiUQW4CMJdNivpW/qm RDsqUfKZ0V8dV+idVVUGOSy22QwLX+8JHgrFJrJ8L9NGXA8tz8tT72Rqb/ob4ld+ZpBE rw8LDJLukMX4GvS+7uqofS3UJjyOa4W+cazTPbbXWmZkiybVaeJjj/B3Amrf3G6WkrSe XIyg== X-Gm-Message-State: ACrzQf2N5j5pOCgLsFgtu42QzYamYRJnqvdfD7mdyBVB9duic2FzCq5W N7lC3hviiVf4Tqjy9+mkI/mDctxIzyE2zjXexE2PXnURiJ+i1mtMzraCnkxXi3HJTfgL02he48B bt5hpfQqwaaWMNdbHr/2rXgLbRWVw7w== X-Received: by 2002:a6b:8b0a:0:b0:6bd:3b81:c75 with SMTP id n10-20020a6b8b0a000000b006bd3b810c75mr500883iod.197.1666984641196; Fri, 28 Oct 2022 12:17:21 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5mTrqcx+tvIeMKmYtE7khY5uvhlTJ2INPJYvltyUkQEaLFwfnG8RVnE9vHeRterN5tz8WwzA== X-Received: by 2002:a6b:8b0a:0:b0:6bd:3b81:c75 with SMTP id n10-20020a6b8b0a000000b006bd3b810c75mr500852iod.197.1666984640942; Fri, 28 Oct 2022 12:17:20 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:20 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 4/7] sdhci: switch to guarded DMA accesses Date: Fri, 28 Oct 2022 15:16:45 -0400 Message-Id: <20221028191648.964076-5-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=216.71.137.79; envelope-from=alxndr@bu.edu; helo=esa6.hc2706-39.iphmx.com X-Spam_score_int: 0 X-Spam_score: -0.1 X-Spam_bar: / X-Spam_report: (-0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1282 Signed-off-by: Alexander Bulekov --- hw/sd/sdhci.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 0e5e988927..0ebbc13862 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -616,8 +616,9 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) s->blkcnt--; } } - dma_memory_write(s->dma_as, s->sdmasysad, &s->fifo_buffer[begin], - s->data_count - begin, MEMTXATTRS_UNSPECIFIED); + dma_memory_write_guarded(DEVICE(s), s->dma_as, s->sdmasysad, + &s->fifo_buffer[begin], s->data_count - begin, + MEMTXATTRS_UNSPECIFIED); s->sdmasysad += s->data_count - begin; if (s->data_count == block_size) { s->data_count = 0; @@ -637,8 +638,9 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState *s) s->data_count = block_size; boundary_count -= block_size - begin; } - dma_memory_read(s->dma_as, s->sdmasysad, &s->fifo_buffer[begin], - s->data_count - begin, MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, s->sdmasysad, + &s->fifo_buffer[begin], s->data_count - begin, + MEMTXATTRS_UNSPECIFIED); s->sdmasysad += s->data_count - begin; if (s->data_count == block_size) { sdbus_write_data(&s->sdbus, s->fifo_buffer, block_size); @@ -670,11 +672,11 @@ static void sdhci_sdma_transfer_single_block(SDHCIState *s) if (s->trnmod & SDHC_TRNS_READ) { sdbus_read_data(&s->sdbus, s->fifo_buffer, datacnt); - dma_memory_write(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, - MEMTXATTRS_UNSPECIFIED); + dma_memory_write_guarded(DEVICE(s), s->dma_as, s->sdmasysad, + s->fifo_buffer, datacnt, MEMTXATTRS_UNSPECIFIED); } else { - dma_memory_read(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, s->sdmasysad, + s->fifo_buffer, datacnt, MEMTXATTRS_UNSPECIFIED); sdbus_write_data(&s->sdbus, s->fifo_buffer, datacnt); } s->blkcnt--; @@ -696,8 +698,8 @@ static void get_adma_description(SDHCIState *s, ADMADescr *dscr) hwaddr entry_addr = (hwaddr)s->admasysaddr; switch (SDHC_DMA_TYPE(s->hostctl1)) { case SDHC_CTRL_ADMA2_32: - dma_memory_read(s->dma_as, entry_addr, &adma2, sizeof(adma2), - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, entry_addr, &adma2, + sizeof(adma2), MEMTXATTRS_UNSPECIFIED); adma2 = le64_to_cpu(adma2); /* The spec does not specify endianness of descriptor table. * We currently assume that it is LE. @@ -708,8 +710,8 @@ static void get_adma_description(SDHCIState *s, ADMADescr *dscr) dscr->incr = 8; break; case SDHC_CTRL_ADMA1_32: - dma_memory_read(s->dma_as, entry_addr, &adma1, sizeof(adma1), - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, entry_addr, &adma1, + sizeof(adma1), MEMTXATTRS_UNSPECIFIED); adma1 = le32_to_cpu(adma1); dscr->addr = (hwaddr)(adma1 & 0xFFFFF000); dscr->attr = (uint8_t)extract32(adma1, 0, 7); @@ -721,13 +723,13 @@ static void get_adma_description(SDHCIState *s, ADMADescr *dscr) } break; case SDHC_CTRL_ADMA2_64: - dma_memory_read(s->dma_as, entry_addr, &dscr->attr, 1, - MEMTXATTRS_UNSPECIFIED); - dma_memory_read(s->dma_as, entry_addr + 2, &dscr->length, 2, - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, entry_addr, &dscr->attr, + 1, MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, entry_addr + 2, + &dscr->length, 2, MEMTXATTRS_UNSPECIFIED); dscr->length = le16_to_cpu(dscr->length); - dma_memory_read(s->dma_as, entry_addr + 4, &dscr->addr, 8, - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(s), s->dma_as, entry_addr + 4, + &dscr->addr, 8, MEMTXATTRS_UNSPECIFIED); dscr->addr = le64_to_cpu(dscr->addr); dscr->attr &= (uint8_t) ~0xC0; dscr->incr = 12; @@ -792,7 +794,7 @@ static void sdhci_do_adma(SDHCIState *s) s->data_count = block_size; length -= block_size - begin; } - res = dma_memory_write(s->dma_as, dscr.addr, + res = dma_memory_write_guarded(DEVICE(s), s->dma_as, dscr.addr, &s->fifo_buffer[begin], s->data_count - begin, attrs); @@ -821,7 +823,8 @@ static void sdhci_do_adma(SDHCIState *s) s->data_count = block_size; length -= block_size - begin; } - res = dma_memory_read(s->dma_as, dscr.addr, + res = dma_memory_read_guarded(DEVICE(s), s->dma_as, + dscr.addr, &s->fifo_buffer[begin], s->data_count - begin, attrs); From patchwork Fri Oct 28 19:16:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696463 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=gNSVOOX+; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXRz11j1z23l4 for ; Sat, 29 Oct 2022 06:19:59 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUsE-0002TU-Ld; Fri, 28 Oct 2022 15:18:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrP-0001ka-Tx for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:55 -0400 Received: from esa11.hc2706-39.iphmx.com ([216.71.137.81]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrO-00035Z-A8 for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:43 -0400 X-IronPort-RemoteIP: 209.85.166.199 X-IronPort-MID: 235077471 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:paKVoav4vaSR1RX4hstfTgElDOfnVOtcMUV32f8akzHdYApBsoF/q tZmKWGBPf7eZGT1fI9zbonloBlQ6MDWx9BnHAVvrH9nH3wQ9ZOVVN+UEBzMMnLJJKUvbq7GA +byyDXkBJppJpMJjk71atANlVEliefSAOKU5NfsYkhZXRVjRDoqlSVtkus4hp8AqdWiCkaGt MiaT/f3YTdJ4BYpdDNJg06/gEk35q6r4GlI5gdWic1j5zcyqVFEVPrzGonsdxMUcqEMdsamS uDKyq2O/2+x13/B3fv8z94X2mVTKlLjFVHmZkh+AsBOsTAbzsAG6ZvXAdJHAathZ5RlqPgqo DlFncTYpQ7EpcQgksxEO/VTO3gW0aGrZNYriJVw2CCe5xSuTpfi/xlhJHkTL7QzovcuO1ENq uM6MhBVXk+Rp+3jldpXSsE07igiBMziPYdau3U5iD+AXKdgTpfETKHHo9Rf2V/chOgURaeYN 5dfMGQxKk2RMnWjOX9OYH46tO6sln/zaRVStRSYqbdfD237llcsiOeybIWMEjCMbc92rGGVr 2vWxX7gEzg3DIKU8h6asUv504cjmgu+Aur+DoaQ7/NvnRify3IeDDUQUl20p+T/jVSxM++zM GQR8ysq6Kk2rQmlF4isGRK/p3GAs1gXXN84//AG1TxhA5H8u26xblXohBYdOLTKaOdeqeQW6 2K0 IronPort-HdrOrdr: A9a23:HWh2vqz7sYUUmdc6PfmvKrPw+r1zdoMgy1knxilNoNJuA6ilfq eV7YgmPHrP4gr5N0tQ/+xoVJPwI080sKQFmrX5Xo3SITUOxlHYVb2KhLGKq1aQeBEWtNQtr5 uIG5IfNDSaNykcsS+V2njcL/8QhPOqyuSHv9v/8ltaZT1WSshbnnhE48WgfnGehjMqOXP0Lv ShD7J81kKdkL0sAaWGOkU= Received: from mail-il1-f199.google.com ([209.85.166.199]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:23 -0400 Received: by mail-il1-f199.google.com with SMTP id l5-20020a056e0212e500b002fa8ea32922so5740508iln.15 for ; Fri, 28 Oct 2022 12:17:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=yacxBjd9WYnOr14Yvueo+2F2nRf/DEFGUT3gl3J6l4s=; b=gNSVOOX+VxBfHFbMTmgXw2BVWWOJUCYr2rGoIzZL41PoPGYrto9Mw5lYWUb9KQwD9i V6k3UpNXZxjLaL9FQXxn+VbmxStvFHZOp/pPUSo7dAS5eDqEHzprCdiWaz9eQuJA6HL0 Vxz78DTUbxpYSOtl8g2HCS81ZcWwlaolpCsSZPI4eXtg9KKXsVLVqzlyUa40zewRrC2V +pQyprjYmjW9RQDchDeaCjcY+8x5MjIMigbRUPPc4n0O6CyqnP+wp4sLdO3Xr0IbIUI2 Vc9xTPSZGZTHGSefCQ4gqfIKwt9yM6DVvBiEWbmwjion9GgCXTNVsraAZlhDyj9/O3V6 +Y4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yacxBjd9WYnOr14Yvueo+2F2nRf/DEFGUT3gl3J6l4s=; b=UVgfd2z6zi1xwyx+daYWKc8MyGGbLa3Lu3MHxuOwFNMUD8o4cosIojv2+DXZX/tlBz uKPHYFtaEdsJRfWX7G52xXhFIUGjKBPE7DAKe7kgVu+VnZFfyraA6c/fJ+lYrOpJO4At dB3H55k2n00VXAsGROdFN0obvHZwdKZRnLh/mBcTw8K6mWuk9mPtIUgPtwENAadbkZsu g+/P15O4ZkvB0ZLsTV0/yinsUD1Ie9CuwM3W9cIdaehhhfXFb7dxDJxHH6hvH2HHiHqy yT/hifPW3dJiED5O5zvY0QEsgV8RIYl6EYkb7ndM5XEz06BsgcTLBz3Bly/0R8/5OJUo BSHQ== X-Gm-Message-State: ACrzQf2IImi4rcJOBTqVCPQn3uH0hAE+BIUjLe3zszJSZkxiE3gxR/46 0ps8F5CRQtpUdlnPjuFRhEPZHEtA3Afsxl0pGz5WmtVZY1SBk7iZTJOqmxW5oyiddb/8qDsLEfe APoSiPPMpOly1HVaGLx4mghgOZRJNqA== X-Received: by 2002:a92:730c:0:b0:2f5:7dd7:45f7 with SMTP id o12-20020a92730c000000b002f57dd745f7mr485932ilc.12.1666984642962; Fri, 28 Oct 2022 12:17:22 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5nEiX91yzJmO74zDO+JYuoQJTVYuYm92jb22TnDQy3QDaN+KxeJzXwGsV3ooulZcOHjhlD9Q== X-Received: by 2002:a92:730c:0:b0:2f5:7dd7:45f7 with SMTP id o12-20020a92730c000000b002f57dd745f7mr485903ilc.12.1666984642727; Fri, 28 Oct 2022 12:17:22 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:22 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 5/7] ehci: switch to guarded DMA accesses Date: Fri, 28 Oct 2022 15:16:46 -0400 Message-Id: <20221028191648.964076-6-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=216.71.137.81; envelope-from=alxndr@bu.edu; helo=esa11.hc2706-39.iphmx.com X-Spam_score_int: 0 X-Spam_score: -0.1 X-Spam_bar: / X-Spam_report: (-0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Alexander Bulekov --- hw/usb/hcd-ehci.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index d4da8dcb8d..b93f4d44c1 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -383,8 +383,8 @@ static inline int get_dwords(EHCIState *ehci, uint32_t addr, } for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { - dma_memory_read(ehci->as, addr, buf, sizeof(*buf), - MEMTXATTRS_UNSPECIFIED); + dma_memory_read_guarded(DEVICE(ehci), ehci->as, addr, buf, + sizeof(*buf), MEMTXATTRS_UNSPECIFIED); *buf = le32_to_cpu(*buf); } @@ -406,8 +406,8 @@ static inline int put_dwords(EHCIState *ehci, uint32_t addr, for (i = 0; i < num; i++, buf++, addr += sizeof(*buf)) { uint32_t tmp = cpu_to_le32(*buf); - dma_memory_write(ehci->as, addr, &tmp, sizeof(tmp), - MEMTXATTRS_UNSPECIFIED); + dma_memory_write_guarded(DEVICE(ehci), ehci->as, addr, &tmp, + sizeof(tmp), MEMTXATTRS_UNSPECIFIED); } return num; From patchwork Fri Oct 28 19:16:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696464 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=LO8iEZHt; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXT734yRz23kY for ; Sat, 29 Oct 2022 06:20:59 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUrA-0001h2-Vr; Fri, 28 Oct 2022 15:17:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr9-0001gK-Ml for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:27 -0400 Received: from esa3.hc2706-39.iphmx.com ([68.232.154.118]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUr7-00031p-VN for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:27 -0400 X-IronPort-RemoteIP: 209.85.166.72 X-IronPort-MID: 234246958 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:gqyh9q2HqAN1WcGkb/bD5WJzkn2cJEfYwER7XKvMYLTBsI5bpzdTz 2ZJDDqBPqnYYTGjKYxxPo63pE0C657Sz9NmTgVlqSg9HnlHl5H5CIXCJC8cHc8zwu4v7q5Dx 59DAjUVBJlsFhcwnj/0bv676yEUOZigHtLUEPTDNj16WThqQSIgjQMLs+Mii8tjjMPR7zml4 LsemOWCfg74s9JIGjhMsfja8Ek/5K+aVA4w5TTSW9ga5DcyqFFIVPrzFYnpR1PkT49dGPKNR uqr5NlVKUuAon/Bovv8+lrKWhRiroz6ZGBiuVIPM0SWuSWukwRpukoN2FvwXm8M49mBt4gZJ NygLvVcQy9wVkHHsL11vxW1j0iSlECJkVPKCSHXjCCd86HJW2fNgMV+Hn0kBNdCxPYvJURC/ vMkCT9YO3hvh8ruqF66Yuxlh8BmLc6yeY1A4DdvyjbWCftgSpfGK0nIzYUAjXFg24YXQ6iYO JBxhTlHNXwsZzVGPkcRBIgWlvrui3XiG9FdgAjO+fBrvTmOnGSd1pDfNuDLf86gff8NoX/Jm 3jD5US6D0wVYYn3JT2ttyjEavX0tTr2XZ9XGLCm+/pChlqVyWoOThoMWjOGTeKRj0e/X5deL BVR9HV066c180OvQ5/2WBjQTGO4gyPwkuF4S4USgDxhAIKIi+pFLgDolgJ8VeE= IronPort-HdrOrdr: A9a23:lS81N699174/9W5qNu5uk+DiI+orL9Y04lQ7vn2ZKCY4TiX8ra uTdZsguiMc5Ax+ZJhDo7C90di7IE80nKQdieN9AV7FZniFhILCFvAA0WKN+UyGJwTOssJbyK d8Y+xfJbTLfD5HZB/BkWyF+gAbsb26zJw= Received: from mail-io1-f72.google.com ([209.85.166.72]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:25 -0400 Received: by mail-io1-f72.google.com with SMTP id y10-20020a5d914a000000b00688fa7b2252so4976441ioq.0 for ; Fri, 28 Oct 2022 12:17:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jrn1MlV7oDqgvI2AhpwJLKmem1HXG/IdQlij5K5LJU0=; b=LO8iEZHtP1b9chiKmYu+aYJXeMNXcFWp7oNFeDKvlF0Ar8JbqyWorbHEP5eIpOem6Y jhBvnbOfzY84F3LD1r1rGxcO05tg6FpsnNj6eXX4cUCn+CTQJXJHt7RonhV0Mf1b1L4O lV2yXK50eQ84JQZRRTQB19Eb/JsYAAzFFIGF6efPLg10iZyS85eyMVR1FV1ePPAkp/Qs l46fG0DUfbDNo8szxJaNptV4H7esvgNS+1ElY0D+kLDKve65WcCvhrsh13JDxIY49oMo iwxxNa7DaWaS5CsyBs27G3JREq3UowWik6qAscctymNokQMVZkIUiFsbzBbXjUzeZrn8 n90A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jrn1MlV7oDqgvI2AhpwJLKmem1HXG/IdQlij5K5LJU0=; b=3v8SyQaOiFWkVLf/fu0HJHKIC/miBEFYoPyXEUusCX1tUjoXZ03ZDxC2Bo2XERFBHg u5oxxkbUmxOhsec8o+Dqwbt3DkYkz4eCcnD2jU5ouG3B3fs37mFCnv64AFTOK0Udp0sD omtHtCSLVub4i76p0zp6DHjHLVWK/crZ/1G/jBUD10q2Bq3SqvCf2UDHXivBno9/nJ2m vJV/YZ1LUp0dE7b01L5+By5DInv3cUJ2ggZCBaducpusACRE+/Cr4RqU5ozvgyLfwcAx 9SwBw2yuBdNDIvntyZOus/2466m0dRKNQl4q3xt66zGJ7WKPuEwHvtfrUo9HRhnRvP9W cPSQ== X-Gm-Message-State: ACrzQf2EAXUjZUdnDo89H0589WPRZPeHPKkbuoOu8M1kDU8Q8RTUkhVJ bad1CO7o4k76qXnurLDl5x9vzi86JQBBF7QraceQvP+C6e8VlrM77i5MdD9j5h9f2FigmKfGi1M ZwXbsFy9afoyJlcbSkx1QfwcjBYipOg== X-Received: by 2002:a05:6602:1606:b0:6bc:e979:17fe with SMTP id x6-20020a056602160600b006bce97917femr563439iow.114.1666984644713; Fri, 28 Oct 2022 12:17:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4jxb3bs7ljOGEUrge6j48TR5UxTsQ1a1+/N95Gs0UIk/4bZYn4hU5nmwclyS3jpAXDGSJ5QQ== X-Received: by 2002:a05:6602:1606:b0:6bc:e979:17fe with SMTP id x6-20020a056602160600b006bce97917femr563410iow.114.1666984644485; Fri, 28 Oct 2022 12:17:24 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:24 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 6/7] xhci: switch to guarded DMA accesses Date: Fri, 28 Oct 2022 15:16:47 -0400 Message-Id: <20221028191648.964076-7-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=68.232.154.118; envelope-from=alxndr@bu.edu; helo=esa3.hc2706-39.iphmx.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Alexander Bulekov --- hw/usb/hcd-xhci.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index 8299f35e66..2621dde7ea 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -494,7 +494,7 @@ static inline void xhci_dma_read_u32s(XHCIState *xhci, dma_addr_t addr, assert((len % sizeof(uint32_t)) == 0); - if (dma_memory_read(xhci->as, addr, buf, len, + if (dma_memory_read_guarded(DEVICE(xhci), xhci->as, addr, buf, len, MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); @@ -521,7 +521,7 @@ static inline void xhci_dma_write_u32s(XHCIState *xhci, dma_addr_t addr, for (i = 0; i < n; i++) { tmp[i] = cpu_to_le32(buf[i]); } - if (dma_memory_write(xhci->as, addr, tmp, len, + if (dma_memory_write_guarded(DEVICE(xhci), xhci->as, addr, tmp, len, MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); @@ -632,8 +632,8 @@ static void xhci_write_event(XHCIState *xhci, XHCIEvent *event, int v) ev_trb.status, ev_trb.control); addr = intr->er_start + TRB_SIZE*intr->er_ep_idx; - if (dma_memory_write(xhci->as, addr, &ev_trb, TRB_SIZE, - MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { + if (dma_memory_write_guarded(DEVICE(xhci), xhci->as, addr, &ev_trb, + TRB_SIZE, MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); xhci_die(xhci); @@ -698,8 +698,8 @@ static TRBType xhci_ring_fetch(XHCIState *xhci, XHCIRing *ring, XHCITRB *trb, while (1) { TRBType type; - if (dma_memory_read(xhci->as, ring->dequeue, trb, TRB_SIZE, - MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { + if (dma_memory_read_guarded(DEVICE(xhci), xhci->as, ring->dequeue, trb, + TRB_SIZE, MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); return 0; @@ -750,8 +750,8 @@ static int xhci_ring_chain_length(XHCIState *xhci, const XHCIRing *ring) do { TRBType type; - if (dma_memory_read(xhci->as, dequeue, &trb, TRB_SIZE, - MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { + if (dma_memory_read_guarded(DEVICE(xhci), xhci->as, dequeue, &trb, + TRB_SIZE, MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); return -1; @@ -820,8 +820,8 @@ static void xhci_er_reset(XHCIState *xhci, int v) xhci_die(xhci); return; } - if (dma_memory_read(xhci->as, erstba, &seg, sizeof(seg), - MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { + if (dma_memory_read_guarded(DEVICE(xhci), xhci->as, erstba, &seg, + sizeof(seg), MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory access failed!\n", __func__); xhci_die(xhci); @@ -2445,8 +2445,8 @@ static TRBCCode xhci_get_port_bandwidth(XHCIState *xhci, uint64_t pctx) /* TODO: actually implement real values here */ bw_ctx[0] = 0; memset(&bw_ctx[1], 80, xhci->numports); /* 80% */ - if (dma_memory_write(xhci->as, ctx, bw_ctx, sizeof(bw_ctx), - MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { + if (dma_memory_write_guarded(DEVICE(xhci), xhci->as, ctx, bw_ctx, + sizeof(bw_ctx), MEMTXATTRS_UNSPECIFIED) != MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: DMA memory write failed!\n", __func__); return CC_TRB_ERROR; From patchwork Fri Oct 28 19:16:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Bulekov X-Patchwork-Id: 1696462 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.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: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=bu.edu header.i=@bu.edu header.a=rsa-sha256 header.s=s1gsbu header.b=Ug2MFfV1; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4MzXRx4xMbz23l4 for ; Sat, 29 Oct 2022 06:19:57 +1100 (AEDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ooUrD-0001iK-Rt; Fri, 28 Oct 2022 15:17:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrC-0001hk-Gf for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:30 -0400 Received: from esa12.hc2706-39.iphmx.com ([216.71.137.82]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ooUrA-00032v-QE for qemu-devel@nongnu.org; Fri, 28 Oct 2022 15:17:30 -0400 X-IronPort-RemoteIP: 209.85.166.70 X-IronPort-MID: 234207978 X-IronPort-Reputation: None X-IronPort-Listener: OutgoingMail X-IronPort-SenderGroup: RELAY_GSUITE X-IronPort-MailFlowPolicy: $RELAYED IronPort-Data: A9a23:tFcKLKpwNH8g/dfV77xMlm27pydeBmKpZxIvgKrLsJaIsI4StFCzt garIBmBMqqCZzf3c4olPN/lpkwC6JfRy99gS1Fv/n1kEixD9pacVYWSI3mrAy7DdceroGCLT ik9hnssCOhuExcwcz/0auCJQUFUjP3OHPykYAL9EngZbRd+Tys8gg5Ulec8g4p56fC0GArIs t7pyyHlEAbNNwVcbyRFtspvlDs15K6o4WtC7gRlDRx2lAS2e0c9Xcp3yZ6ZciOQrrl8RoaSW +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDX4pZkc/HKbitq/0Te5p0G2M80Mi+7vdkoc+dZk 72hvbToIesg0zaldO41CnG0GAknVUFKFSOuzdFSfqV/wmWfG0YAzcmCA2kpHLJG2eJsXlpQ/ NwjAm5SMRLAmcyflefTpulE3qzPLeHuNYIb/3BnlHTXUq5gTpfETKHHo9Rf2V/chOgURaeYN 5dfMGQxKkuYC/FMEg5/5JYWleO4gHXlWzdF7l+ZuMLb5kCJl1AriOe8b4q9ltqiY/pZtByWg Fn/9XX0MFI3G+yV+T6Lyyf57gPItWahMG4IL5Wh+/t3xVGe2GEXIBsRU1S9vL++kEHWZj5EA 0kd+y5rrK9rsUL0Fp/yWBq3pHPCtRkZMzZNL9AHBMi24vK8y26k6qIsElattPROWBcKeAEX IronPort-HdrOrdr: A9a23:X/ViJKl0yaOQKDyEV3HUsX6NkebpDfL63DAbv31ZSRFFG/FwWf re+MjzsiWE9Ar5PUtLpTnuAtjnfZqxz+8W3WBVB8bYYOCEghrUEGgd1/qa/9SIIUSXnZ8/6U 4jSdkFNDSZNzhHZK3BkW6F+rgbsby62ZHtr8vli1lWcSFWR5dJ0zpZYzzrbXGehzMrOXP6Lv ehDwZ8yQZIAU5nFvhTz0NrPtT+mw== Received: from mail-io1-f70.google.com ([209.85.166.70]) by ob1.hc2706-39.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 28 Oct 2022 15:17:26 -0400 Received: by mail-io1-f70.google.com with SMTP id n23-20020a056602341700b00689fc6dbfd6so4917064ioz.8 for ; Fri, 28 Oct 2022 12:17:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bu.edu; s=s1gsbu; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=O0K6LB5X3Bhl0LmaoOJyUkeJEAh422fW3bU1e7OTrys=; b=Ug2MFfV1H7RIGW/P7ozDd145OdZYX6/qvpUCIiR4W5YH82POAZZOuOlG/DdRAl1KTR nvhxeAnrYjjb+auZaBhXxqYBObfy3IvKf6mrtbME3QbQXuX/JHDXeriDUHhqfN+1smt5 uBX9ApHjoJ9YzkvPYMaZkRWq5WbUFbxbsTd8MD4WQG+zDAoCSjvaFAQu5Jh0F7hU1603 hIRYo3TCudeDYyp2eT6Xv6iz3Th81+xZXyCz4CBovjwSzZFh+BeIQ/NFjaL8Fw/0ROR2 XhO1+KX4QHSIF316ecmwOFnCiDUxv9apc0qQ1Qn7A/GXHn6wyBhihn8h+YxKSob9v/Td Fhpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O0K6LB5X3Bhl0LmaoOJyUkeJEAh422fW3bU1e7OTrys=; b=1jGYiQlwsb/2+adf5DaifvEk2GloXDa/U1TkXNgge4EiNprG6U7l2kkpUKZfH1zKuF E/LjYIq6473t0rj3XB6N4mLiPV5TJugyib1hXtyLcC3E370g+0cva3K6p6ub6bnsWQd4 x2LRcgYBgYyk1wCTWe0uGRhvuJ0kXFzu92VcVoK/ooQf9vMUiHI3JeZv6lkkT4QifG+u m3ToufHafsKdAUCFgqHKOOD3CdqWM73KOsC6OOXYBfD9nqgGfbOLAOMJZvIa6pDySR3T D2vVWHYvCSfFktAlSattpd5mzZnVkmSQXrEI4DsrmTKaEApEtMvjPAsZARXbkroA8tGE OCbQ== X-Gm-Message-State: ACrzQf22aJeW4gLpRBAwdVyyURrVHCGDpbNO5Iz27uwJwy+WrVK+XbUu BcJCBphqS94vSwZdwrf8S9o4o4u9eGIHgHo/kwmY/GltGSHOTHuyP3thQeGMjYiW+mY8uJgCEl1 u6SSbHu+fioCLMEBvYApphkNmEmzlFg== X-Received: by 2002:a05:6602:1648:b0:6bc:e8b6:8cc9 with SMTP id y8-20020a056602164800b006bce8b68cc9mr512016iow.77.1666984646421; Fri, 28 Oct 2022 12:17:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4Pb3iuujC3oJs9B6JdbzM6aBNbsKvnSXzCeGPPikQJ+70XE04V8plDHJeEjQBbgf3w37F4hQ== X-Received: by 2002:a05:6602:1648:b0:6bc:e8b6:8cc9 with SMTP id y8-20020a056602164800b006bce8b68cc9mr512003iow.77.1666984646227; Fri, 28 Oct 2022 12:17:26 -0700 (PDT) Received: from mozz.bu.edu (mozz.bu.edu. [128.197.127.33]) by smtp.gmail.com with ESMTPSA id l5-20020a056e021c0500b002fff117027dsm1878505ilh.13.2022.10.28.12.17.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 12:17:25 -0700 (PDT) From: Alexander Bulekov To: qemu-devel@nongnu.org Cc: Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Mauro Matteo Cascella , Qiuhao Li , Peter Xu , Jason Wang , David Hildenbrand , Gerd Hoffmann , Li Qiang , Thomas Huth , Laurent Vivier , Bandan Das , "Edgar E . Iglesias" , Darren Kenny , Bin Meng , Paolo Bonzini , "Michael S . Tsirkin" , Marcel Apfelbaum , =?utf-8?q?Daniel_P_=2E_Berra?= =?utf-8?q?ng=C3=A9?= , Eduardo Habkost , Jon Maloy , Siqi Chen Subject: [PATCH v3 7/7] usb/libhw: switch to guarded DMA accesses Date: Fri, 28 Oct 2022 15:16:48 -0400 Message-Id: <20221028191648.964076-8-alxndr@bu.edu> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20221028191648.964076-1-alxndr@bu.edu> References: <20221028191648.964076-1-alxndr@bu.edu> MIME-Version: 1.0 X-CES-GSUITE_AUTH: bf3aNvsZpxl8 Received-SPF: pass client-ip=216.71.137.82; envelope-from=alxndr@bu.edu; helo=esa12.hc2706-39.iphmx.com X-Spam_score_int: 0 X-Spam_score: -0.1 X-Spam_bar: / X-Spam_report: (-0.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HK_RANDOM_ENVFROM=0.998, HK_RANDOM_FROM=0.998, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Qemu-devel" Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Fixes: https://gitlab.com/qemu-project/qemu/-/issues/541 Signed-off-by: Alexander Bulekov --- hw/usb/libhw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/usb/libhw.c b/hw/usb/libhw.c index f350eae443..a15e97f76d 100644 --- a/hw/usb/libhw.c +++ b/hw/usb/libhw.c @@ -36,7 +36,7 @@ int usb_packet_map(USBPacket *p, QEMUSGList *sgl) while (len) { dma_addr_t xlen = len; - mem = dma_memory_map(sgl->as, base, &xlen, dir, + mem = dma_memory_map_guarded(sgl->dev, sgl->as, base, &xlen, dir, MEMTXATTRS_UNSPECIFIED); if (!mem) { goto err; @@ -63,7 +63,7 @@ void usb_packet_unmap(USBPacket *p, QEMUSGList *sgl) int i; for (i = 0; i < p->iov.niov; i++) { - dma_memory_unmap(sgl->as, p->iov.iov[i].iov_base, + dma_memory_unmap_guarded(sgl->dev, sgl->as, p->iov.iov[i].iov_base, p->iov.iov[i].iov_len, dir, p->iov.iov[i].iov_len); }