From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260584; cv=none; d=zohomail.com; s=zohoarc; b=CCy1FM1PhaPx91xEL0F+S4p/bQO4SkT1Q1bqgH7q4vRkFVmShgVwSA4VJQqzludzoi5zZ2lqSNMrSLn8uS8G3o8rdaDdLqXMImYGukhlDygz6o87PvEF3iJgVLIck+v6AAN517+E/4tMolx1f02b53+vdYNZ5auQ86uUhLX+E6s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260584; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=DFluRvBp6z9QVaCBe8Ue+D5WXYJ9sfHm6PVL8XfDVUM=; b=HgC/gkTysYbl42NBVOdz8hd+wyankpBYIZEmbdsfrMc7z41TOLnWIWmkvFe9ZR5UmYR0Z8zfNvaPlrbKzPwKnLColeLwcpuV+65Cmwx8cQKYS1LKlgkNORlMa+VEDQ8CUP6+zUNm90maSa58cqMltlwk9hdqtPaDCqX/urgHTXo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260584926643.2608644472712; Thu, 23 Dec 2021 03:56:24 -0800 (PST) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-312-TtnVU5dyOyGBmZaDWzdT9w-1; Thu, 23 Dec 2021 06:56:22 -0500 Received: by mail-wm1-f69.google.com with SMTP id a203-20020a1c7fd4000000b0034574187420so4541348wmd.5 for ; Thu, 23 Dec 2021 03:56:22 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id g1sm4915702wri.103.2021.12.23.03.56.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:56:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260583; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DFluRvBp6z9QVaCBe8Ue+D5WXYJ9sfHm6PVL8XfDVUM=; b=abFA4vOijpyeHy3mJHCOkOexoaX5x1+g57l9UWu8d49YbaAD8BAaLblk+XFfUzg8a4nXZ4 FMEgcAPvgyOf6FGRSwEhuMSMDKaZlr04GUd81dWOawFnE3FM2gWfH9j+6jEJaPSbOPR+Kr KOFcdk5mR3RMsEj60Z96TX6qYC0vd8s= X-MC-Unique: TtnVU5dyOyGBmZaDWzdT9w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DFluRvBp6z9QVaCBe8Ue+D5WXYJ9sfHm6PVL8XfDVUM=; b=TKA6Zm7LTtr2C/0idTcjawniT3ap85wG+itEVmZ/8UfBN1ZndX0UVqDGbyOfJhwCZO AosqVtSbxHObD7oc2eTP/Qzp1mGMLFQ+ldgnnQPQTahSCURRUNnhyVBeRP/gLYmY8bAw 4FkBAxYx7qFRHQlp0sRf9FftewyRSj0H1LG5NWHZNkgE75y5gO/LPM4YvIkhSMZLrO5s sFDhTUBTz0K9NCmIyGvNWdLzz0/bqqVAfTqc7w7EBTNt5X6kqASJCVlQYSicUGJaM5QF YxU+3jmxZ73HUcICjHCykYnwMfCDwpqkKQANh1YhIo2SgJr9xZBdoZ/IcL4R7DaRpEcH PCbg== X-Gm-Message-State: AOAM531F58JhKiA82+k+PFNqAS2Q9I164kyL4glc2qCbvr8fdVsuwEa0 M0xyDtSLf1UO3JyxzmOvrAxGXlWpOFDpdbMrv7mcdVE3YO+2HsYov0YwtxnDgI+DpG0Mn4gtHoA Cx1VY1yNIDLY7gA== X-Received: by 2002:a05:600c:24c:: with SMTP id 12mr1498466wmj.191.1640260581478; Thu, 23 Dec 2021 03:56:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJxBokRYK6ALM3HGg1JCXxCJgsw/1xEQICWEVfpoFNmRzR/YDKv4JTspeT2MSnEe13aTG1tZmQ== X-Received: by 2002:a05:600c:24c:: with SMTP id 12mr1498440wmj.191.1640260581327; Thu, 23 Dec 2021 03:56:21 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 01/23] dma: Let dma_memory_valid() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:32 +0100 Message-Id: <20211223115554.3155328-2-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260587709100001 Let devices specify transaction attributes when calling dma_memory_valid(). Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-2-philmd@redhat.com> --- include/hw/ppc/spapr_vio.h | 2 +- include/sysemu/dma.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 4bea87f39cc..4c45f1579fa 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -91,7 +91,7 @@ static inline void spapr_vio_irq_pulse(SpaprVioDevice *de= v) static inline bool spapr_vio_dma_valid(SpaprVioDevice *dev, uint64_t taddr, uint32_t size, DMADirection dir) { - return dma_memory_valid(&dev->as, taddr, size, dir); + return dma_memory_valid(&dev->as, taddr, size, dir, MEMTXATTRS_UNSPECI= FIED); } =20 static inline int spapr_vio_dma_read(SpaprVioDevice *dev, uint64_t taddr, diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 3201e7901db..296f3b57c9c 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -73,11 +73,11 @@ static inline void dma_barrier(AddressSpace *as, DMADir= ection dir) * dma_memory_{read,write}() and check for errors */ static inline bool dma_memory_valid(AddressSpace *as, dma_addr_t addr, dma_addr_t len, - DMADirection dir) + DMADirection dir, MemTxAttrs attrs) { return address_space_access_valid(as, addr, len, dir =3D=3D DMA_DIRECTION_FROM_DEVICE, - MEMTXATTRS_UNSPECIFIED); + attrs); } =20 static inline MemTxResult dma_memory_rw_relaxed(AddressSpace *as, --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260601; cv=none; d=zohomail.com; s=zohoarc; b=IEyJqoSzT2QXvTlWmGPzB/+C37b5TGVVpJ6Hm6ztUTzelWW26bOFrEXIthunfxDq3SMlsGbakjAVnYLCZ9i0C0ScuHJWiZT0ksVdDq4pWyMMuO3heaYM18DH6RAaQ+NUzyzMXIcizhxN5RHGG400YCW61tBviEODRDB3TPQjX04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260601; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=jlgo6xDtAAtMm1rT3FU1HVvEVWIuXmrKi5ItJcLts/Y=; b=QvJsgeLtR2/9D8WsURxZXtBXzuOe4Of/MTfRfv+glt6CUFTxKDEnSTOiPp7W7K/WOjDkurT3KmMXEoCc/i6PfAqWGxw7y5prauFRjwhb8kZHdI/6cCGVUhNOOFfJRrayD7o7hyRZ5l2qEuRQv2n/cH17vkMuKlnUELN5M5jRuH0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260601442618.7416851843977; Thu, 23 Dec 2021 03:56:41 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-357-gpxZP5HVMqmdunUyhqSaMg-1; Thu, 23 Dec 2021 06:56:38 -0500 Received: by mail-wm1-f70.google.com with SMTP id bg20-20020a05600c3c9400b0033a9300b44bso1874660wmb.2 for ; Thu, 23 Dec 2021 03:56:37 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id j14sm4775556wrn.88.2021.12.23.03.56.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:56:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260599; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jlgo6xDtAAtMm1rT3FU1HVvEVWIuXmrKi5ItJcLts/Y=; b=dAhNipthHWSZ4LSM2c+V2iWSmsJ1ASFjXgfgmCtHtavIj2/BFm/NkpQZiDhkFVYEL7Fk56 jU0Yg/yyVYMKLg2JmZ8r7hKXsXusdQ9XyXfNqFm6M+VHZBfKCxrvLCs5/Ftoe2XD/z9sBF Ra1qG4PsazvBpfn0GkYQ0fHq0N5VL4c= X-MC-Unique: gpxZP5HVMqmdunUyhqSaMg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jlgo6xDtAAtMm1rT3FU1HVvEVWIuXmrKi5ItJcLts/Y=; b=2kLaqOHgo32Fmqp687WclnodL/DspH1qma+EvhDmcfAHBWn8tsCC+bSm/iQ2LGQ4NJ JBw6rJXZVxf7qFTOFsWifoiIYINSIEowVeWSSTTRFI+C3319hCJR/lB/KnMSyLAXhaNw zg1fCEFNvBR7lSotrLf+xwmFkiKxTlnI/e3tIOELL7jcE4hotd7IQ1r35nAycBP4Q+7I bjU+GERDMgoWYWClUHbdpjvfoPDJl+JRSmlNXph1OK4lM5rznOU2NM1aKjTWOX/drg7h l4jWwUL/VdeTAtBF1MAAdqcQh1v9Y35bwSsqcH7+XQO7915KWPeIa3RtM7NqkbnaJ5HD 89YA== X-Gm-Message-State: AOAM533JsAWOcKJFjAATJrFFdpRMy1fiFZLEgghTCtD9TLKnp6jrFZqR HBsMbZNCez+Z8Ueq45AIulQXDATU1h+rBfYnEoD3vGDeTlJl4yLQg/+Br0B2DVS0gSahvSVyjAI zl8x1f07iywePQQ== X-Received: by 2002:a05:6000:2a4:: with SMTP id l4mr1594832wry.460.1640260596736; Thu, 23 Dec 2021 03:56:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJz+Ey7SUV9I0TKAXOWeswCAbccTjbhckL2lEPtokKvCWMagMH2a6d15O+G84UjKapKM+9469A== X-Received: by 2002:a05:6000:2a4:: with SMTP id l4mr1594799wry.460.1640260596463; Thu, 23 Dec 2021 03:56:36 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 02/23] dma: Let dma_memory_set() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:33 +0100 Message-Id: <20211223115554.3155328-3-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260603859100001 Let devices specify transaction attributes when calling dma_memory_set(). Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-3-philmd@redhat.com> --- include/hw/ppc/spapr_vio.h | 3 ++- include/sysemu/dma.h | 3 ++- hw/nvram/fw_cfg.c | 3 ++- softmmu/dma-helpers.c | 5 ++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 4c45f1579fa..c90e74a67dd 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -111,7 +111,8 @@ static inline int spapr_vio_dma_write(SpaprVioDevice *d= ev, uint64_t taddr, static inline int spapr_vio_dma_set(SpaprVioDevice *dev, uint64_t taddr, uint8_t c, uint32_t size) { - return (dma_memory_set(&dev->as, taddr, c, size) !=3D 0) ? + return (dma_memory_set(&dev->as, taddr, + c, size, MEMTXATTRS_UNSPECIFIED) !=3D 0) ? H_DEST_PARM : H_SUCCESS; } =20 diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 296f3b57c9c..d23516f020a 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -175,9 +175,10 @@ static inline MemTxResult dma_memory_write(AddressSpac= e *as, dma_addr_t addr, * @addr: address within that address space * @c: constant byte to fill the memory * @len: the number of bytes to fill with the constant byte + * @attrs: memory transaction attributes */ MemTxResult dma_memory_set(AddressSpace *as, dma_addr_t addr, - uint8_t c, dma_addr_t len); + uint8_t c, dma_addr_t len, MemTxAttrs attrs); =20 /** * address_space_map: Map a physical memory region into a host virtual add= ress. diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index c06b30de112..f7803fe3c30 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -399,7 +399,8 @@ static void fw_cfg_dma_transfer(FWCfgState *s) * tested before. */ if (read) { - if (dma_memory_set(s->dma_as, dma.address, 0, len)) { + if (dma_memory_set(s->dma_as, dma.address, 0, len, + MEMTXATTRS_UNSPECIFIED)) { dma.control |=3D FW_CFG_DMA_CTL_ERROR; } } diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 7d766a5e89a..1f07217ad4a 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -19,7 +19,7 @@ /* #define DEBUG_IOMMU */ =20 MemTxResult dma_memory_set(AddressSpace *as, dma_addr_t addr, - uint8_t c, dma_addr_t len) + uint8_t c, dma_addr_t len, MemTxAttrs attrs) { dma_barrier(as, DMA_DIRECTION_FROM_DEVICE); =20 @@ -31,8 +31,7 @@ MemTxResult dma_memory_set(AddressSpace *as, dma_addr_t a= ddr, memset(fillbuf, c, FILLBUF_SIZE); while (len > 0) { l =3D len < FILLBUF_SIZE ? len : FILLBUF_SIZE; - error |=3D address_space_write(as, addr, MEMTXATTRS_UNSPECIFIED, - fillbuf, l); + error |=3D address_space_write(as, addr, attrs, fillbuf, l); len -=3D l; addr +=3D l; } --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260615; cv=none; d=zohomail.com; s=zohoarc; b=O7HIIHRkTfjIXXQwwwdzkNSE2ciUY6g5hexAvXoFFOZd1KljSV9qZo4W8xEmnJPdVH+C28UOUpJj8UsUKcHZ0Y5jWAzwfpNwRpPzYDEFMgifsWTcLztw399WBpQbS99ctdKNHPfzAEb8cafuv16mt92X7vE61q66wGzOeS4rYTQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260615; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=KD1bdQAKpfL3b0XM21dLq9IX92qtFC9hzQYY4WdApis=; b=F/JVbAx83pqAGG+nB77g7Ddtn5XhGRzYAqrPr0bbnPXVQJXQ1jf1yaXQPG4ldAOoPgIDHEc1aiufhsXSS6FefFwpMD323WOb+7MHAaO9zptlvyQ6vKF7rshFlzzDn3LRKIiyi/o7J9a6vCUdRu7U8dOPatchricmP5SEkj4UELE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260615190501.0209222176554; Thu, 23 Dec 2021 03:56:55 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-150-v95fXv22Ms--3xMbePBtyA-1; Thu, 23 Dec 2021 06:56:53 -0500 Received: by mail-wm1-f70.google.com with SMTP id z13-20020a05600c0a0d00b003457d6619f8so1878255wmp.1 for ; Thu, 23 Dec 2021 03:56:52 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id n7sm4764633wms.45.2021.12.23.03.56.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:56:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260614; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KD1bdQAKpfL3b0XM21dLq9IX92qtFC9hzQYY4WdApis=; b=Ojnccz3OCqjcPXsc2EQZs657efYaccJx5yvmYretYCeAQ0yWwQVSbYPuoMqLV4gR25ugLl BFXPvE0tOvBzI+F0IACTQ6TFkEJSxplyi0NyDoCAOoFGvaKxmukW6E+f17astA0QD+T9HR g87WkbAQYmq25HULeEfOCGVnGX8YB3U= X-MC-Unique: v95fXv22Ms--3xMbePBtyA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=KD1bdQAKpfL3b0XM21dLq9IX92qtFC9hzQYY4WdApis=; b=1FVf9uAerFClQoiMxidfKtzQeZAx9xsfYDbYDcAHuomyMoajd6IWsQgM55Pv9v8g2L DBVA04tMozi9y4bZR5wMHwsGc9ZLq4so5pkzM1RxMh+HkOSrRfR3PUF7jNQ3ievFIDso 04KSO4EmN9rwRWDiQK8sG3FWSAhZ/h7uEzTYkw7lTtdjtAbAx3w/cBZaSSDtHXatpy1M kL+XW96AIrnd3xChTCw6b0ef4xvf7y/tyXa5/J7Q6nef+KeEoNJZHTa6givLE513OBTI 5WlGdYGtFzfV2iPWGsRR/n8q/e8BxGZkS7z77IF0BAf0aynKjObgYP/Ly+vWKdrhlGBG EEdQ== X-Gm-Message-State: AOAM533bmf1XQP6/2xqElts2Yb/lpmeo8ZQ1yD3GSnH936Da5EFiSR3G 9ldidheemnOUrB4z0sUhhbHZOxK5G6XUfEa9ClJWYJH/t+PUwXl5lvtki9ObdT+JQaJ2tFBg7I0 JnMM0ppgesoybAw== X-Received: by 2002:a7b:c397:: with SMTP id s23mr1557486wmj.183.1640260611812; Thu, 23 Dec 2021 03:56:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJzu7mXK63Rruez1aXJEdASH8IPRR0dIq17cEOuTuIdV4IcRI4qs6NE2ZCrCWSnYx4KCXywfbA== X-Received: by 2002:a7b:c397:: with SMTP id s23mr1557451wmj.183.1640260611654; Thu, 23 Dec 2021 03:56:51 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 03/23] dma: Let dma_memory_rw_relaxed() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:34 +0100 Message-Id: <20211223115554.3155328-4-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260616085100001 We will add the MemTxAttrs argument to dma_memory_rw() in the next commit. Since dma_memory_rw_relaxed() is only used by dma_memory_rw(), modify it first in a separate commit to keep the next commit easier to review. Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-4-philmd@redhat.com> --- include/sysemu/dma.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index d23516f020a..3be803cf3ff 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -83,9 +83,10 @@ static inline bool dma_memory_valid(AddressSpace *as, static inline MemTxResult dma_memory_rw_relaxed(AddressSpace *as, dma_addr_t addr, void *buf, dma_addr_t len, - DMADirection dir) + DMADirection dir, + MemTxAttrs attrs) { - return address_space_rw(as, addr, MEMTXATTRS_UNSPECIFIED, + return address_space_rw(as, addr, attrs, buf, len, dir =3D=3D DMA_DIRECTION_FROM_DEVICE= ); } =20 @@ -93,7 +94,9 @@ static inline MemTxResult dma_memory_read_relaxed(Address= Space *as, dma_addr_t addr, void *buf, dma_addr_t le= n) { - return dma_memory_rw_relaxed(as, addr, buf, len, DMA_DIRECTION_TO_DEVI= CE); + return dma_memory_rw_relaxed(as, addr, buf, len, + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); } =20 static inline MemTxResult dma_memory_write_relaxed(AddressSpace *as, @@ -102,7 +105,8 @@ static inline MemTxResult dma_memory_write_relaxed(Addr= essSpace *as, dma_addr_t len) { return dma_memory_rw_relaxed(as, addr, (void *)buf, len, - DMA_DIRECTION_FROM_DEVICE); + DMA_DIRECTION_FROM_DEVICE, + MEMTXATTRS_UNSPECIFIED); } =20 /** @@ -124,7 +128,8 @@ static inline MemTxResult dma_memory_rw(AddressSpace *a= s, dma_addr_t addr, { dma_barrier(as, dir); =20 - return dma_memory_rw_relaxed(as, addr, buf, len, dir); + return dma_memory_rw_relaxed(as, addr, buf, len, dir, + MEMTXATTRS_UNSPECIFIED); } =20 /** --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260629; cv=none; d=zohomail.com; s=zohoarc; b=ixTjpZt7L9GGY3Gaw1BRXym3ATvxpjPS2fyu6kf+7+MuVnTyOVWB0acMG1rqAGwAcNzlJyJY7rxYG+qz78TTActf6/6q2VLzGtrGkTmYwhyXnRyEe/3l01/3aUWCsqipeMnTDB/3FUFlBN4AjTS2xVq8Zbgypox5+DR8mGYQZVY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260629; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=HwK3nqfcp7ajpjlyQIleJtZhiHK+GpsKt7kR5zBRhFA=; b=WbEgq+m4AzuXBPjf2gpVdTo0myPRp9wZpd6zirgbVvdN/5XsJ1z0HgzgjL0JxU9MRl7P16GdKOrSwsRJbaGGkKF+ZAQcbwo68IHDAjEqXcotW1LBTsOQIO7x4BQ2QnSmOD+YM9+PpzlogtYmmipOYKPxUKfOPiTq16HpVEBd5k4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260629863634.4701890320254; Thu, 23 Dec 2021 03:57:09 -0800 (PST) Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-597-9y7FQvIoMCGbt_W42d4OOw-1; Thu, 23 Dec 2021 06:57:07 -0500 Received: by mail-wr1-f71.google.com with SMTP id r9-20020adfb1c9000000b001a2981d9356so1219321wra.20 for ; Thu, 23 Dec 2021 03:57:07 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id u12sm4746187wrf.60.2021.12.23.03.56.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:57:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260628; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HwK3nqfcp7ajpjlyQIleJtZhiHK+GpsKt7kR5zBRhFA=; b=hHP0jS8zn16Virp3/3lWWGa+oSTFby53t/vaVA3xuUPtZ6kWmN7umZAHpg7gdHF1bFP2Em y+PTN11AKGF6LqE84hf8J0X9XtHW5B4KWM4U4khd6u/eXqGO2Gpr8ZQJb4HhgwIFlPIvby XCEMMgqKTUfa9J4P4+oGHrup4KgFQZY= X-MC-Unique: 9y7FQvIoMCGbt_W42d4OOw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HwK3nqfcp7ajpjlyQIleJtZhiHK+GpsKt7kR5zBRhFA=; b=lpXzcZP6P3hr9X+dqgDSdKpgleEY0ektljS1yEnWeva91jMc/iFq7uWjPrQK/lUuXD CDLuYE1OOcZ2eC8IpdMOSdYR4aLmdbvEWj5Ya7qnLP+j7/1FYGjR8PmxIg+F+1mZNa/t ka93ZbKKspwoJXtk5XEzpoiGxapflPWFfsg1eOsWpKaRVrqlntZf/oRDhI6NVlFUjlPH WiztOOhkaVbZHM8N74mEplrT0AB00yQHGZeb7T4SQO5luA/oz4KbvR9KXvNtlDbyB3Mg IEFG+x3r6cpshcr7srSU9OzERvxLFvgXlY3sd5ItdBGYdapmyBk4HJzoN5lwjFWbVv94 xv2g== X-Gm-Message-State: AOAM5304exZVf8ZSI1gTRE2gvGLwMLnkkhLKveWN+/clVkEOxTqVYqo9 3sorUiHSg0LjArbG+LYGiuIp1MsPhaJ9OzJIs0xUDjh2b5eDsgf/c+s8w0iBSV7aABHFPNvqknP /1DEQisJ06R3/RA== X-Received: by 2002:a05:600c:198f:: with SMTP id t15mr1263000wmq.154.1640260626368; Thu, 23 Dec 2021 03:57:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJzpC4AfdLuRVOeZqOp/4uwrhySTDI8YmyN1ZbDx1U0CdC5jvAqSmacuvA9ZC6QN9i4GMsZJKA== X-Received: by 2002:a05:600c:198f:: with SMTP id t15mr1262951wmq.154.1640260626154; Thu, 23 Dec 2021 03:57:06 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 04/23] dma: Let dma_memory_rw() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:35 +0100 Message-Id: <20211223115554.3155328-5-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260631780100001 Let devices specify transaction attributes when calling dma_memory_rw(). Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-5-philmd@redhat.com> --- include/hw/pci/pci.h | 3 ++- include/sysemu/dma.h | 11 ++++++----- hw/intc/spapr_xive.c | 3 ++- hw/usb/hcd-ohci.c | 10 ++++++---- softmmu/dma-helpers.c | 3 ++- 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index e7cdf2d5ec5..4383f1c95e0 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -808,7 +808,8 @@ static inline MemTxResult pci_dma_rw(PCIDevice *dev, dm= a_addr_t addr, void *buf, dma_addr_t len, DMADirection dir) { - return dma_memory_rw(pci_get_address_space(dev), addr, buf, len, dir); + return dma_memory_rw(pci_get_address_space(dev), addr, buf, len, + dir, MEMTXATTRS_UNSPECIFIED); } =20 /** diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 3be803cf3ff..e8ad42226f6 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -121,15 +121,15 @@ static inline MemTxResult dma_memory_write_relaxed(Ad= dressSpace *as, * @buf: buffer with the data transferred * @len: the number of bytes to read or write * @dir: indicates the transfer direction + * @attrs: memory transaction attributes */ static inline MemTxResult dma_memory_rw(AddressSpace *as, dma_addr_t addr, void *buf, dma_addr_t len, - DMADirection dir) + DMADirection dir, MemTxAttrs attrs) { dma_barrier(as, dir); =20 - return dma_memory_rw_relaxed(as, addr, buf, len, dir, - MEMTXATTRS_UNSPECIFIED); + return dma_memory_rw_relaxed(as, addr, buf, len, dir, attrs); } =20 /** @@ -147,7 +147,8 @@ static inline MemTxResult dma_memory_rw(AddressSpace *a= s, dma_addr_t addr, static inline MemTxResult dma_memory_read(AddressSpace *as, dma_addr_t add= r, void *buf, dma_addr_t len) { - return dma_memory_rw(as, addr, buf, len, DMA_DIRECTION_TO_DEVICE); + return dma_memory_rw(as, addr, buf, len, + DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFIED); } =20 /** @@ -166,7 +167,7 @@ static inline MemTxResult dma_memory_write(AddressSpace= *as, dma_addr_t addr, const void *buf, dma_addr_t len) { return dma_memory_rw(as, addr, (void *)buf, len, - DMA_DIRECTION_FROM_DEVICE); + DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED= ); } =20 /** diff --git a/hw/intc/spapr_xive.c b/hw/intc/spapr_xive.c index 4ec659b93e1..eae95c716f1 100644 --- a/hw/intc/spapr_xive.c +++ b/hw/intc/spapr_xive.c @@ -1684,7 +1684,8 @@ static target_ulong h_int_esb(PowerPCCPU *cpu, mmio_addr =3D xive->vc_base + xive_source_esb_mgmt(xsrc, lisn) + o= ffset; =20 if (dma_memory_rw(&address_space_memory, mmio_addr, &data, 8, - (flags & SPAPR_XIVE_ESB_STORE))) { + (flags & SPAPR_XIVE_ESB_STORE), + MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: failed to access ESB @0x= %" HWADDR_PRIx "\n", mmio_addr); return H_HARDWARE; diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 1cf2816772c..56e2315c734 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -586,7 +586,8 @@ static int ohci_copy_td(OHCIState *ohci, struct ohci_td= *td, if (n > len) n =3D len; =20 - if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, n, dir)) { + if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, + n, dir, MEMTXATTRS_UNSPECIFIED)) { return -1; } if (n =3D=3D len) { @@ -595,7 +596,7 @@ static int ohci_copy_td(OHCIState *ohci, struct ohci_td= *td, ptr =3D td->be & ~0xfffu; buf +=3D n; if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, - len - n, dir)) { + len - n, dir, MEMTXATTRS_UNSPECIFIED)) { return -1; } return 0; @@ -613,7 +614,8 @@ static int ohci_copy_iso_td(OHCIState *ohci, if (n > len) n =3D len; =20 - if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, n, dir)) { + if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, + n, dir, MEMTXATTRS_UNSPECIFIED)) { return -1; } if (n =3D=3D len) { @@ -622,7 +624,7 @@ static int ohci_copy_iso_td(OHCIState *ohci, ptr =3D end_addr & ~0xfffu; buf +=3D n; if (dma_memory_rw(ohci->as, ptr + ohci->localmem_base, buf, - len - n, dir)) { + len - n, dir, MEMTXATTRS_UNSPECIFIED)) { return -1; } return 0; diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 1f07217ad4a..5bf76fff6bd 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -305,7 +305,8 @@ static uint64_t dma_buf_rw(uint8_t *ptr, int32_t len, Q= EMUSGList *sg, while (len > 0) { ScatterGatherEntry entry =3D sg->sg[sg_cur_index++]; int32_t xfer =3D MIN(len, entry.len); - dma_memory_rw(sg->as, entry.base, ptr, xfer, dir); + dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, + MEMTXATTRS_UNSPECIFIED); ptr +=3D xfer; len -=3D xfer; resid -=3D xfer; --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260646; cv=none; d=zohomail.com; s=zohoarc; b=kVeThPb4/nOd0LWv7dCffYVclnVj3oWomwRTVwP7y90HHsdIELyGQYX6a9fMCAVYlmK5UG62K2Ltx6WNF5AABx6hc00tkTyZ09se/rfw//tiizftJSwp9wbpydsaWBAoPtIwRq8N1ACq61rCKhNc6NConu6o5gsuph9G37pqALI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260646; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=RwF7Hydt72MLd+h7tygAE+WQhwLabakzsRCPQMGSHpY=; b=d0ydBC28kdRisLUA862HlsjAvxxJMEMLQ1YZAnhrYffm/d5cWsNC0fszh9J4QZh5RREqqRtHdZntxH+mn5Io71aDTapgiU4M9KweFJ2wFN0wk1wGrn4/iFQgJRauLFc4arJ8z+gXOFdTULvt3KQnRh6yMFFHwW41wgA+pehTA68= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260646603765.488364596333; Thu, 23 Dec 2021 03:57:26 -0800 (PST) Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-344-2NWeqmVGMcyUYPjAq8BhRw-1; Thu, 23 Dec 2021 06:57:23 -0500 Received: by mail-wr1-f69.google.com with SMTP id s30-20020adfa29e000000b001a25caee635so1218501wra.19 for ; Thu, 23 Dec 2021 03:57:23 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id u23sm4247553wmc.7.2021.12.23.03.57.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:57:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260645; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RwF7Hydt72MLd+h7tygAE+WQhwLabakzsRCPQMGSHpY=; b=ETs6H1DuMUI6SQhmaTdJySOs5Wue2RlYacEnNjg3tbLhXDKeMmn7eb+GKVF5jPwJXWS7/7 y6VKmlO3kDL5qzeTo5z4Et0HiM5qnGBG7kR0tkFNfbvZSAB6b+uWsB5MiSNXLisPPybKif MdwjCpviRsfI+WIGI1CPZnIDgn7CLRk= X-MC-Unique: 2NWeqmVGMcyUYPjAq8BhRw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RwF7Hydt72MLd+h7tygAE+WQhwLabakzsRCPQMGSHpY=; b=TOpkPDENpeWKyFxpI5/lFAPwlDzjPvxiXLKAJTJzknldmertmpSCf46p6YcN/JMrLN w+/b+pjtVLkLx2HiyWCBaC5Ym6a1xV4GR3zCEAnmGU1RlPid4RhsThenD10oKMle7sh/ uNC/YC+T8PTIJH0GwpKeqHOX/0QEFDzAAcNzVwYTv93PDal+Tixg/BoTCADofony35OJ 6P1AfpYmxhs74Cg4L6KUU+lQshg0ZMSKLuAN8VF9WhTt+bdU2H/7TdVPXz2Vkrv6meQ0 y/P5kbecSBoDgqeMX1lI4EVJHuE0Bptu2U/dheRiWSmQY0Yw9f1Dxdyi4AjdHheVL4l8 0MUQ== X-Gm-Message-State: AOAM532ki9+9jO9rM4RcaRXTLBEQzE7BTcJ70k5mINxGaUwwJWNEWgJV 4i4f4/L02MSPZk8nb9VRmwmu18g/IJ5KX28TcumW+YyVQYV86FYxl6pBzZoGKRWB60jj7AP02i8 yDB9okYNj+empgg== X-Received: by 2002:a05:6000:2a4:: with SMTP id l4mr1596804wry.460.1640260641402; Thu, 23 Dec 2021 03:57:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJzQdn1loSY+N3t/8sy9L/YOA/kPkeGNsK5O1OLQtGKhhtZ9U3yPlMXNAnZh9m1LK6Hhs+ASBg== X-Received: by 2002:a05:6000:2a4:: with SMTP id l4mr1596734wry.460.1640260640713; Thu, 23 Dec 2021 03:57:20 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 05/23] dma: Let dma_memory_read/write() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:36 +0100 Message-Id: <20211223115554.3155328-6-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260648042100001 Let devices specify transaction attributes when calling dma_memory_read() or dma_memory_write(). Patch created mechanically using spatch with this script: @@ expression E1, E2, E3, E4; @@ ( - dma_memory_read(E1, E2, E3, E4) + dma_memory_read(E1, E2, E3, E4, MEMTXATTRS_UNSPECIFIED) | - dma_memory_write(E1, E2, E3, E4) + dma_memory_write(E1, E2, E3, E4, MEMTXATTRS_UNSPECIFIED) ) Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-6-philmd@redhat.com> --- v4: Merged conflict in hw/dma/pl330.c --- include/hw/ppc/spapr_vio.h | 6 ++++-- include/sysemu/dma.h | 20 ++++++++++++-------- hw/arm/musicpal.c | 13 +++++++------ hw/arm/smmu-common.c | 3 ++- hw/arm/smmuv3.c | 14 +++++++++----- hw/core/generic-loader.c | 3 ++- hw/dma/pl330.c | 12 ++++++++---- hw/dma/sparc32_dma.c | 16 ++++++++++------ hw/dma/xlnx-zynq-devcfg.c | 6 ++++-- hw/dma/xlnx_dpdma.c | 10 ++++++---- hw/i386/amd_iommu.c | 16 +++++++++------- hw/i386/intel_iommu.c | 28 +++++++++++++++++----------- hw/ide/macio.c | 2 +- hw/intc/xive.c | 7 ++++--- hw/misc/bcm2835_property.c | 3 ++- hw/misc/macio/mac_dbdma.c | 10 ++++++---- hw/net/allwinner-sun8i-emac.c | 18 ++++++++++++------ hw/net/ftgmac100.c | 25 ++++++++++++++++--------- hw/net/imx_fec.c | 32 ++++++++++++++++++++------------ hw/net/npcm7xx_emc.c | 20 ++++++++++++-------- hw/nvram/fw_cfg.c | 9 ++++++--- hw/pci-host/pnv_phb3.c | 5 +++-- hw/pci-host/pnv_phb3_msi.c | 9 ++++++--- hw/pci-host/pnv_phb4.c | 5 +++-- hw/sd/allwinner-sdhost.c | 14 ++++++++------ hw/sd/sdhci.c | 35 ++++++++++++++++++++++------------- hw/usb/hcd-dwc2.c | 8 ++++---- hw/usb/hcd-ehci.c | 6 ++++-- hw/usb/hcd-ohci.c | 18 +++++++++++------- hw/usb/hcd-xhci.c | 18 +++++++++++------- 30 files changed, 241 insertions(+), 150 deletions(-) diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index c90e74a67dd..5d2ea8e6656 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -97,14 +97,16 @@ static inline bool spapr_vio_dma_valid(SpaprVioDevice *= dev, uint64_t taddr, static inline int spapr_vio_dma_read(SpaprVioDevice *dev, uint64_t taddr, void *buf, uint32_t size) { - return (dma_memory_read(&dev->as, taddr, buf, size) !=3D 0) ? + return (dma_memory_read(&dev->as, taddr, + buf, size, MEMTXATTRS_UNSPECIFIED) !=3D 0) ? H_DEST_PARM : H_SUCCESS; } =20 static inline int spapr_vio_dma_write(SpaprVioDevice *dev, uint64_t taddr, const void *buf, uint32_t size) { - return (dma_memory_write(&dev->as, taddr, buf, size) !=3D 0) ? + return (dma_memory_write(&dev->as, taddr, + buf, size, MEMTXATTRS_UNSPECIFIED) !=3D 0) ? H_DEST_PARM : H_SUCCESS; } =20 diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index e8ad42226f6..522682bf386 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -143,12 +143,14 @@ static inline MemTxResult dma_memory_rw(AddressSpace = *as, dma_addr_t addr, * @addr: address within that address space * @buf: buffer with the data transferred * @len: length of the data transferred + * @attrs: memory transaction attributes */ static inline MemTxResult dma_memory_read(AddressSpace *as, dma_addr_t add= r, - void *buf, dma_addr_t len) + void *buf, dma_addr_t len, + MemTxAttrs attrs) { return dma_memory_rw(as, addr, buf, len, - DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFIED); + DMA_DIRECTION_TO_DEVICE, attrs); } =20 /** @@ -162,12 +164,14 @@ static inline MemTxResult dma_memory_read(AddressSpac= e *as, dma_addr_t addr, * @addr: address within that address space * @buf: buffer with the data transferred * @len: the number of bytes to write + * @attrs: memory transaction attributes */ static inline MemTxResult dma_memory_write(AddressSpace *as, dma_addr_t ad= dr, - const void *buf, dma_addr_t len) + const void *buf, dma_addr_t len, + MemTxAttrs attrs) { return dma_memory_rw(as, addr, (void *)buf, len, - DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED= ); + DMA_DIRECTION_FROM_DEVICE, attrs); } =20 /** @@ -239,7 +243,7 @@ static inline void dma_memory_unmap(AddressSpace *as, dma_addr_t add= r) \ { \ uint##_bits##_t val; \ - dma_memory_read(as, addr, &val, (_bits) / 8); \ + dma_memory_read(as, addr, &val, (_bits) / 8, MEMTXATTRS_UNSPECIFIE= D); \ return _end##_bits##_to_cpu(val); \ } \ static inline void st##_sname##_##_end##_dma(AddressSpace *as, \ @@ -247,20 +251,20 @@ static inline void dma_memory_unmap(AddressSpace *as, uint##_bits##_t val) \ { \ val =3D cpu_to_##_end##_bits(val); \ - dma_memory_write(as, addr, &val, (_bits) / 8); \ + dma_memory_write(as, addr, &val, (_bits) / 8, MEMTXATTRS_UNSPECIFI= ED); \ } =20 static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr) { uint8_t val; =20 - dma_memory_read(as, addr, &val, 1); + dma_memory_read(as, addr, &val, 1, MEMTXATTRS_UNSPECIFIED); return val; } =20 static inline void stb_dma(AddressSpace *as, dma_addr_t addr, uint8_t val) { - dma_memory_write(as, addr, &val, 1); + dma_memory_write(as, addr, &val, 1, MEMTXATTRS_UNSPECIFIED); } =20 DEFINE_LDST_DMA(uw, w, 16, le); diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c index 2d612cc0c9b..2680ec55b5a 100644 --- a/hw/arm/musicpal.c +++ b/hw/arm/musicpal.c @@ -185,13 +185,13 @@ static void eth_rx_desc_put(AddressSpace *dma_as, uin= t32_t addr, cpu_to_le16s(&desc->buffer_size); cpu_to_le32s(&desc->buffer); cpu_to_le32s(&desc->next); - dma_memory_write(dma_as, addr, desc, sizeof(*desc)); + dma_memory_write(dma_as, addr, desc, sizeof(*desc), MEMTXATTRS_UNSPECI= FIED); } =20 static void eth_rx_desc_get(AddressSpace *dma_as, uint32_t addr, mv88w8618_rx_desc *desc) { - dma_memory_read(dma_as, addr, desc, sizeof(*desc)); + dma_memory_read(dma_as, addr, desc, sizeof(*desc), MEMTXATTRS_UNSPECIF= IED); le32_to_cpus(&desc->cmdstat); le16_to_cpus(&desc->bytes); le16_to_cpus(&desc->buffer_size); @@ -215,7 +215,7 @@ static ssize_t eth_receive(NetClientState *nc, const ui= nt8_t *buf, size_t size) eth_rx_desc_get(&s->dma_as, desc_addr, &desc); if ((desc.cmdstat & MP_ETH_RX_OWN) && desc.buffer_size >=3D si= ze) { dma_memory_write(&s->dma_as, desc.buffer + s->vlan_header, - buf, size); + buf, size, MEMTXATTRS_UNSPECIFIED); desc.bytes =3D size + s->vlan_header; desc.cmdstat &=3D ~MP_ETH_RX_OWN; s->cur_rx[i] =3D desc.next; @@ -241,13 +241,13 @@ static void eth_tx_desc_put(AddressSpace *dma_as, uin= t32_t addr, cpu_to_le16s(&desc->bytes); cpu_to_le32s(&desc->buffer); cpu_to_le32s(&desc->next); - dma_memory_write(dma_as, addr, desc, sizeof(*desc)); + dma_memory_write(dma_as, addr, desc, sizeof(*desc), MEMTXATTRS_UNSPECI= FIED); } =20 static void eth_tx_desc_get(AddressSpace *dma_as, uint32_t addr, mv88w8618_tx_desc *desc) { - dma_memory_read(dma_as, addr, desc, sizeof(*desc)); + dma_memory_read(dma_as, addr, desc, sizeof(*desc), MEMTXATTRS_UNSPECIF= IED); le32_to_cpus(&desc->cmdstat); le16_to_cpus(&desc->res); le16_to_cpus(&desc->bytes); @@ -269,7 +269,8 @@ static void eth_send(mv88w8618_eth_state *s, int queue_= index) if (desc.cmdstat & MP_ETH_TX_OWN) { len =3D desc.bytes; if (len < 2048) { - dma_memory_read(&s->dma_as, desc.buffer, buf, len); + dma_memory_read(&s->dma_as, desc.buffer, buf, len, + MEMTXATTRS_UNSPECIFIED); qemu_send_packet(qemu_get_queue(s->nic), buf, len); } desc.cmdstat &=3D ~MP_ETH_TX_OWN; diff --git a/hw/arm/smmu-common.c b/hw/arm/smmu-common.c index 0459850a93d..e09b9c13b74 100644 --- a/hw/arm/smmu-common.c +++ b/hw/arm/smmu-common.c @@ -193,7 +193,8 @@ static int get_pte(dma_addr_t baseaddr, uint32_t index,= uint64_t *pte, dma_addr_t addr =3D baseaddr + index * sizeof(*pte); =20 /* TODO: guarantee 64-bit single-copy atomicity */ - ret =3D dma_memory_read(&address_space_memory, addr, pte, sizeof(*pte)= ); + ret =3D dma_memory_read(&address_space_memory, addr, pte, sizeof(*pte), + MEMTXATTRS_UNSPECIFIED); =20 if (ret !=3D MEMTX_OK) { info->type =3D SMMU_PTW_ERR_WALK_EABT; diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 01b60bee495..3b43368be0f 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -102,7 +102,8 @@ static inline MemTxResult queue_read(SMMUQueue *q, void= *data) { dma_addr_t addr =3D Q_CONS_ENTRY(q); =20 - return dma_memory_read(&address_space_memory, addr, data, q->entry_siz= e); + return dma_memory_read(&address_space_memory, addr, data, q->entry_siz= e, + MEMTXATTRS_UNSPECIFIED); } =20 static MemTxResult queue_write(SMMUQueue *q, void *data) @@ -110,7 +111,8 @@ static MemTxResult queue_write(SMMUQueue *q, void *data) dma_addr_t addr =3D Q_PROD_ENTRY(q); MemTxResult ret; =20 - ret =3D dma_memory_write(&address_space_memory, addr, data, q->entry_s= ize); + ret =3D dma_memory_write(&address_space_memory, addr, data, q->entry_s= ize, + MEMTXATTRS_UNSPECIFIED); if (ret !=3D MEMTX_OK) { return ret; } @@ -285,7 +287,8 @@ static int smmu_get_ste(SMMUv3State *s, dma_addr_t addr= , STE *buf, =20 trace_smmuv3_get_ste(addr); /* TODO: guarantee 64-bit single-copy atomicity */ - ret =3D dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf)= ); + ret =3D dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf), + MEMTXATTRS_UNSPECIFIED); if (ret !=3D MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "Cannot fetch pte at address=3D0x%"PRIx64"\n", addr); @@ -306,7 +309,8 @@ static int smmu_get_cd(SMMUv3State *s, STE *ste, uint32= _t ssid, =20 trace_smmuv3_get_cd(addr); /* TODO: guarantee 64-bit single-copy atomicity */ - ret =3D dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf)= ); + ret =3D dma_memory_read(&address_space_memory, addr, buf, sizeof(*buf), + MEMTXATTRS_UNSPECIFIED); if (ret !=3D MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "Cannot fetch pte at address=3D0x%"PRIx64"\n", addr); @@ -411,7 +415,7 @@ static int smmu_find_ste(SMMUv3State *s, uint32_t sid, = STE *ste, l1ptr =3D (dma_addr_t)(strtab_base + l1_ste_offset * sizeof(l1std)= ); /* TODO: guarantee 64-bit single-copy atomicity */ ret =3D dma_memory_read(&address_space_memory, l1ptr, &l1std, - sizeof(l1std)); + sizeof(l1std), MEMTXATTRS_UNSPECIFIED); if (ret !=3D MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "Could not read L1PTR at 0X%"PRIx64"\n", l1ptr); diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index d14f932eea2..9a24ffb8806 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -57,7 +57,8 @@ static void generic_loader_reset(void *opaque) =20 if (s->data_len) { assert(s->data_len < sizeof(s->data)); - dma_memory_write(s->cpu->as, s->addr, &s->data, s->data_len); + dma_memory_write(s->cpu->as, s->addr, &s->data, s->data_len, + MEMTXATTRS_UNSPECIFIED); } } =20 diff --git a/hw/dma/pl330.c b/hw/dma/pl330.c index 0cb46191c19..31ce01b7c57 100644 --- a/hw/dma/pl330.c +++ b/hw/dma/pl330.c @@ -1111,7 +1111,8 @@ static inline const PL330InsnDesc *pl330_fetch_insn(P= L330Chan *ch) uint8_t opcode; int i; =20 - dma_memory_read(ch->parent->mem_as, ch->pc, &opcode, 1); + dma_memory_read(ch->parent->mem_as, ch->pc, &opcode, 1, + MEMTXATTRS_UNSPECIFIED); for (i =3D 0; insn_desc[i].size; i++) { if ((opcode & insn_desc[i].opmask) =3D=3D insn_desc[i].opcode) { return &insn_desc[i]; @@ -1125,7 +1126,8 @@ static inline void pl330_exec_insn(PL330Chan *ch, con= st PL330InsnDesc *insn) uint8_t buf[PL330_INSN_MAXSIZE]; =20 assert(insn->size <=3D PL330_INSN_MAXSIZE); - dma_memory_read(ch->parent->mem_as, ch->pc, buf, insn->size); + dma_memory_read(ch->parent->mem_as, ch->pc, buf, insn->size, + MEMTXATTRS_UNSPECIFIED); insn->exec(ch, buf[0], &buf[1], insn->size - 1); } =20 @@ -1189,7 +1191,8 @@ static int pl330_exec_cycle(PL330Chan *channel) if (q !=3D NULL && q->len <=3D pl330_fifo_num_free(&s->fifo)) { int len =3D q->len - (q->addr & (q->len - 1)); =20 - dma_memory_read(s->mem_as, q->addr, buf, len); + dma_memory_read(s->mem_as, q->addr, buf, len, + MEMTXATTRS_UNSPECIFIED); trace_pl330_exec_cycle(q->addr, len); if (trace_event_get_state_backends(TRACE_PL330_HEXDUMP)) { pl330_hexdump(buf, len); @@ -1220,7 +1223,8 @@ static int pl330_exec_cycle(PL330Chan *channel) fifo_res =3D pl330_fifo_get(&s->fifo, buf, len, q->tag); } if (fifo_res =3D=3D PL330_FIFO_OK || q->z) { - dma_memory_write(s->mem_as, q->addr, buf, len); + dma_memory_write(s->mem_as, q->addr, buf, len, + MEMTXATTRS_UNSPECIFIED); trace_pl330_exec_cycle(q->addr, len); if (trace_event_get_state_backends(TRACE_PL330_HEXDUMP)) { pl330_hexdump(buf, len); diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index 03bc500878f..0ef13c5e9a8 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -81,11 +81,11 @@ void ledma_memory_read(void *opaque, hwaddr addr, addr |=3D s->dmaregs[3]; trace_ledma_memory_read(addr, len); if (do_bswap) { - dma_memory_read(&is->iommu_as, addr, buf, len); + dma_memory_read(&is->iommu_as, addr, buf, len, MEMTXATTRS_UNSPECIF= IED); } else { addr &=3D ~1; len &=3D ~1; - dma_memory_read(&is->iommu_as, addr, buf, len); + dma_memory_read(&is->iommu_as, addr, buf, len, MEMTXATTRS_UNSPECIF= IED); for(i =3D 0; i < len; i +=3D 2) { bswap16s((uint16_t *)(buf + i)); } @@ -103,7 +103,8 @@ void ledma_memory_write(void *opaque, hwaddr addr, addr |=3D s->dmaregs[3]; trace_ledma_memory_write(addr, len); if (do_bswap) { - dma_memory_write(&is->iommu_as, addr, buf, len); + dma_memory_write(&is->iommu_as, addr, buf, len, + MEMTXATTRS_UNSPECIFIED); } else { addr &=3D ~1; len &=3D ~1; @@ -114,7 +115,8 @@ void ledma_memory_write(void *opaque, hwaddr addr, for(i =3D 0; i < l; i +=3D 2) { tmp_buf[i >> 1] =3D bswap16(*(uint16_t *)(buf + i)); } - dma_memory_write(&is->iommu_as, addr, tmp_buf, l); + dma_memory_write(&is->iommu_as, addr, tmp_buf, l, + MEMTXATTRS_UNSPECIFIED); len -=3D l; buf +=3D l; addr +=3D l; @@ -148,7 +150,8 @@ void espdma_memory_read(void *opaque, uint8_t *buf, int= len) IOMMUState *is =3D (IOMMUState *)s->iommu; =20 trace_espdma_memory_read(s->dmaregs[1], len); - dma_memory_read(&is->iommu_as, s->dmaregs[1], buf, len); + dma_memory_read(&is->iommu_as, s->dmaregs[1], buf, len, + MEMTXATTRS_UNSPECIFIED); s->dmaregs[1] +=3D len; } =20 @@ -158,7 +161,8 @@ void espdma_memory_write(void *opaque, uint8_t *buf, in= t len) IOMMUState *is =3D (IOMMUState *)s->iommu; =20 trace_espdma_memory_write(s->dmaregs[1], len); - dma_memory_write(&is->iommu_as, s->dmaregs[1], buf, len); + dma_memory_write(&is->iommu_as, s->dmaregs[1], buf, len, + MEMTXATTRS_UNSPECIFIED); s->dmaregs[1] +=3D len; } =20 diff --git a/hw/dma/xlnx-zynq-devcfg.c b/hw/dma/xlnx-zynq-devcfg.c index e33112b6f0e..f5ad1a0d22c 100644 --- a/hw/dma/xlnx-zynq-devcfg.c +++ b/hw/dma/xlnx-zynq-devcfg.c @@ -161,12 +161,14 @@ static void xlnx_zynq_devcfg_dma_go(XlnxZynqDevcfg *s) btt =3D MIN(btt, dmah->dest_len); } DB_PRINT("reading %x bytes from %x\n", btt, dmah->src_addr); - dma_memory_read(&address_space_memory, dmah->src_addr, buf, btt); + dma_memory_read(&address_space_memory, dmah->src_addr, buf, btt, + MEMTXATTRS_UNSPECIFIED); dmah->src_len -=3D btt; dmah->src_addr +=3D btt; if (loopback && (dmah->src_len || dmah->dest_len)) { DB_PRINT("writing %x bytes from %x\n", btt, dmah->dest_addr); - dma_memory_write(&address_space_memory, dmah->dest_addr, buf, = btt); + dma_memory_write(&address_space_memory, dmah->dest_addr, buf, = btt, + MEMTXATTRS_UNSPECIFIED); dmah->dest_len -=3D btt; dmah->dest_addr +=3D btt; } diff --git a/hw/dma/xlnx_dpdma.c b/hw/dma/xlnx_dpdma.c index 967548abd31..2d7eae72cd2 100644 --- a/hw/dma/xlnx_dpdma.c +++ b/hw/dma/xlnx_dpdma.c @@ -652,7 +652,7 @@ size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, ui= nt8_t channel, } =20 if (dma_memory_read(&address_space_memory, desc_addr, &desc, - sizeof(DPDMADescriptor))) { + sizeof(DPDMADescriptor), MEMTXATTRS_UNSPECIFIE= D)) { s->registers[DPDMA_EISR] |=3D ((1 << 1) << channel); xlnx_dpdma_update_irq(s); s->operation_finished[channel] =3D true; @@ -708,7 +708,8 @@ size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, ui= nt8_t channel, if (dma_memory_read(&address_space_memory, source_addr[0], &s->data[channel][ptr], - line_size)) { + line_size, + MEMTXATTRS_UNSPECIFIED)) { s->registers[DPDMA_ISR] |=3D ((1 << 12) << channel= ); xlnx_dpdma_update_irq(s); DPRINTF("Can't get data.\n"); @@ -736,7 +737,8 @@ size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, ui= nt8_t channel, if (dma_memory_read(&address_space_memory, source_addr[frag], &(s->data[channel][ptr]), - fragment_len)) { + fragment_len, + MEMTXATTRS_UNSPECIFIED)) { s->registers[DPDMA_ISR] |=3D ((1 << 12) << channel= ); xlnx_dpdma_update_irq(s); DPRINTF("Can't get data.\n"); @@ -754,7 +756,7 @@ size_t xlnx_dpdma_start_operation(XlnxDPDMAState *s, ui= nt8_t channel, DPRINTF("update the descriptor with the done flag set.\n"); xlnx_dpdma_desc_set_done(&desc); dma_memory_write(&address_space_memory, desc_addr, &desc, - sizeof(DPDMADescriptor)); + sizeof(DPDMADescriptor), MEMTXATTRS_UNSPECIFI= ED); } =20 if (xlnx_dpdma_desc_completion_interrupt(&desc)) { diff --git a/hw/i386/amd_iommu.c b/hw/i386/amd_iommu.c index 91fe34ae589..4d13d8e6973 100644 --- a/hw/i386/amd_iommu.c +++ b/hw/i386/amd_iommu.c @@ -181,7 +181,7 @@ static void amdvi_log_event(AMDVIState *s, uint64_t *ev= t) } =20 if (dma_memory_write(&address_space_memory, s->evtlog + s->evtlog_tail, - evt, AMDVI_EVENT_LEN)) { + evt, AMDVI_EVENT_LEN, MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_evntlog_fail(s->evtlog, s->evtlog_tail); } =20 @@ -376,7 +376,8 @@ static void amdvi_completion_wait(AMDVIState *s, uint64= _t *cmd) } if (extract64(cmd[0], 0, 1)) { if (dma_memory_write(&address_space_memory, addr, &data, - AMDVI_COMPLETION_DATA_SIZE)) { + AMDVI_COMPLETION_DATA_SIZE, + MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_completion_wait_fail(addr); } } @@ -502,7 +503,7 @@ static void amdvi_cmdbuf_exec(AMDVIState *s) uint64_t cmd[2]; =20 if (dma_memory_read(&address_space_memory, s->cmdbuf + s->cmdbuf_head, - cmd, AMDVI_COMMAND_SIZE)) { + cmd, AMDVI_COMMAND_SIZE, MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_command_read_fail(s->cmdbuf, s->cmdbuf_head); amdvi_log_command_error(s, s->cmdbuf + s->cmdbuf_head); return; @@ -836,7 +837,7 @@ static bool amdvi_get_dte(AMDVIState *s, int devid, uin= t64_t *entry) uint32_t offset =3D devid * AMDVI_DEVTAB_ENTRY_SIZE; =20 if (dma_memory_read(&address_space_memory, s->devtab + offset, entry, - AMDVI_DEVTAB_ENTRY_SIZE)) { + AMDVI_DEVTAB_ENTRY_SIZE, MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_dte_get_fail(s->devtab, offset); /* log error accessing dte */ amdvi_log_devtab_error(s, devid, s->devtab + offset, 0); @@ -881,7 +882,8 @@ static inline uint64_t amdvi_get_pte_entry(AMDVIState *= s, uint64_t pte_addr, { uint64_t pte; =20 - if (dma_memory_read(&address_space_memory, pte_addr, &pte, sizeof(pte)= )) { + if (dma_memory_read(&address_space_memory, pte_addr, + &pte, sizeof(pte), MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_get_pte_hwerror(pte_addr); amdvi_log_pagetab_error(s, devid, pte_addr, 0); pte =3D 0; @@ -1048,7 +1050,7 @@ static int amdvi_get_irte(AMDVIState *s, MSIMessage *= origin, uint64_t *dte, trace_amdvi_ir_irte(irte_root, offset); =20 if (dma_memory_read(&address_space_memory, irte_root + offset, - irte, sizeof(*irte))) { + irte, sizeof(*irte), MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_ir_err("failed to get irte"); return -AMDVI_IR_GET_IRTE; } @@ -1108,7 +1110,7 @@ static int amdvi_get_irte_ga(AMDVIState *s, MSIMessag= e *origin, uint64_t *dte, trace_amdvi_ir_irte(irte_root, offset); =20 if (dma_memory_read(&address_space_memory, irte_root + offset, - irte, sizeof(*irte))) { + irte, sizeof(*irte), MEMTXATTRS_UNSPECIFIED)) { trace_amdvi_ir_err("failed to get irte_ga"); return -AMDVI_IR_GET_IRTE; } diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c index f584449d8d1..5b865ac08c0 100644 --- a/hw/i386/intel_iommu.c +++ b/hw/i386/intel_iommu.c @@ -569,7 +569,8 @@ static int vtd_get_root_entry(IntelIOMMUState *s, uint8= _t index, dma_addr_t addr; =20 addr =3D s->root + index * sizeof(*re); - if (dma_memory_read(&address_space_memory, addr, re, sizeof(*re))) { + if (dma_memory_read(&address_space_memory, addr, + re, sizeof(*re), MEMTXATTRS_UNSPECIFIED)) { re->lo =3D 0; return -VTD_FR_ROOT_TABLE_INV; } @@ -602,7 +603,8 @@ static int vtd_get_context_entry_from_root(IntelIOMMUSt= ate *s, } =20 addr =3D addr + index * ce_size; - if (dma_memory_read(&address_space_memory, addr, ce, ce_size)) { + if (dma_memory_read(&address_space_memory, addr, + ce, ce_size, MEMTXATTRS_UNSPECIFIED)) { return -VTD_FR_CONTEXT_TABLE_INV; } =20 @@ -639,8 +641,8 @@ static uint64_t vtd_get_slpte(dma_addr_t base_addr, uin= t32_t index) assert(index < VTD_SL_PT_ENTRY_NR); =20 if (dma_memory_read(&address_space_memory, - base_addr + index * sizeof(slpte), &slpte, - sizeof(slpte))) { + base_addr + index * sizeof(slpte), + &slpte, sizeof(slpte), MEMTXATTRS_UNSPECIFIED)) { slpte =3D (uint64_t)-1; return slpte; } @@ -704,7 +706,8 @@ static int vtd_get_pdire_from_pdir_table(dma_addr_t pas= id_dir_base, index =3D VTD_PASID_DIR_INDEX(pasid); entry_size =3D VTD_PASID_DIR_ENTRY_SIZE; addr =3D pasid_dir_base + index * entry_size; - if (dma_memory_read(&address_space_memory, addr, pdire, entry_size)) { + if (dma_memory_read(&address_space_memory, addr, + pdire, entry_size, MEMTXATTRS_UNSPECIFIED)) { return -VTD_FR_PASID_TABLE_INV; } =20 @@ -728,7 +731,8 @@ static int vtd_get_pe_in_pasid_leaf_table(IntelIOMMUSta= te *s, index =3D VTD_PASID_TABLE_INDEX(pasid); entry_size =3D VTD_PASID_ENTRY_SIZE; addr =3D addr + index * entry_size; - if (dma_memory_read(&address_space_memory, addr, pe, entry_size)) { + if (dma_memory_read(&address_space_memory, addr, + pe, entry_size, MEMTXATTRS_UNSPECIFIED)) { return -VTD_FR_PASID_TABLE_INV; } =20 @@ -2275,7 +2279,8 @@ static bool vtd_get_inv_desc(IntelIOMMUState *s, uint32_t dw =3D s->iq_dw ? 32 : 16; dma_addr_t addr =3D base_addr + offset * dw; =20 - if (dma_memory_read(&address_space_memory, addr, inv_desc, dw)) { + if (dma_memory_read(&address_space_memory, addr, + inv_desc, dw, MEMTXATTRS_UNSPECIFIED)) { error_report_once("Read INV DESC failed."); return false; } @@ -2308,8 +2313,9 @@ static bool vtd_process_wait_desc(IntelIOMMUState *s,= VTDInvDesc *inv_desc) dma_addr_t status_addr =3D inv_desc->hi; trace_vtd_inv_desc_wait_sw(status_addr, status_data); status_data =3D cpu_to_le32(status_data); - if (dma_memory_write(&address_space_memory, status_addr, &status_d= ata, - sizeof(status_data))) { + if (dma_memory_write(&address_space_memory, status_addr, + &status_data, sizeof(status_data), + MEMTXATTRS_UNSPECIFIED)) { trace_vtd_inv_desc_wait_write_fail(inv_desc->hi, inv_desc->lo); return false; } @@ -3120,8 +3126,8 @@ static int vtd_irte_get(IntelIOMMUState *iommu, uint1= 6_t index, } =20 addr =3D iommu->intr_root + index * sizeof(*entry); - if (dma_memory_read(&address_space_memory, addr, entry, - sizeof(*entry))) { + if (dma_memory_read(&address_space_memory, addr, + entry, sizeof(*entry), MEMTXATTRS_UNSPECIFIED)) { error_report_once("%s: read failed: ind=3D0x%x addr=3D0x%" PRIx64, __func__, index, addr); return -VTD_FR_IR_ROOT_INVAL; diff --git a/hw/ide/macio.c b/hw/ide/macio.c index b03d401ceb5..f08318cf97f 100644 --- a/hw/ide/macio.c +++ b/hw/ide/macio.c @@ -97,7 +97,7 @@ static void pmac_ide_atapi_transfer_cb(void *opaque, int = ret) /* Non-block ATAPI transfer - just copy to RAM */ s->io_buffer_size =3D MIN(s->io_buffer_size, io->len); dma_memory_write(&address_space_memory, io->addr, s->io_buffer, - s->io_buffer_size); + s->io_buffer_size, MEMTXATTRS_UNSPECIFIED); io->len =3D 0; ide_atapi_cmd_ok(s); m->dma_active =3D false; diff --git a/hw/intc/xive.c b/hw/intc/xive.c index 190194d27f8..f15f98588a7 100644 --- a/hw/intc/xive.c +++ b/hw/intc/xive.c @@ -1246,8 +1246,8 @@ void xive_end_queue_pic_print_info(XiveEND *end, uint= 32_t width, Monitor *mon) uint64_t qaddr =3D qaddr_base + (qindex << 2); uint32_t qdata =3D -1; =20 - if (dma_memory_read(&address_space_memory, qaddr, &qdata, - sizeof(qdata))) { + if (dma_memory_read(&address_space_memory, qaddr, + &qdata, sizeof(qdata), MEMTXATTRS_UNSPECIFIED)= ) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: failed to read EQ @0x%" HWADDR_PRIx "\n", qaddr); return; @@ -1311,7 +1311,8 @@ static void xive_end_enqueue(XiveEND *end, uint32_t d= ata) uint32_t qdata =3D cpu_to_be32((qgen << 31) | (data & 0x7fffffff)); uint32_t qentries =3D 1 << (qsize + 10); =20 - if (dma_memory_write(&address_space_memory, qaddr, &qdata, sizeof(qdat= a))) { + if (dma_memory_write(&address_space_memory, qaddr, + &qdata, sizeof(qdata), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "XIVE: failed to write END data @0x= %" HWADDR_PRIx "\n", qaddr); return; diff --git a/hw/misc/bcm2835_property.c b/hw/misc/bcm2835_property.c index 73941bdae97..76ea511d53d 100644 --- a/hw/misc/bcm2835_property.c +++ b/hw/misc/bcm2835_property.c @@ -69,7 +69,8 @@ static void bcm2835_property_mbox_push(BCM2835PropertySta= te *s, uint32_t value) break; case 0x00010003: /* Get board MAC address */ resplen =3D sizeof(s->macaddr.a); - dma_memory_write(&s->dma_as, value + 12, s->macaddr.a, resplen= ); + dma_memory_write(&s->dma_as, value + 12, s->macaddr.a, resplen, + MEMTXATTRS_UNSPECIFIED); break; case 0x00010004: /* Get board serial */ qemu_log_mask(LOG_UNIMP, diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c index e220f1a9277..efcc02609fd 100644 --- a/hw/misc/macio/mac_dbdma.c +++ b/hw/misc/macio/mac_dbdma.c @@ -94,7 +94,7 @@ static void dbdma_cmdptr_load(DBDMA_channel *ch) DBDMA_DPRINTFCH(ch, "dbdma_cmdptr_load 0x%08x\n", ch->regs[DBDMA_CMDPTR_LO]); dma_memory_read(&address_space_memory, ch->regs[DBDMA_CMDPTR_LO], - &ch->current, sizeof(dbdma_cmd)); + &ch->current, sizeof(dbdma_cmd), MEMTXATTRS_UNSPECIFIE= D); } =20 static void dbdma_cmdptr_save(DBDMA_channel *ch) @@ -104,7 +104,7 @@ static void dbdma_cmdptr_save(DBDMA_channel *ch) le16_to_cpu(ch->current.xfer_status), le16_to_cpu(ch->current.res_count)); dma_memory_write(&address_space_memory, ch->regs[DBDMA_CMDPTR_LO], - &ch->current, sizeof(dbdma_cmd)); + &ch->current, sizeof(dbdma_cmd), MEMTXATTRS_UNSPECIFI= ED); } =20 static void kill_channel(DBDMA_channel *ch) @@ -371,7 +371,8 @@ static void load_word(DBDMA_channel *ch, int key, uint3= 2_t addr, return; } =20 - dma_memory_read(&address_space_memory, addr, ¤t->cmd_dep, len); + dma_memory_read(&address_space_memory, addr, ¤t->cmd_dep, len, + MEMTXATTRS_UNSPECIFIED); =20 if (conditional_wait(ch)) goto wait; @@ -403,7 +404,8 @@ static void store_word(DBDMA_channel *ch, int key, uint= 32_t addr, return; } =20 - dma_memory_write(&address_space_memory, addr, ¤t->cmd_dep, len); + dma_memory_write(&address_space_memory, addr, ¤t->cmd_dep, len, + MEMTXATTRS_UNSPECIFIED); =20 if (conditional_wait(ch)) goto wait; diff --git a/hw/net/allwinner-sun8i-emac.c b/hw/net/allwinner-sun8i-emac.c index ff611f18fbd..ecc0245fe8a 100644 --- a/hw/net/allwinner-sun8i-emac.c +++ b/hw/net/allwinner-sun8i-emac.c @@ -350,7 +350,8 @@ static void allwinner_sun8i_emac_get_desc(AwSun8iEmacSt= ate *s, FrameDescriptor *desc, uint32_t phys_addr) { - dma_memory_read(&s->dma_as, phys_addr, desc, sizeof(*desc)); + dma_memory_read(&s->dma_as, phys_addr, desc, sizeof(*desc), + MEMTXATTRS_UNSPECIFIED); } =20 static uint32_t allwinner_sun8i_emac_next_desc(AwSun8iEmacState *s, @@ -402,7 +403,8 @@ static void allwinner_sun8i_emac_flush_desc(AwSun8iEmac= State *s, FrameDescriptor *desc, uint32_t phys_addr) { - dma_memory_write(&s->dma_as, phys_addr, desc, sizeof(*desc)); + dma_memory_write(&s->dma_as, phys_addr, desc, sizeof(*desc), + MEMTXATTRS_UNSPECIFIED); } =20 static bool allwinner_sun8i_emac_can_receive(NetClientState *nc) @@ -460,7 +462,8 @@ static ssize_t allwinner_sun8i_emac_receive(NetClientSt= ate *nc, << RX_DESC_STATUS_FRM_LEN_SHIFT; } =20 - dma_memory_write(&s->dma_as, desc.addr, buf, desc_bytes); + dma_memory_write(&s->dma_as, desc.addr, buf, desc_bytes, + MEMTXATTRS_UNSPECIFIED); allwinner_sun8i_emac_flush_desc(s, &desc, s->rx_desc_curr); trace_allwinner_sun8i_emac_receive(s->rx_desc_curr, desc.addr, desc_bytes); @@ -512,7 +515,8 @@ static void allwinner_sun8i_emac_transmit(AwSun8iEmacSt= ate *s) desc.status |=3D TX_DESC_STATUS_LENGTH_ERR; break; } - dma_memory_read(&s->dma_as, desc.addr, packet_buf + packet_bytes, = bytes); + dma_memory_read(&s->dma_as, desc.addr, packet_buf + packet_bytes, + bytes, MEMTXATTRS_UNSPECIFIED); packet_bytes +=3D bytes; desc.status &=3D ~DESC_STATUS_CTL; allwinner_sun8i_emac_flush_desc(s, &desc, s->tx_desc_curr); @@ -634,7 +638,8 @@ static uint64_t allwinner_sun8i_emac_read(void *opaque,= hwaddr offset, break; case REG_TX_CUR_BUF: /* Transmit Current Buffer */ if (s->tx_desc_curr !=3D 0) { - dma_memory_read(&s->dma_as, s->tx_desc_curr, &desc, sizeof(des= c)); + dma_memory_read(&s->dma_as, s->tx_desc_curr, &desc, sizeof(des= c), + MEMTXATTRS_UNSPECIFIED); value =3D desc.addr; } else { value =3D 0; @@ -647,7 +652,8 @@ static uint64_t allwinner_sun8i_emac_read(void *opaque,= hwaddr offset, break; case REG_RX_CUR_BUF: /* Receive Current Buffer */ if (s->rx_desc_curr !=3D 0) { - dma_memory_read(&s->dma_as, s->rx_desc_curr, &desc, sizeof(des= c)); + dma_memory_read(&s->dma_as, s->rx_desc_curr, &desc, sizeof(des= c), + MEMTXATTRS_UNSPECIFIED); value =3D desc.addr; } else { value =3D 0; diff --git a/hw/net/ftgmac100.c b/hw/net/ftgmac100.c index 25685ba3a95..83ef0a783e7 100644 --- a/hw/net/ftgmac100.c +++ b/hw/net/ftgmac100.c @@ -453,7 +453,8 @@ static void do_phy_ctl(FTGMAC100State *s) =20 static int ftgmac100_read_bd(FTGMAC100Desc *bd, dma_addr_t addr) { - if (dma_memory_read(&address_space_memory, addr, bd, sizeof(*bd))) { + if (dma_memory_read(&address_space_memory, addr, + bd, sizeof(*bd), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to read descriptor @ 0x= %" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -473,7 +474,8 @@ static int ftgmac100_write_bd(FTGMAC100Desc *bd, dma_ad= dr_t addr) lebd.des1 =3D cpu_to_le32(bd->des1); lebd.des2 =3D cpu_to_le32(bd->des2); lebd.des3 =3D cpu_to_le32(bd->des3); - if (dma_memory_write(&address_space_memory, addr, &lebd, sizeof(lebd))= ) { + if (dma_memory_write(&address_space_memory, addr, + &lebd, sizeof(lebd), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to write descriptor @ 0= x%" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -554,7 +556,8 @@ static void ftgmac100_do_tx(FTGMAC100State *s, uint32_t= tx_ring, len =3D sizeof(s->frame) - frame_size; } =20 - if (dma_memory_read(&address_space_memory, bd.des3, ptr, len)) { + if (dma_memory_read(&address_space_memory, bd.des3, + ptr, len, MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to read packet @ 0x= %x\n", __func__, bd.des3); s->isr |=3D FTGMAC100_INT_AHB_ERR; @@ -1030,20 +1033,24 @@ static ssize_t ftgmac100_receive(NetClientState *nc= , const uint8_t *buf, bd.des1 =3D lduw_be_p(buf + 14) | FTGMAC100_RXDES1_VLANTAG_AVA= IL; =20 if (s->maccr & FTGMAC100_MACCR_RM_VLAN) { - dma_memory_write(&address_space_memory, buf_addr, buf, 12); - dma_memory_write(&address_space_memory, buf_addr + 12, buf= + 16, - buf_len - 16); + dma_memory_write(&address_space_memory, buf_addr, buf, 12, + MEMTXATTRS_UNSPECIFIED); + dma_memory_write(&address_space_memory, buf_addr + 12, + buf + 16, buf_len - 16, + MEMTXATTRS_UNSPECIFIED); } else { - dma_memory_write(&address_space_memory, buf_addr, buf, buf= _len); + dma_memory_write(&address_space_memory, buf_addr, buf, + buf_len, MEMTXATTRS_UNSPECIFIED); } } else { bd.des1 =3D 0; - dma_memory_write(&address_space_memory, buf_addr, buf, buf_len= ); + dma_memory_write(&address_space_memory, buf_addr, buf, buf_len, + MEMTXATTRS_UNSPECIFIED); } buf +=3D buf_len; if (size < 4) { dma_memory_write(&address_space_memory, buf_addr + buf_len, - crc_ptr, 4 - size); + crc_ptr, 4 - size, MEMTXATTRS_UNSPECIFIED); crc_ptr +=3D 4 - size; } =20 diff --git a/hw/net/imx_fec.c b/hw/net/imx_fec.c index 9c7035bc948..0db9aaf76a0 100644 --- a/hw/net/imx_fec.c +++ b/hw/net/imx_fec.c @@ -387,19 +387,22 @@ static void imx_phy_write(IMXFECState *s, int reg, ui= nt32_t val) =20 static void imx_fec_read_bd(IMXFECBufDesc *bd, dma_addr_t addr) { - dma_memory_read(&address_space_memory, addr, bd, sizeof(*bd)); + dma_memory_read(&address_space_memory, addr, bd, sizeof(*bd), + MEMTXATTRS_UNSPECIFIED); =20 trace_imx_fec_read_bd(addr, bd->flags, bd->length, bd->data); } =20 static void imx_fec_write_bd(IMXFECBufDesc *bd, dma_addr_t addr) { - dma_memory_write(&address_space_memory, addr, bd, sizeof(*bd)); + dma_memory_write(&address_space_memory, addr, bd, sizeof(*bd), + MEMTXATTRS_UNSPECIFIED); } =20 static void imx_enet_read_bd(IMXENETBufDesc *bd, dma_addr_t addr) { - dma_memory_read(&address_space_memory, addr, bd, sizeof(*bd)); + dma_memory_read(&address_space_memory, addr, bd, sizeof(*bd), + MEMTXATTRS_UNSPECIFIED); =20 trace_imx_enet_read_bd(addr, bd->flags, bd->length, bd->data, bd->option, bd->status); @@ -407,7 +410,8 @@ static void imx_enet_read_bd(IMXENETBufDesc *bd, dma_ad= dr_t addr) =20 static void imx_enet_write_bd(IMXENETBufDesc *bd, dma_addr_t addr) { - dma_memory_write(&address_space_memory, addr, bd, sizeof(*bd)); + dma_memory_write(&address_space_memory, addr, bd, sizeof(*bd), + MEMTXATTRS_UNSPECIFIED); } =20 static void imx_eth_update(IMXFECState *s) @@ -474,7 +478,8 @@ static void imx_fec_do_tx(IMXFECState *s) len =3D ENET_MAX_FRAME_SIZE - frame_size; s->regs[ENET_EIR] |=3D ENET_INT_BABT; } - dma_memory_read(&address_space_memory, bd.data, ptr, len); + dma_memory_read(&address_space_memory, bd.data, ptr, len, + MEMTXATTRS_UNSPECIFIED); ptr +=3D len; frame_size +=3D len; if (bd.flags & ENET_BD_L) { @@ -555,7 +560,8 @@ static void imx_enet_do_tx(IMXFECState *s, uint32_t ind= ex) len =3D ENET_MAX_FRAME_SIZE - frame_size; s->regs[ENET_EIR] |=3D ENET_INT_BABT; } - dma_memory_read(&address_space_memory, bd.data, ptr, len); + dma_memory_read(&address_space_memory, bd.data, ptr, len, + MEMTXATTRS_UNSPECIFIED); ptr +=3D len; frame_size +=3D len; if (bd.flags & ENET_BD_L) { @@ -1103,11 +1109,12 @@ static ssize_t imx_fec_receive(NetClientState *nc, = const uint8_t *buf, buf_len +=3D size - 4; } buf_addr =3D bd.data; - dma_memory_write(&address_space_memory, buf_addr, buf, buf_len); + dma_memory_write(&address_space_memory, buf_addr, buf, buf_len, + MEMTXATTRS_UNSPECIFIED); buf +=3D buf_len; if (size < 4) { dma_memory_write(&address_space_memory, buf_addr + buf_len, - crc_ptr, 4 - size); + crc_ptr, 4 - size, MEMTXATTRS_UNSPECIFIED); crc_ptr +=3D 4 - size; } bd.flags &=3D ~ENET_BD_E; @@ -1210,8 +1217,8 @@ static ssize_t imx_enet_receive(NetClientState *nc, c= onst uint8_t *buf, */ const uint8_t zeros[2] =3D { 0 }; =20 - dma_memory_write(&address_space_memory, buf_addr, - zeros, sizeof(zeros)); + dma_memory_write(&address_space_memory, buf_addr, zeros, + sizeof(zeros), MEMTXATTRS_UNSPECIFIED); =20 buf_addr +=3D sizeof(zeros); buf_len -=3D sizeof(zeros); @@ -1220,11 +1227,12 @@ static ssize_t imx_enet_receive(NetClientState *nc,= const uint8_t *buf, shift16 =3D false; } =20 - dma_memory_write(&address_space_memory, buf_addr, buf, buf_len); + dma_memory_write(&address_space_memory, buf_addr, buf, buf_len, + MEMTXATTRS_UNSPECIFIED); buf +=3D buf_len; if (size < 4) { dma_memory_write(&address_space_memory, buf_addr + buf_len, - crc_ptr, 4 - size); + crc_ptr, 4 - size, MEMTXATTRS_UNSPECIFIED); crc_ptr +=3D 4 - size; } bd.flags &=3D ~ENET_BD_E; diff --git a/hw/net/npcm7xx_emc.c b/hw/net/npcm7xx_emc.c index 545b2b74108..9a2328935c1 100644 --- a/hw/net/npcm7xx_emc.c +++ b/hw/net/npcm7xx_emc.c @@ -200,7 +200,8 @@ static void emc_update_irq_from_reg_change(NPCM7xxEMCSt= ate *emc) =20 static int emc_read_tx_desc(dma_addr_t addr, NPCM7xxEMCTxDesc *desc) { - if (dma_memory_read(&address_space_memory, addr, desc, sizeof(*desc)))= { + if (dma_memory_read(&address_space_memory, addr, desc, + sizeof(*desc), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to read descriptor @ 0x= %" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -221,7 +222,7 @@ static int emc_write_tx_desc(const NPCM7xxEMCTxDesc *de= sc, dma_addr_t addr) le_desc.status_and_length =3D cpu_to_le32(desc->status_and_length); le_desc.ntxdsa =3D cpu_to_le32(desc->ntxdsa); if (dma_memory_write(&address_space_memory, addr, &le_desc, - sizeof(le_desc))) { + sizeof(le_desc), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to write descriptor @ 0= x%" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -231,7 +232,8 @@ static int emc_write_tx_desc(const NPCM7xxEMCTxDesc *de= sc, dma_addr_t addr) =20 static int emc_read_rx_desc(dma_addr_t addr, NPCM7xxEMCRxDesc *desc) { - if (dma_memory_read(&address_space_memory, addr, desc, sizeof(*desc)))= { + if (dma_memory_read(&address_space_memory, addr, desc, + sizeof(*desc), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to read descriptor @ 0x= %" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -252,7 +254,7 @@ static int emc_write_rx_desc(const NPCM7xxEMCRxDesc *de= sc, dma_addr_t addr) le_desc.reserved =3D cpu_to_le32(desc->reserved); le_desc.nrxdsa =3D cpu_to_le32(desc->nrxdsa); if (dma_memory_write(&address_space_memory, addr, &le_desc, - sizeof(le_desc))) { + sizeof(le_desc), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to write descriptor @ 0= x%" HWADDR_PRIx "\n", __func__, addr); return -1; @@ -366,7 +368,8 @@ static void emc_try_send_next_packet(NPCM7xxEMCState *e= mc) buf =3D malloced_buf; } =20 - if (dma_memory_read(&address_space_memory, next_buf_addr, buf, length)= ) { + if (dma_memory_read(&address_space_memory, next_buf_addr, buf, + length, MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Failed to read packet @ 0x%x\n= ", __func__, next_buf_addr); emc_set_mista(emc, REG_MISTA_TXBERR); @@ -551,10 +554,11 @@ static ssize_t emc_receive(NetClientState *nc, const = uint8_t *buf, size_t len1) =20 buf_addr =3D rx_desc.rxbsa; emc->regs[REG_CRXBSA] =3D buf_addr; - if (dma_memory_write(&address_space_memory, buf_addr, buf, len) || + if (dma_memory_write(&address_space_memory, buf_addr, buf, + len, MEMTXATTRS_UNSPECIFIED) || (!(emc->regs[REG_MCMDR] & REG_MCMDR_SPCRC) && - dma_memory_write(&address_space_memory, buf_addr + len, crc_ptr, - 4))) { + dma_memory_write(&address_space_memory, buf_addr + len, + crc_ptr, 4, MEMTXATTRS_UNSPECIFIED))) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Bus error writing packet\n", __func__); emc_set_mista(emc, REG_MISTA_RXBERR); diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index f7803fe3c30..9b91b15cb08 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -357,7 +357,8 @@ static void fw_cfg_dma_transfer(FWCfgState *s) dma_addr =3D s->dma_addr; s->dma_addr =3D 0; =20 - if (dma_memory_read(s->dma_as, dma_addr, &dma, sizeof(dma))) { + if (dma_memory_read(s->dma_as, dma_addr, + &dma, sizeof(dma), MEMTXATTRS_UNSPECIFIED)) { stl_be_dma(s->dma_as, dma_addr + offsetof(FWCfgDmaAccess, control), FW_CFG_DMA_CTL_ERROR); return; @@ -419,7 +420,8 @@ static void fw_cfg_dma_transfer(FWCfgState *s) */ if (read) { if (dma_memory_write(s->dma_as, dma.address, - &e->data[s->cur_offset], len)) { + &e->data[s->cur_offset], len, + MEMTXATTRS_UNSPECIFIED)) { dma.control |=3D FW_CFG_DMA_CTL_ERROR; } } @@ -427,7 +429,8 @@ static void fw_cfg_dma_transfer(FWCfgState *s) if (!e->allow_write || len !=3D dma.length || dma_memory_read(s->dma_as, dma.address, - &e->data[s->cur_offset], len)) { + &e->data[s->cur_offset], len, + MEMTXATTRS_UNSPECIFIED)) { dma.control |=3D FW_CFG_DMA_CTL_ERROR; } else if (e->write_cb) { e->write_cb(e->callback_opaque, s->cur_offset, len); diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 9c4451ca0d1..c6e7871ecbf 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -715,7 +715,8 @@ static bool pnv_phb3_resolve_pe(PnvPhb3DMASpace *ds) bus_num =3D pci_bus_num(ds->bus); addr =3D rtt & PHB_RTT_BASE_ADDRESS_MASK; addr +=3D 2 * ((bus_num << 8) | ds->devfn); - if (dma_memory_read(&address_space_memory, addr, &rte, sizeof(rte))) { + if (dma_memory_read(&address_space_memory, addr, &rte, + sizeof(rte), MEMTXATTRS_UNSPECIFIED)) { phb3_error(ds->phb, "Failed to read RTT entry at 0x%"PRIx64, addr); /* Set error bits ? fence ? ... */ return false; @@ -794,7 +795,7 @@ static void pnv_phb3_translate_tve(PnvPhb3DMASpace *ds,= hwaddr addr, /* Grab the TCE address */ taddr =3D base | (((addr >> sh) & ((1ul << tbl_shift) - 1)) <<= 3); if (dma_memory_read(&address_space_memory, taddr, &tce, - sizeof(tce))) { + sizeof(tce), MEMTXATTRS_UNSPECIFIED)) { phb3_error(phb, "Failed to read TCE at 0x%"PRIx64, taddr); return; } diff --git a/hw/pci-host/pnv_phb3_msi.c b/hw/pci-host/pnv_phb3_msi.c index 099d2092a2c..8bcbc2cc4f3 100644 --- a/hw/pci-host/pnv_phb3_msi.c +++ b/hw/pci-host/pnv_phb3_msi.c @@ -53,7 +53,8 @@ static bool phb3_msi_read_ive(PnvPHB3 *phb, int srcno, ui= nt64_t *out_ive) return false; } =20 - if (dma_memory_read(&address_space_memory, ive_addr, &ive, sizeof(ive)= )) { + if (dma_memory_read(&address_space_memory, ive_addr, + &ive, sizeof(ive), MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "Failed to read IVE at 0x%" PRIx64, ive_addr); return false; @@ -73,7 +74,8 @@ static void phb3_msi_set_p(Phb3MsiState *msi, int srcno, = uint8_t gen) return; } =20 - if (dma_memory_write(&address_space_memory, ive_addr + 4, &p, 1)) { + if (dma_memory_write(&address_space_memory, ive_addr + 4, + &p, 1, MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "Failed to write IVE (set P) at 0x%" PRIx64, ive_add= r); } @@ -89,7 +91,8 @@ static void phb3_msi_set_q(Phb3MsiState *msi, int srcno) return; } =20 - if (dma_memory_write(&address_space_memory, ive_addr + 5, &q, 1)) { + if (dma_memory_write(&address_space_memory, ive_addr + 5, + &q, 1, MEMTXATTRS_UNSPECIFIED)) { qemu_log_mask(LOG_GUEST_ERROR, "Failed to write IVE (set Q) at 0x%" PRIx64, ive_add= r); } diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 40b793201a3..1fbf7328f5a 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -891,7 +891,8 @@ static bool pnv_phb4_resolve_pe(PnvPhb4DMASpace *ds) bus_num =3D pci_bus_num(ds->bus); addr =3D rtt & PHB_RTT_BASE_ADDRESS_MASK; addr +=3D 2 * PCI_BUILD_BDF(bus_num, ds->devfn); - if (dma_memory_read(&address_space_memory, addr, &rte, sizeof(rte))) { + if (dma_memory_read(&address_space_memory, addr, &rte, + sizeof(rte), MEMTXATTRS_UNSPECIFIED)) { phb_error(ds->phb, "Failed to read RTT entry at 0x%"PRIx64, addr); /* Set error bits ? fence ? ... */ return false; @@ -961,7 +962,7 @@ static void pnv_phb4_translate_tve(PnvPhb4DMASpace *ds,= hwaddr addr, /* Grab the TCE address */ taddr =3D base | (((addr >> sh) & ((1ul << tbl_shift) - 1)) <<= 3); if (dma_memory_read(&address_space_memory, taddr, &tce, - sizeof(tce))) { + sizeof(tce), MEMTXATTRS_UNSPECIFIED)) { phb_error(ds->phb, "Failed to read TCE at 0x%"PRIx64, tadd= r); return; } diff --git a/hw/sd/allwinner-sdhost.c b/hw/sd/allwinner-sdhost.c index 9166d6638de..de5bc49e68f 100644 --- a/hw/sd/allwinner-sdhost.c +++ b/hw/sd/allwinner-sdhost.c @@ -311,7 +311,8 @@ static uint32_t allwinner_sdhost_process_desc(AwSdHostS= tate *s, uint8_t buf[1024]; =20 /* Read descriptor */ - dma_memory_read(&s->dma_as, desc_addr, desc, sizeof(*desc)); + dma_memory_read(&s->dma_as, desc_addr, desc, sizeof(*desc), + MEMTXATTRS_UNSPECIFIED); if (desc->size =3D=3D 0) { desc->size =3D klass->max_desc_size; } else if (desc->size > klass->max_desc_size) { @@ -337,23 +338,24 @@ static uint32_t allwinner_sdhost_process_desc(AwSdHos= tState *s, /* Write to SD bus */ if (is_write) { dma_memory_read(&s->dma_as, - (desc->addr & DESC_SIZE_MASK) + num_done, - buf, buf_bytes); + (desc->addr & DESC_SIZE_MASK) + num_done, buf, + buf_bytes, MEMTXATTRS_UNSPECIFIED); sdbus_write_data(&s->sdbus, buf, buf_bytes); =20 /* Read from SD bus */ } else { sdbus_read_data(&s->sdbus, buf, buf_bytes); dma_memory_write(&s->dma_as, - (desc->addr & DESC_SIZE_MASK) + num_done, - buf, buf_bytes); + (desc->addr & DESC_SIZE_MASK) + num_done, buf, + buf_bytes, MEMTXATTRS_UNSPECIFIED); } num_done +=3D buf_bytes; } =20 /* Clear hold flag and flush descriptor */ desc->status &=3D ~DESC_STATUS_HOLD; - dma_memory_write(&s->dma_as, desc_addr, desc, sizeof(*desc)); + dma_memory_write(&s->dma_as, desc_addr, desc, sizeof(*desc), + MEMTXATTRS_UNSPECIFIED); =20 return num_done; } diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index c9dc065cc52..e0bbc903446 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -616,8 +616,8 @@ 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= ); + dma_memory_write(s->dma_as, s->sdmasysad, &s->fifo_buffer[begi= n], + s->data_count - begin, MEMTXATTRS_UNSPECIFIED= ); s->sdmasysad +=3D s->data_count - begin; if (s->data_count =3D=3D block_size) { s->data_count =3D 0; @@ -637,8 +637,8 @@ static void sdhci_sdma_transfer_multi_blocks(SDHCIState= *s) s->data_count =3D block_size; boundary_count -=3D block_size - begin; } - dma_memory_read(s->dma_as, s->sdmasysad, - &s->fifo_buffer[begin], s->data_count - begin); + dma_memory_read(s->dma_as, s->sdmasysad, &s->fifo_buffer[begin= ], + s->data_count - begin, MEMTXATTRS_UNSPECIFIED); s->sdmasysad +=3D s->data_count - begin; if (s->data_count =3D=3D block_size) { sdbus_write_data(&s->sdbus, s->fifo_buffer, block_size); @@ -670,9 +670,11 @@ static void sdhci_sdma_transfer_single_block(SDHCIStat= e *s) =20 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); + dma_memory_write(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, + MEMTXATTRS_UNSPECIFIED); } else { - dma_memory_read(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt); + dma_memory_read(s->dma_as, s->sdmasysad, s->fifo_buffer, datacnt, + MEMTXATTRS_UNSPECIFIED); sdbus_write_data(&s->sdbus, s->fifo_buffer, datacnt); } s->blkcnt--; @@ -694,7 +696,8 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) hwaddr entry_addr =3D (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)); + dma_memory_read(s->dma_as, entry_addr, &adma2, sizeof(adma2), + MEMTXATTRS_UNSPECIFIED); adma2 =3D le64_to_cpu(adma2); /* The spec does not specify endianness of descriptor table. * We currently assume that it is LE. @@ -705,7 +708,8 @@ static void get_adma_description(SDHCIState *s, ADMADes= cr *dscr) dscr->incr =3D 8; break; case SDHC_CTRL_ADMA1_32: - dma_memory_read(s->dma_as, entry_addr, &adma1, sizeof(adma1)); + dma_memory_read(s->dma_as, entry_addr, &adma1, sizeof(adma1), + MEMTXATTRS_UNSPECIFIED); adma1 =3D le32_to_cpu(adma1); dscr->addr =3D (hwaddr)(adma1 & 0xFFFFF000); dscr->attr =3D (uint8_t)extract32(adma1, 0, 7); @@ -717,10 +721,13 @@ static void get_adma_description(SDHCIState *s, ADMAD= escr *dscr) } break; case SDHC_CTRL_ADMA2_64: - dma_memory_read(s->dma_as, entry_addr, &dscr->attr, 1); - dma_memory_read(s->dma_as, entry_addr + 2, &dscr->length, 2); + 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); dscr->length =3D le16_to_cpu(dscr->length); - dma_memory_read(s->dma_as, entry_addr + 4, &dscr->addr, 8); + dma_memory_read(s->dma_as, entry_addr + 4, &dscr->addr, 8, + MEMTXATTRS_UNSPECIFIED); dscr->addr =3D le64_to_cpu(dscr->addr); dscr->attr &=3D (uint8_t) ~0xC0; dscr->incr =3D 12; @@ -785,7 +792,8 @@ static void sdhci_do_adma(SDHCIState *s) } dma_memory_write(s->dma_as, dscr.addr, &s->fifo_buffer[begin], - s->data_count - begin); + s->data_count - begin, + MEMTXATTRS_UNSPECIFIED); dscr.addr +=3D s->data_count - begin; if (s->data_count =3D=3D block_size) { s->data_count =3D 0; @@ -810,7 +818,8 @@ static void sdhci_do_adma(SDHCIState *s) } dma_memory_read(s->dma_as, dscr.addr, &s->fifo_buffer[begin], - s->data_count - begin); + s->data_count - begin, + MEMTXATTRS_UNSPECIFIED); dscr.addr +=3D s->data_count - begin; if (s->data_count =3D=3D block_size) { sdbus_write_data(&s->sdbus, s->fifo_buffer, block_= size); diff --git a/hw/usb/hcd-dwc2.c b/hw/usb/hcd-dwc2.c index e1d96acf7ec..8755e9cbb0a 100644 --- a/hw/usb/hcd-dwc2.c +++ b/hw/usb/hcd-dwc2.c @@ -272,8 +272,8 @@ static void dwc2_handle_packet(DWC2State *s, uint32_t d= evadr, USBDevice *dev, =20 if (pid !=3D USB_TOKEN_IN) { trace_usb_dwc2_memory_read(hcdma, tlen); - if (dma_memory_read(&s->dma_as, hcdma, - s->usb_buf[chan], tlen) !=3D MEMTX_OK) { + if (dma_memory_read(&s->dma_as, hcdma, s->usb_buf[chan], tlen, + MEMTXATTRS_UNSPECIFIED) !=3D MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: dma_memory_read failed= \n", __func__); } @@ -328,8 +328,8 @@ babble: =20 if (pid =3D=3D USB_TOKEN_IN) { trace_usb_dwc2_memory_write(hcdma, actual); - if (dma_memory_write(&s->dma_as, hcdma, s->usb_buf[chan], - actual) !=3D MEMTX_OK) { + if (dma_memory_write(&s->dma_as, hcdma, s->usb_buf[chan], actu= al, + MEMTXATTRS_UNSPECIFIED) !=3D MEMTX_OK) { qemu_log_mask(LOG_GUEST_ERROR, "%s: dma_memory_write faile= d\n", __func__); } diff --git a/hw/usb/hcd-ehci.c b/hw/usb/hcd-ehci.c index 6caa7ac6c28..33a8a377bd9 100644 --- a/hw/usb/hcd-ehci.c +++ b/hw/usb/hcd-ehci.c @@ -383,7 +383,8 @@ static inline int get_dwords(EHCIState *ehci, uint32_t = addr, } =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { - dma_memory_read(ehci->as, addr, buf, sizeof(*buf)); + dma_memory_read(ehci->as, addr, buf, sizeof(*buf), + MEMTXATTRS_UNSPECIFIED); *buf =3D le32_to_cpu(*buf); } =20 @@ -405,7 +406,8 @@ static inline int put_dwords(EHCIState *ehci, uint32_t = addr, =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { uint32_t tmp =3D cpu_to_le32(*buf); - dma_memory_write(ehci->as, addr, &tmp, sizeof(tmp)); + dma_memory_write(ehci->as, addr, &tmp, sizeof(tmp), + MEMTXATTRS_UNSPECIFIED); } =20 return num; diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 56e2315c734..a93d6b2e988 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -452,7 +452,8 @@ static inline int get_dwords(OHCIState *ohci, addr +=3D ohci->localmem_base; =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { - if (dma_memory_read(ohci->as, addr, buf, sizeof(*buf))) { + if (dma_memory_read(ohci->as, addr, + buf, sizeof(*buf), MEMTXATTRS_UNSPECIFIED)) { return -1; } *buf =3D le32_to_cpu(*buf); @@ -471,7 +472,8 @@ static inline int put_dwords(OHCIState *ohci, =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { uint32_t tmp =3D cpu_to_le32(*buf); - if (dma_memory_write(ohci->as, addr, &tmp, sizeof(tmp))) { + if (dma_memory_write(ohci->as, addr, + &tmp, sizeof(tmp), MEMTXATTRS_UNSPECIFIED)) { return -1; } } @@ -488,7 +490,8 @@ static inline int get_words(OHCIState *ohci, addr +=3D ohci->localmem_base; =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { - if (dma_memory_read(ohci->as, addr, buf, sizeof(*buf))) { + if (dma_memory_read(ohci->as, addr, + buf, sizeof(*buf), MEMTXATTRS_UNSPECIFIED)) { return -1; } *buf =3D le16_to_cpu(*buf); @@ -507,7 +510,8 @@ static inline int put_words(OHCIState *ohci, =20 for (i =3D 0; i < num; i++, buf++, addr +=3D sizeof(*buf)) { uint16_t tmp =3D cpu_to_le16(*buf); - if (dma_memory_write(ohci->as, addr, &tmp, sizeof(tmp))) { + if (dma_memory_write(ohci->as, addr, + &tmp, sizeof(tmp), MEMTXATTRS_UNSPECIFIED)) { return -1; } } @@ -537,8 +541,8 @@ static inline int ohci_read_iso_td(OHCIState *ohci, static inline int ohci_read_hcca(OHCIState *ohci, dma_addr_t addr, struct ohci_hcca *hcca) { - return dma_memory_read(ohci->as, addr + ohci->localmem_base, - hcca, sizeof(*hcca)); + return dma_memory_read(ohci->as, addr + ohci->localmem_base, hcca, + sizeof(*hcca), MEMTXATTRS_UNSPECIFIED); } =20 static inline int ohci_put_ed(OHCIState *ohci, @@ -572,7 +576,7 @@ static inline int ohci_put_hcca(OHCIState *ohci, return dma_memory_write(ohci->as, addr + ohci->localmem_base + HCCA_WRITEBACK_OF= FSET, (char *)hcca + HCCA_WRITEBACK_OFFSET, - HCCA_WRITEBACK_SIZE); + HCCA_WRITEBACK_SIZE, MEMTXATTRS_UNSPECIFIED); } =20 /* Read/Write the contents of a TD from/to main memory. */ diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index e01700039b1..ed2b9ea456e 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -487,7 +487,7 @@ static inline void xhci_dma_read_u32s(XHCIState *xhci, = dma_addr_t addr, =20 assert((len % sizeof(uint32_t)) =3D=3D 0); =20 - dma_memory_read(xhci->as, addr, buf, len); + dma_memory_read(xhci->as, addr, buf, len, MEMTXATTRS_UNSPECIFIED); =20 for (i =3D 0; i < (len / sizeof(uint32_t)); i++) { buf[i] =3D le32_to_cpu(buf[i]); @@ -507,7 +507,7 @@ static inline void xhci_dma_write_u32s(XHCIState *xhci,= dma_addr_t addr, for (i =3D 0; i < n; i++) { tmp[i] =3D cpu_to_le32(buf[i]); } - dma_memory_write(xhci->as, addr, tmp, len); + dma_memory_write(xhci->as, addr, tmp, len, MEMTXATTRS_UNSPECIFIED); } =20 static XHCIPort *xhci_lookup_port(XHCIState *xhci, struct USBPort *uport) @@ -618,7 +618,7 @@ static void xhci_write_event(XHCIState *xhci, XHCIEvent= *event, int v) ev_trb.status, ev_trb.control); =20 addr =3D intr->er_start + TRB_SIZE*intr->er_ep_idx; - dma_memory_write(xhci->as, addr, &ev_trb, TRB_SIZE); + dma_memory_write(xhci->as, addr, &ev_trb, TRB_SIZE, MEMTXATTRS_UNSPECI= FIED); =20 intr->er_ep_idx++; if (intr->er_ep_idx >=3D intr->er_size) { @@ -679,7 +679,8 @@ static TRBType xhci_ring_fetch(XHCIState *xhci, XHCIRin= g *ring, XHCITRB *trb, =20 while (1) { TRBType type; - dma_memory_read(xhci->as, ring->dequeue, trb, TRB_SIZE); + dma_memory_read(xhci->as, ring->dequeue, trb, TRB_SIZE, + MEMTXATTRS_UNSPECIFIED); trb->addr =3D ring->dequeue; trb->ccs =3D ring->ccs; le64_to_cpus(&trb->parameter); @@ -726,7 +727,8 @@ static int xhci_ring_chain_length(XHCIState *xhci, cons= t XHCIRing *ring) =20 while (1) { TRBType type; - dma_memory_read(xhci->as, dequeue, &trb, TRB_SIZE); + dma_memory_read(xhci->as, dequeue, &trb, TRB_SIZE, + MEMTXATTRS_UNSPECIFIED); le64_to_cpus(&trb.parameter); le32_to_cpus(&trb.status); le32_to_cpus(&trb.control); @@ -781,7 +783,8 @@ static void xhci_er_reset(XHCIState *xhci, int v) xhci_die(xhci); return; } - dma_memory_read(xhci->as, erstba, &seg, sizeof(seg)); + dma_memory_read(xhci->as, erstba, &seg, sizeof(seg), + MEMTXATTRS_UNSPECIFIED); le32_to_cpus(&seg.addr_low); le32_to_cpus(&seg.addr_high); le32_to_cpus(&seg.size); @@ -2397,7 +2400,8 @@ static TRBCCode xhci_get_port_bandwidth(XHCIState *xh= ci, uint64_t pctx) /* TODO: actually implement real values here */ bw_ctx[0] =3D 0; memset(&bw_ctx[1], 80, xhci->numports); /* 80% */ - dma_memory_write(xhci->as, ctx, bw_ctx, sizeof(bw_ctx)); + dma_memory_write(xhci->as, ctx, bw_ctx, sizeof(bw_ctx), + MEMTXATTRS_UNSPECIFIED); =20 return CC_SUCCESS; } --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260659; cv=none; d=zohomail.com; s=zohoarc; b=Yra8yuui+po5UP6KGsRxE3Tjf7LaZGIyX6oy1hPMNkJg8HJbYFbNeUkXKRGXAaRrcbxYwmbDl15O1UbLYACag0xrMJ0RmcR11HgWPt6pBaYgYTv4lHIZ2ga7Ze12OPr2Yg6X67BA55jW2zc9q3ary08gHH+jB+EKuaVjBRohcjM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260659; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=JlHtEDNchl3mn6IN4VTMeHX5PZJU77q/cfu6ijIqzmY=; b=EG3MfQUvjYEtDTCGPqxqnE/0MkrZcm2cV/OpIGUjbcPuv3//SIE7JyfriC2JT0VrYITV3R4Y6pEW6XqPJJ6F3hS0XNLxC7yYcqojJlhDlhHgOCESjqSlKFOf9WLW9yc8Eb0ouZYD8g3uYhPYW5T2t+jStqWcibm68HIslgt1ZKY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260659453394.72103003999064; Thu, 23 Dec 2021 03:57:39 -0800 (PST) Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-379-NXhptVnuMbGDm7CV4msyZw-1; Thu, 23 Dec 2021 06:57:37 -0500 Received: by mail-wm1-f71.google.com with SMTP id o18-20020a05600c511200b00345c1603997so549460wms.1 for ; Thu, 23 Dec 2021 03:57:37 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id s8sm5491683wra.9.2021.12.23.03.57.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:57:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JlHtEDNchl3mn6IN4VTMeHX5PZJU77q/cfu6ijIqzmY=; b=hJQmQWIbMWu3N663X0PbGStwVaN3HU8ZAAJWyhhtks+XQf2AMV1++xLZ+rE1pLUM8pbReR /rkQhJIpPQCsTYOzgfBbOObbLtUAzKNDGoSqUorTgXYn/3xNWS9Pul2FqtKn7kcrIjt5Z1 GSvbLFX9gByUjUabFDI/Uw9YrJECTq4= X-MC-Unique: NXhptVnuMbGDm7CV4msyZw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JlHtEDNchl3mn6IN4VTMeHX5PZJU77q/cfu6ijIqzmY=; b=lD3CVBZZA7Gw949FupqWPp7YztcMCjC2Rw+ga2OAaVJ1hzu674Lk9vKJyI2X3yoxb0 QS4SwMrzW77R92VjK0RxKi4y4cUWn4N7xGV2BLkDrRPGjNU8F5bPbmdJzIZuiMzVwTN/ w57m6wtYL9ncvDcByO80hBA4SnRKjqHFcn4pGsLm3EYWRf5n96nryy6e1gQCQ0H4cqm4 ObMdDXBNCWoEXCANf3KisfGnVeObqWtj/J+3Pn3Vl3mdiaPyQERM6yrkG3H6r07RmhdR hECvM0X1mLRSDXGw2hl0UWqJORetIjPO9y9v747nC18QST54n1YVqzxPjetNUBpChXN/ 4zDA== X-Gm-Message-State: AOAM531DJgrhdxqAJDRSHeZmXm3KR7i+UU/Fwp3jpsjbJS54W3fPW52Z ydAQ8ind9IaQ3k18yTjHqGJ2i7MClkDUN/PrtqYsoIsupTtTk9Camhl5QJvXdsRfYjoaVemK8/z gvNL3SvlyQ/N2IA== X-Received: by 2002:a05:6000:1ac9:: with SMTP id i9mr1470548wry.531.1640260656013; Thu, 23 Dec 2021 03:57:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJz2odW8+cHbNw40desh9u11A2zmSKk2WtuGp/wX3MfWh5yu32srGB6BOu1wbMWVJtpX+ZACyQ== X-Received: by 2002:a05:6000:1ac9:: with SMTP id i9mr1470497wry.531.1640260655713; Thu, 23 Dec 2021 03:57:35 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PATCH v2 06/23] dma: Let dma_memory_map() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:37 +0100 Message-Id: <20211223115554.3155328-7-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260660032100001 Let devices specify transaction attributes when calling dma_memory_map(). Patch created mechanically using spatch with this script: @@ expression E1, E2, E3, E4; @@ - dma_memory_map(E1, E2, E3, E4) + dma_memory_map(E1, E2, E3, E4, MEMTXATTRS_UNSPECIFIED) Reviewed-by: Richard Henderson Reviewed-by: Li Qiang Reviewed-by: Edgar E. Iglesias Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Stefan Hajnoczi Message-Id: <20210702092439.989969-7-philmd@redhat.com> --- include/hw/pci/pci.h | 3 ++- include/sysemu/dma.h | 5 +++-- hw/display/virtio-gpu.c | 10 ++++++---- hw/hyperv/vmbus.c | 8 +++++--- hw/ide/ahci.c | 8 +++++--- hw/usb/libhw.c | 3 ++- hw/virtio/virtio.c | 6 ++++-- softmmu/dma-helpers.c | 3 ++- 8 files changed, 29 insertions(+), 17 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 4383f1c95e0..1acefc2a4c3 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -875,7 +875,8 @@ static inline void *pci_dma_map(PCIDevice *dev, dma_add= r_t addr, { void *buf; =20 - buf =3D dma_memory_map(pci_get_address_space(dev), addr, plen, dir); + buf =3D dma_memory_map(pci_get_address_space(dev), addr, plen, dir, + MEMTXATTRS_UNSPECIFIED); return buf; } =20 diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 522682bf386..97ff6f29f8c 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -202,16 +202,17 @@ MemTxResult dma_memory_set(AddressSpace *as, dma_addr= _t addr, * @addr: address within that address space * @len: pointer to length of buffer; updated on return * @dir: indicates the transfer direction + * @attrs: memory attributes */ static inline void *dma_memory_map(AddressSpace *as, dma_addr_t addr, dma_addr_t *len, - DMADirection dir) + DMADirection dir, MemTxAttrs attrs) { hwaddr xlen =3D *len; void *p; =20 p =3D address_space_map(as, addr, &xlen, dir =3D=3D DMA_DIRECTION_FROM= _DEVICE, - MEMTXATTRS_UNSPECIFIED); + attrs); *len =3D xlen; return p; } diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index d78b9700c7d..c6dc818988c 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -814,8 +814,9 @@ int virtio_gpu_create_mapping_iov(VirtIOGPU *g, =20 do { len =3D l; - map =3D dma_memory_map(VIRTIO_DEVICE(g)->dma_as, - a, &len, DMA_DIRECTION_TO_DEVICE); + map =3D dma_memory_map(VIRTIO_DEVICE(g)->dma_as, a, &len, + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); if (!map) { qemu_log_mask(LOG_GUEST_ERROR, "%s: failed to map MMIO mem= ory for" " element %d\n", __func__, e); @@ -1252,8 +1253,9 @@ static int virtio_gpu_load(QEMUFile *f, void *opaque,= size_t size, for (i =3D 0; i < res->iov_cnt; i++) { hwaddr len =3D res->iov[i].iov_len; res->iov[i].iov_base =3D - dma_memory_map(VIRTIO_DEVICE(g)->dma_as, - res->addrs[i], &len, DMA_DIRECTION_TO_DEVIC= E); + dma_memory_map(VIRTIO_DEVICE(g)->dma_as, res->addrs[i], &l= en, + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); =20 if (!res->iov[i].iov_base || len !=3D res->iov[i].iov_len) { /* Clean up the half-a-mapping we just created... */ diff --git a/hw/hyperv/vmbus.c b/hw/hyperv/vmbus.c index dbce3b35fba..8aad29f1bb2 100644 --- a/hw/hyperv/vmbus.c +++ b/hw/hyperv/vmbus.c @@ -373,7 +373,8 @@ static ssize_t gpadl_iter_io(GpadlIter *iter, void *buf= , uint32_t len) =20 maddr =3D (iter->gpadl->gfns[idx] << TARGET_PAGE_BITS) | off_i= n_page; =20 - iter->map =3D dma_memory_map(iter->as, maddr, &mlen, iter->dir= ); + iter->map =3D dma_memory_map(iter->as, maddr, &mlen, iter->dir, + MEMTXATTRS_UNSPECIFIED); if (mlen !=3D pgleft) { dma_memory_unmap(iter->as, iter->map, mlen, iter->dir, 0); iter->map =3D NULL; @@ -490,7 +491,8 @@ int vmbus_map_sgl(VMBusChanReq *req, DMADirection dir, = struct iovec *iov, goto err; } =20 - iov[ret_cnt].iov_base =3D dma_memory_map(sgl->as, a, &l, dir); + iov[ret_cnt].iov_base =3D dma_memory_map(sgl->as, a, &l, dir, + MEMTXATTRS_UNSPECIFIED); if (!l) { ret =3D -EFAULT; goto err; @@ -566,7 +568,7 @@ static vmbus_ring_buffer *ringbuf_map_hdr(VMBusRingBufC= ommon *ringbuf) dma_addr_t mlen =3D sizeof(*rb); =20 rb =3D dma_memory_map(ringbuf->as, ringbuf->rb_addr, &mlen, - DMA_DIRECTION_FROM_DEVICE); + DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); if (mlen !=3D sizeof(*rb)) { dma_memory_unmap(ringbuf->as, rb, mlen, DMA_DIRECTION_FROM_DEVICE, 0); diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index a94c6e26fb0..8e77ddb660f 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -249,7 +249,8 @@ static void map_page(AddressSpace *as, uint8_t **ptr, u= int64_t addr, dma_memory_unmap(as, *ptr, len, DMA_DIRECTION_FROM_DEVICE, len); } =20 - *ptr =3D dma_memory_map(as, addr, &len, DMA_DIRECTION_FROM_DEVICE); + *ptr =3D dma_memory_map(as, addr, &len, DMA_DIRECTION_FROM_DEVICE, + MEMTXATTRS_UNSPECIFIED); if (len < wanted && *ptr) { dma_memory_unmap(as, *ptr, len, DMA_DIRECTION_FROM_DEVICE, len); *ptr =3D NULL; @@ -939,7 +940,8 @@ static int ahci_populate_sglist(AHCIDevice *ad, QEMUSGL= ist *sglist, =20 /* map PRDT */ if (!(prdt =3D dma_memory_map(ad->hba->as, prdt_addr, &prdt_len, - DMA_DIRECTION_TO_DEVICE))){ + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED))){ trace_ahci_populate_sglist_no_map(ad->hba, ad->port_no); return -1; } @@ -1301,7 +1303,7 @@ static int handle_cmd(AHCIState *s, int port, uint8_t= slot) tbl_addr =3D le64_to_cpu(cmd->tbl_addr); cmd_len =3D 0x80; cmd_fis =3D dma_memory_map(s->as, tbl_addr, &cmd_len, - DMA_DIRECTION_TO_DEVICE); + DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFI= ED); if (!cmd_fis) { trace_handle_cmd_badfis(s, port); return -1; diff --git a/hw/usb/libhw.c b/hw/usb/libhw.c index 9c33a1640f7..f350eae443d 100644 --- a/hw/usb/libhw.c +++ b/hw/usb/libhw.c @@ -36,7 +36,8 @@ int usb_packet_map(USBPacket *p, QEMUSGList *sgl) =20 while (len) { dma_addr_t xlen =3D len; - mem =3D dma_memory_map(sgl->as, base, &xlen, dir); + mem =3D dma_memory_map(sgl->as, base, &xlen, dir, + MEMTXATTRS_UNSPECIFIED); if (!mem) { goto err; } diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index ea7c079fb04..e11a8a0dbab 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1306,7 +1306,8 @@ static bool virtqueue_map_desc(VirtIODevice *vdev, un= signed int *p_num_sg, iov[num_sg].iov_base =3D dma_memory_map(vdev->dma_as, pa, &len, is_write ? DMA_DIRECTION_FROM_DEVICE : - DMA_DIRECTION_TO_DEVICE); + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); if (!iov[num_sg].iov_base) { virtio_error(vdev, "virtio: bogus descriptor or out of resourc= es"); goto out; @@ -1355,7 +1356,8 @@ static void virtqueue_map_iovec(VirtIODevice *vdev, s= truct iovec *sg, sg[i].iov_base =3D dma_memory_map(vdev->dma_as, addr[i], &len, is_write ? DMA_DIRECTION_FROM_DEVICE : - DMA_DIRECTION_TO_DEVICE); + DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); if (!sg[i].iov_base) { error_report("virtio: error trying to map MMIO memory"); exit(1); diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 5bf76fff6bd..3c06a2feddd 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -143,7 +143,8 @@ static void dma_blk_cb(void *opaque, int ret) while (dbs->sg_cur_index < dbs->sg->nsg) { cur_addr =3D dbs->sg->sg[dbs->sg_cur_index].base + dbs->sg_cur_byt= e; cur_len =3D dbs->sg->sg[dbs->sg_cur_index].len - dbs->sg_cur_byte; - mem =3D dma_memory_map(dbs->sg->as, cur_addr, &cur_len, dbs->dir); + mem =3D dma_memory_map(dbs->sg->as, cur_addr, &cur_len, dbs->dir, + MEMTXATTRS_UNSPECIFIED); /* * Make reads deterministic in icount mode. Windows sometimes issu= es * disk read requests with overlapping SGs. It leads --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260675; cv=none; d=zohomail.com; s=zohoarc; b=CssLzq7E9Bej8AQaX12tN+BQF8XiGwmBW68iUcRfm9Rj0446SJUq5hH4UMoeksu9DXtaVIAcKLBTuFUurF72D1GjWDPiJtBSDTnQRURtzHUotsFbZhuKFhf2FzleozVKWkMJU1RMfDxGoqeHVVXYnQCsyP1BV/5FLDgl9AtyMyw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260675; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=kqGVMoeSLIS0R7ecXiNgtt0tJfscA56QNYUlD07YLQc=; b=FbNWwndO2o9IvjVofaSFjJ8WQO+p01f/NKYTJDF6k8rLQuqwxGJ5+cUGb4Xr7L4egLbzhL6nzexYHSk3txtLpS2XDEZZovUkPZ205uECvYQ8+dvdjygj8f+yRuGvPW1YIbs2UIp9NfMyIZU2ifZDSLsKBDDUb0wXnW+tDqxDq5E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 16402606756011006.0604767608453; Thu, 23 Dec 2021 03:57:55 -0800 (PST) Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-597-zggY1bneOh2ChfGuUtg_Kg-1; Thu, 23 Dec 2021 06:57:53 -0500 Received: by mail-wr1-f69.google.com with SMTP id v18-20020a5d5912000000b001815910d2c0so1224745wrd.1 for ; Thu, 23 Dec 2021 03:57:53 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id az15sm4220456wmb.47.2021.12.23.03.57.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:57:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260674; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kqGVMoeSLIS0R7ecXiNgtt0tJfscA56QNYUlD07YLQc=; b=iBoaIZM1xH9aS0lmLku49FOpdDkQ76WOt88s7M4n2vyDTVZ1L6ixXlfU8A2YjzNtfc6lFn WL9GuRO557pkpOxjumPfGrrbZxrPgotKbKBFyD5GSQvn+W1HU9DsXqrhvjwoZ+agUng5Hj ZCtsLQXu6dybniworpCQTjkidsER9hs= X-MC-Unique: zggY1bneOh2ChfGuUtg_Kg-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=kqGVMoeSLIS0R7ecXiNgtt0tJfscA56QNYUlD07YLQc=; b=KDh1HVMfJshdrptRr3TkAEHqs+EuJseBTe76Q+rCGO4dyK+EXd2wGlpPvR6Av3cw47 oVR+3gynYMCBG3hP9wteNizqY5Nr5OjzVIUDQVOwP+WnhtuxBNeeFU0QYvMSh6i1w9xh 64rV0gM9gHghWyHssTKLIKACbN2u348i71VqpFzqLUYskBlOu3A1A12Jn1DDYJCNFRzV eQkPitNqdhhKdO36RskgCaNgN591iOPAEwno06IOzlolGN12ykd7hth5fYIyOyp3mqQe 0l8bKX6vY3MAQXFYaxBunBvXVSFBalziwB5VrXGBsO/R5tm59pvE5nMO8eQhCAjR+geL QlhA== X-Gm-Message-State: AOAM530GhVOdMfcsub0a4X6tIzMseCuLPl/8tgiBuakd7JmbDKMbmG1H xOjhFT/oB+hedOUapLL1q1uYVkymoKwJ6zLR0KldimZXs9+hipKK8AZhuaPBpbkMNAK9btJKqS0 nM/aeHf2FRhpGLQ== X-Received: by 2002:a5d:59af:: with SMTP id p15mr1567041wrr.422.1640260672368; Thu, 23 Dec 2021 03:57:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJxkSWpPuScdr/sDyE1pWGinW5+okcN0PSBP+85J0cs057/gOU1XT2/F6hUrVg/EjjW0bVzoHA== X-Received: by 2002:a5d:59af:: with SMTP id p15mr1567016wrr.422.1640260672201; Thu, 23 Dec 2021 03:57:52 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 07/23] dma: Have dma_buf_rw() take a void pointer Date: Thu, 23 Dec 2021 12:55:38 +0100 Message-Id: <20211223115554.3155328-8-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260677289100001 DMA operations are run on any kind of buffer, not arrays of uint8_t. Convert dma_buf_rw() to take a void pointer argument to save us pointless casts to uint8_t *. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- softmmu/dma-helpers.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 3c06a2feddd..09e29997ee5 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -294,9 +294,10 @@ BlockAIOCB *dma_blk_write(BlockBackend *blk, } =20 =20 -static uint64_t dma_buf_rw(uint8_t *ptr, int32_t len, QEMUSGList *sg, +static uint64_t dma_buf_rw(void *buf, int32_t len, QEMUSGList *sg, DMADirection dir) { + uint8_t *ptr =3D buf; uint64_t resid; int sg_cur_index; =20 --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260690; cv=none; d=zohomail.com; s=zohoarc; b=ATPoPFdIiND0E2XloWrIgQdjAIjAFGJbTsWGHEDxttRpKCJwhyDw2cFf8RRFwn3ru8fYhocPTiLE/Vf3k1zMjAvxjOU4W+m+ZCevSdHMqMrBaAylqMmpOSWagW7G/iV4Ylfh4hlt9h0gsnkSTpkf/8ArhHua283lSG/i54pYN4c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260690; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=4MZDcjrRTlV4xDeU9/QkaMx4+S9qLpo1jo/kWB7g2uY=; b=MaCXhVuzpf7spFmC6oOp2Li6qUPIzbpEMbGRpeAOLRBLosnYrx1HcOdOD9QU5HrSQouq7EStsLZonMTe1+/jJKQAlXvSBkH1mOnT4kJ55QoUUlqahoYEj4BB8KMIU0CZbR/crU0X1bsusW+kapoPoeh86JWKzJtD8jBnO6KZrgQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260690018590.658159208711; Thu, 23 Dec 2021 03:58:10 -0800 (PST) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-134-gWSRTgZePD-dUgq86prGIw-1; Thu, 23 Dec 2021 06:58:08 -0500 Received: by mail-wm1-f69.google.com with SMTP id z13-20020a05600c0a0d00b003457d6619f8so1879513wmp.1 for ; Thu, 23 Dec 2021 03:58:07 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id q13sm4553548wrr.64.2021.12.23.03.57.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:58:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260689; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4MZDcjrRTlV4xDeU9/QkaMx4+S9qLpo1jo/kWB7g2uY=; b=gABiCVqSYTjcUMj9mp7tvvO5HVkBdNYKyfIB9OMmUxY8KU4+JIND/R7YKgraE4x1kvn7vb OCWZsfVvc3RUjpAzr9tarhPlcKfO7gyXQvKh6RGaPn7SXhsKB5CZqC+YdeFQzySEuJAjK0 rqqmwWJCLGqtTM84yBEC6VowH4h1Itc= X-MC-Unique: gWSRTgZePD-dUgq86prGIw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4MZDcjrRTlV4xDeU9/QkaMx4+S9qLpo1jo/kWB7g2uY=; b=0hPIahe0AfGYqAQbzmYOU8gUJGcpi+SSMriZ6fJszCvFVa3i2cexxQ9xvcT4Cx1zBR pCQV/1VWzhvSnLfMC+JNfzk7PEx5U5Vmmipl2byggnv3vJ+8N7T7R66S8KQ6slXmO36j /DO9apXfceuCzjD3XijHil5TIOqx/pVNVUF2rOWLd7ASD3GL2t3mm3LwUjzNhAuTqa+3 N8H7KPtdwyBuJQemqHHW36ODNrWZ/qIW701wR3TW2OEv+jh+QtEdrZkpTrOA6lg/ZhAi 8j0MDsU/XXRSvBjIgnEZcC6tYMB2dxOtC+6LORw6IscSMYCyD6mrKdeF+XzRQ/do1kNF DPag== X-Gm-Message-State: AOAM5339H4bwciDNvNtywhsW5aMOEcfCpxjXHrT5c2JPz0DQIooBmX9e YvTAaGKSFiPLG3+wiGcot5t2/+g520VGX3ERb7BqUKGdRrAwGqfkPN3zEiJeYz9QVR8HYvGtJFY 5JyigT7KmZQtmoA== X-Received: by 2002:adf:f985:: with SMTP id f5mr1539767wrr.14.1640260686736; Thu, 23 Dec 2021 03:58:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJxA4cNRWKqaNRPfPCkDahQPJhOFZX/1ksH6nhn80QsBvQaBrYXHasYAPCxsZWNpOBY1YHVQCA== X-Received: by 2002:adf:f985:: with SMTP id f5mr1539734wrr.14.1640260686553; Thu, 23 Dec 2021 03:58:06 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 08/23] dma: Have dma_buf_read() / dma_buf_write() take a void pointer Date: Thu, 23 Dec 2021 12:55:39 +0100 Message-Id: <20211223115554.3155328-9-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260690553100001 DMA operations are run on any kind of buffer, not arrays of uint8_t. Convert dma_buf_read/dma_buf_write functions to take a void pointer argument and save us pointless casts to uint8_t *. Remove this pointless casts in the megasas device model. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/sysemu/dma.h | 4 ++-- hw/scsi/megasas.c | 22 +++++++++++----------- softmmu/dma-helpers.c | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 97ff6f29f8c..0d5b836013d 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -302,8 +302,8 @@ BlockAIOCB *dma_blk_read(BlockBackend *blk, BlockAIOCB *dma_blk_write(BlockBackend *blk, QEMUSGList *sg, uint64_t offset, uint32_t align, BlockCompletionFunc *cb, void *opaque); -uint64_t dma_buf_read(uint8_t *ptr, int32_t len, QEMUSGList *sg); -uint64_t dma_buf_write(uint8_t *ptr, int32_t len, QEMUSGList *sg); +uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg); +uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg); =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, QEMUSGList *sg, enum BlockAcctType type); diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index 8f357841004..dc28302f96d 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -848,7 +848,7 @@ static int megasas_ctrl_get_info(MegasasState *s, Megas= asCmd *cmd) MFI_INFO_PDMIX_SATA | MFI_INFO_PDMIX_LD); =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -878,7 +878,7 @@ static int megasas_mfc_get_defaults(MegasasState *s, Me= gasasCmd *cmd) info.disable_preboot_cli =3D 1; info.cluster_disable =3D 1; =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -899,7 +899,7 @@ static int megasas_dcmd_get_bios_info(MegasasState *s, = MegasasCmd *cmd) info.expose_all_drives =3D 1; } =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -910,7 +910,7 @@ static int megasas_dcmd_get_fw_time(MegasasState *s, Me= gasasCmd *cmd) =20 fw_time =3D cpu_to_le64(megasas_fw_time()); =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&fw_time, dcmd_size, &cmd->= qsg); + cmd->iov_size -=3D dma_buf_read(&fw_time, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -937,7 +937,7 @@ static int megasas_event_info(MegasasState *s, MegasasC= md *cmd) info.shutdown_seq_num =3D cpu_to_le32(s->shutdown_event); info.boot_seq_num =3D cpu_to_le32(s->boot_event); =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -1006,7 +1006,7 @@ static int megasas_dcmd_pd_get_list(MegasasState *s, = MegasasCmd *cmd) info.size =3D cpu_to_le32(offset); info.count =3D cpu_to_le32(num_pd_disks); =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, offset, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, offset, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -1172,7 +1172,7 @@ static int megasas_dcmd_ld_get_list(MegasasState *s, = MegasasCmd *cmd) info.ld_count =3D cpu_to_le32(num_ld_disks); trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1221,7 +1221,7 @@ static int megasas_dcmd_ld_list_query(MegasasState *s= , MegasasCmd *cmd) info.size =3D dcmd_size; trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1390,7 +1390,7 @@ static int megasas_dcmd_cfg_read(MegasasState *s, Meg= asasCmd *cmd) ld_offset +=3D sizeof(struct mfi_ld_config); } =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)data, info->size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(data, info->size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -1420,7 +1420,7 @@ static int megasas_dcmd_get_properties(MegasasState *= s, MegasasCmd *cmd) info.ecc_bucket_leak_rate =3D cpu_to_le16(1440); info.expose_encl_devices =3D 1; =20 - cmd->iov_size -=3D dma_buf_read((uint8_t *)&info, dcmd_size, &cmd->qsg= ); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); return MFI_STAT_OK; } =20 @@ -1465,7 +1465,7 @@ static int megasas_dcmd_set_properties(MegasasState *= s, MegasasCmd *cmd) dcmd_size); return MFI_STAT_INVALID_PARAMETER; } - dma_buf_write((uint8_t *)&info, dcmd_size, &cmd->qsg); + dma_buf_write(&info, dcmd_size, &cmd->qsg); trace_megasas_dcmd_unsupported(cmd->index, cmd->iov_size); return MFI_STAT_OK; } diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 09e29997ee5..7f37548394e 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -317,12 +317,12 @@ static uint64_t dma_buf_rw(void *buf, int32_t len, QE= MUSGList *sg, return resid; } =20 -uint64_t dma_buf_read(uint8_t *ptr, int32_t len, QEMUSGList *sg) +uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg) { return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE); } =20 -uint64_t dma_buf_write(uint8_t *ptr, int32_t len, QEMUSGList *sg) +uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg) { return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE); } --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260702; cv=none; d=zohomail.com; s=zohoarc; b=SSGBtvCTla/UVQ2adX7QUKSTu9b8p8d/3tFbZo0l21raDJVHuryzhYqz+ZQsbjWuD2MGwpJwgTGw0E025Jx9mBoZk6jt1vMRigoo9W9Ecg6AMbq3c4fQY1lwXec8BHNh2R6FRaL7QYM89Shh/ha4ieHTfprD8sQw31jFSXv90Dw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260702; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=6ClHQDmTSxQ/cumSM1yZjo1Fs51nTIVwwLPVpnYX4XM=; b=K0R2pqaEXXa9sa4z+jwty1bArubjMDLsJjvTxsp/S/9fE8hMWvU4oN+WoJYjbRaBsluqWHCpM7Ddg/v3HvY0m7UzCmdICJyl/oepTcM9DjWyedMRbSyTiuHIvA887v5Nu90JSX2eDg5kNwCnKGL/52e1nymeQNU22wQ+FWCo+Nw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260702180192.4094480135401; Thu, 23 Dec 2021 03:58:22 -0800 (PST) Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-78-MOV46-v5M_mjp8MayhKRCw-1; Thu, 23 Dec 2021 06:58:18 -0500 Received: by mail-wr1-f69.google.com with SMTP id a11-20020adffb8b000000b001a0b0f4afe9so1218248wrr.13 for ; Thu, 23 Dec 2021 03:58:17 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id k31sm4610764wms.21.2021.12.23.03.58.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:58:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260701; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6ClHQDmTSxQ/cumSM1yZjo1Fs51nTIVwwLPVpnYX4XM=; b=J3yNGxjzwKiUsjz251t/IHS+O/VMXVJEyW3RGzZviOoy1QLLOMz7/L7nhnY28gEDGn0EJE o8vt1rNEPgKuvgDQFNI2mwHIkOjpfyuKa++fs5fsX4WiuPH791/xq1DVbQnaVktxtxn6sc h1XBYhtNmBDQcF3t02vcr+sMM1V3JgU= X-MC-Unique: MOV46-v5M_mjp8MayhKRCw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6ClHQDmTSxQ/cumSM1yZjo1Fs51nTIVwwLPVpnYX4XM=; b=j2AK54W9wi9aRbr74ShNY7mMFUKG/gItQ850yKNb9QsVSoqwx8+hJhyOEOlKWvH0F4 87y912yO8zf1oxlPLVVhdGVxv2e5xjxLdzp3crjtGpXG4ReC7jWhkVD2Q+BD3egubRLM L/F4hzKRN3ZP+v65x2dCjCM+vgE5BHyKCVoQ3VNHwNgNT7Syq0Gt98aJnK0VVBJDRDhi 5ZhpYqP8T3RABfkUjKxhfcq+KAOt2RrrSoOAHSK9e6F96x3UvOdW/3sjgYuQq2DFAtgN kp3lJkqI8TDBtiCjgK/5ydwFNfW6YGmLgq8SPFm0RTJNJuLSJD4SGFTFKHxZeNm72Y79 gJKg== X-Gm-Message-State: AOAM532pSFgLgH9lpIP3jxrqzwN3B2O44dWDsg2dgeO8JYB1dd6F3h7r edvKVUnXAaSePjAhClPo7O1F39JcNWxfVgBj9JIP4ZnAnanid2tOofLQLNnZ4unou3si9l1TNLf Ulqx2xEZSJopSfw== X-Received: by 2002:a05:6000:1b03:: with SMTP id f3mr1586557wrz.58.1640260697018; Thu, 23 Dec 2021 03:58:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJz6LSqx1lAlM4+O12ZG1CQBNVmSMJr77+J1lVAQwAJwQDWGU/cO4bMwt8j/YsG4wFiR5IFe5A== X-Received: by 2002:a05:6000:1b03:: with SMTP id f3mr1586546wrz.58.1640260696852; Thu, 23 Dec 2021 03:58:16 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 09/23] dma: Let pci_dma_rw() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:40 +0100 Message-Id: <20211223115554.3155328-10-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260703890100001 Let devices specify transaction attributes when calling pci_dma_rw(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 10 ++++++---- hw/audio/intel-hda.c | 3 ++- hw/scsi/esp-pci.c | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 1acefc2a4c3..a751ab5a75d 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -806,10 +806,10 @@ static inline AddressSpace *pci_get_address_space(PCI= Device *dev) */ static inline MemTxResult pci_dma_rw(PCIDevice *dev, dma_addr_t addr, void *buf, dma_addr_t len, - DMADirection dir) + DMADirection dir, MemTxAttrs attrs) { return dma_memory_rw(pci_get_address_space(dev), addr, buf, len, - dir, MEMTXATTRS_UNSPECIFIED); + dir, attrs); } =20 /** @@ -827,7 +827,8 @@ static inline MemTxResult pci_dma_rw(PCIDevice *dev, dm= a_addr_t addr, static inline MemTxResult pci_dma_read(PCIDevice *dev, dma_addr_t addr, void *buf, dma_addr_t len) { - return pci_dma_rw(dev, addr, buf, len, DMA_DIRECTION_TO_DEVICE); + return pci_dma_rw(dev, addr, buf, len, + DMA_DIRECTION_TO_DEVICE, MEMTXATTRS_UNSPECIFIED); } =20 /** @@ -845,7 +846,8 @@ static inline MemTxResult pci_dma_read(PCIDevice *dev, = dma_addr_t addr, static inline MemTxResult pci_dma_write(PCIDevice *dev, dma_addr_t addr, const void *buf, dma_addr_t len) { - return pci_dma_rw(dev, addr, (void *) buf, len, DMA_DIRECTION_FROM_DEV= ICE); + return pci_dma_rw(dev, addr, (void *) buf, len, + DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); } =20 #define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 8ce9df64e3e..fb3d34a4a0c 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -427,7 +427,8 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_= t stnr, bool output, dprint(d, 3, "dma: entry %d, pos %d/%d, copy %d\n", st->be, st->bp, st->bpl[st->be].len, copy); =20 - pci_dma_rw(&d->pci, st->bpl[st->be].addr + st->bp, buf, copy, !out= put); + pci_dma_rw(&d->pci, st->bpl[st->be].addr + st->bp, buf, copy, !out= put, + MEMTXATTRS_UNSPECIFIED); st->lpib +=3D copy; st->bp +=3D copy; buf +=3D copy; diff --git a/hw/scsi/esp-pci.c b/hw/scsi/esp-pci.c index dac054aeed4..1792f84cea6 100644 --- a/hw/scsi/esp-pci.c +++ b/hw/scsi/esp-pci.c @@ -280,7 +280,7 @@ static void esp_pci_dma_memory_rw(PCIESPState *pci, uin= t8_t *buf, int len, len =3D pci->dma_regs[DMA_WBC]; } =20 - pci_dma_rw(PCI_DEVICE(pci), addr, buf, len, dir); + pci_dma_rw(PCI_DEVICE(pci), addr, buf, len, dir, MEMTXATTRS_UNSPECIFIE= D); =20 /* update status registers */ pci->dma_regs[DMA_WBC] -=3D len; --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260710; cv=none; d=zohomail.com; s=zohoarc; b=VbfREity/ZJq7O64F2a6tpaHdS8Hl1Nx4L3bFIecAhNZ1u76chsvbTSmdJsStyLWjHM1jibYVwPhvfQklTQY4kVtB3+AXDXDqz5nlXEGeiBqFBhxMB/OITlSi2qzpg5H9sunk9ExA3+s4xKr7Hi7wHeongC4DyZfs2o7oEO/xrs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260710; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=cIMQ6+5zcOJyU3/jxVV3Bhh/HwifxZgqMUUJxuhYIK8=; b=bxsF3Wj7VYUaPEiuXXy2xilw5d89DuwUH9Sd3WaOysgsps44oSqqY4uHI/MQc+gxDMpGyW1WQcwTCb1e2u8j2M/ukDq3SfdmcKmtUhPH0ACEBTOW8V/8/a+rnj0E4oGzDLBSQqfVWDOye7VM4MAOpRv7TRlqpaRRraCpFugISGY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 164026071086861.620101048953984; Thu, 23 Dec 2021 03:58:30 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-261-Sw0Kk1BkNn2wGYVkh7PiFA-1; Thu, 23 Dec 2021 06:58:28 -0500 Received: by mail-wm1-f70.google.com with SMTP id ay41-20020a05600c1e2900b00345a568e6b2so1865039wmb.4 for ; Thu, 23 Dec 2021 03:58:28 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id l13sm5229854wrs.73.2021.12.23.03.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:58:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260709; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cIMQ6+5zcOJyU3/jxVV3Bhh/HwifxZgqMUUJxuhYIK8=; b=fd5B5tjd2esEFJkk4lzQ6OtXFc2fL0yyT3rbRznLvNqk8JElRFdA5RyK//582qc+RjweyS Cin3jC4LrwrleVpQi6rX+hKC+UHFmogY6SHA0H9pVCehw+AlMWJEBMdNIjQUSOUHHrxafB sS3bXUEd2LLJqu1u5R5eWkTGp3SGX50= X-MC-Unique: Sw0Kk1BkNn2wGYVkh7PiFA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=cIMQ6+5zcOJyU3/jxVV3Bhh/HwifxZgqMUUJxuhYIK8=; b=PzUhKwN6tv804sqx5LaHHRx7YoP7PmBeZ35Pjfs/XLxU4jWU16MEa7oOYw8BkB+0bT xP+cdFDEBqaaTdhribRasnvm3ETokFb4q5AIDJMEoCmky4FxhUDDNqh4mdqwgEnYM2iN 6OoUiNKgCxN71Z0FFqA2KvD1MxtUrrl8r2z76RC8+u1AjmJS1ljSwoFMSXZHTbKX3CKp L+zwKeC68mrTtIkTaqI7G9hwg8igP6DOl5x99+v6gunhPm1ZwIQI+6Ap6gWmsdaRi603 umM8lkF149CAO0oV6hJVESoaWPpfU+VTPw/gEuglwPOKR2NQpwO7x0y8GPdbDQP6+3n9 diMA== X-Gm-Message-State: AOAM531p4E1OM9GoRYNoO04yIs+kLa0IwQByC/d3a3acvN0u8itNXjl7 VdNdOWunLV/qp8K/oxczIqZpsGg1ga91sBP/34HwlI3s03Lm8K1EI6DeTRqOWx5vQMTfQXbg3Rl JauhI5wHfvvBOmw== X-Received: by 2002:a7b:cd0e:: with SMTP id f14mr1453671wmj.3.1640260707524; Thu, 23 Dec 2021 03:58:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJwLg7ZBmot/JWFarBL1366EEW2gjsu8I9BPhoO0enF42tjxKy/3erccjpOE4zYy85mbwd1wfA== X-Received: by 2002:a7b:cd0e:: with SMTP id f14mr1453641wmj.3.1640260707375; Thu, 23 Dec 2021 03:58:27 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 10/23] dma: Let dma_buf_rw() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:41 +0100 Message-Id: <20211223115554.3155328-11-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260711653100001 Let devices specify transaction attributes when calling dma_buf_rw(). Keep the default MEMTXATTRS_UNSPECIFIED in the 2 callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- softmmu/dma-helpers.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 7f37548394e..fa81d2b386c 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -295,7 +295,7 @@ BlockAIOCB *dma_blk_write(BlockBackend *blk, =20 =20 static uint64_t dma_buf_rw(void *buf, int32_t len, QEMUSGList *sg, - DMADirection dir) + DMADirection dir, MemTxAttrs attrs) { uint8_t *ptr =3D buf; uint64_t resid; @@ -307,8 +307,7 @@ static uint64_t dma_buf_rw(void *buf, int32_t len, QEMU= SGList *sg, while (len > 0) { ScatterGatherEntry entry =3D sg->sg[sg_cur_index++]; int32_t xfer =3D MIN(len, entry.len); - dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, - MEMTXATTRS_UNSPECIFIED); + dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, attrs); ptr +=3D xfer; len -=3D xfer; resid -=3D xfer; @@ -319,12 +318,14 @@ static uint64_t dma_buf_rw(void *buf, int32_t len, QE= MUSGList *sg, =20 uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE); + return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE, + MEMTXATTRS_UNSPECIFIED); } =20 uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE); + return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE, + MEMTXATTRS_UNSPECIFIED); } =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260722; cv=none; d=zohomail.com; s=zohoarc; b=SA9hnAJkEBo8zBfrW2G0JKwkOCTb4ryqwCWb4s/XvKOdJcfENdPzQLGsZOS4mivQ70zQIF0q99ZcfCTTyRQqBlpK/XJBNvR1D9XV6ebxPTJ0ZckJ4HleKLfQLN6OfRTr0u+cQCBFwLgXtn5gl98w7pTstGvwQeks2eH4MoY2Thk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260722; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=gjVcgLU0BnvWgwNGKBTyX6uz4VKITDXHkj90FQKH/Ds=; b=W3cESu58xCIhdt+LVlwT60oCwxpHX6Jx4aZfb2qPUDaVHWET1jPj7rDgNtrRDPgp26uozBdDTBsPmxHZvomiCYCpcOy+QGaRFYdE3VU7ELueV/4wScWRBx/uSJXMPu8OxcK8Pt/UMiguLGVL2PTUfyu8gX05dOO6Polr+NwapJU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260722223745.8586239472368; Thu, 23 Dec 2021 03:58:42 -0800 (PST) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-634-rbwDr4eQNxmad4AeouUVog-1; Thu, 23 Dec 2021 06:58:40 -0500 Received: by mail-wm1-f72.google.com with SMTP id o18-20020a05600c511200b00345c1603997so550494wms.1 for ; Thu, 23 Dec 2021 03:58:39 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id bd8sm4281783wmb.44.2021.12.23.03.58.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:58:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260721; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gjVcgLU0BnvWgwNGKBTyX6uz4VKITDXHkj90FQKH/Ds=; b=b0qoaVkz3L7YKfi58A+6Ch8J0A3IP0bkvEjogTiDDADsd6Fnk8SouZnb6Zdqhz5w3CCBm0 mHPy1cul/SnAbjjR1gtds5HyEcw/MxlyXDm5TuTJKHxhx91FiwnlzTT/W18Vc5FyHQzO5+ T/SKACQopDASr11PaCK26kUtfFhi6DU= X-MC-Unique: rbwDr4eQNxmad4AeouUVog-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=gjVcgLU0BnvWgwNGKBTyX6uz4VKITDXHkj90FQKH/Ds=; b=RT9lW7t3Pycdj3RKO64aZl+wp562/9+075rwuA9ky2VKqli1txvvfiRvj0vvG+y1Qh 3h5AJssDAEc2MMmVToAIyY1VoLxRjh22KwKSbRdcDXFyQ9mJ/bRVHBEFfb6Siglzmv6s bAZUi3o9PLH/eFqiSwNl64/DSteLwleRtixB/N/JkqzgJt1GcnoEQH3I/mIi7iLq0zbh 24vE47M5HZUGLK4NUg4/tdeN/tWsqZMyWN0T8w/w+X75DWrnPyK36fJzJhfy07IYf1sN +zJSfkQacaQziFiTgqIpjCWyD9fAZXRhnSWcWts1tPmb5YK9oYs7Cn4nBbTAWeGcc8f0 d+PA== X-Gm-Message-State: AOAM5338G16jmYVYfqDkfNwuZC6rcY8t5KI+XIZw1RAfAymdmixHw1IK doPylIS7/qZXypjtG10cfE1pQn9t8dHIEVdzTnB0Auhh3qz/zJUMqOiB/YTislGtbsSIxj+RiOD b7F+eTGiPzg18dA== X-Received: by 2002:a5d:6989:: with SMTP id g9mr1503521wru.12.1640260718870; Thu, 23 Dec 2021 03:58:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJwBFwsZIXFfAblixbF8BoDE4+EiE/hnMHk6jR/7GpOkCKFeYGbesya6UFj3EsKgkD884hiAXA== X-Received: by 2002:a5d:6989:: with SMTP id g9mr1503479wru.12.1640260718678; Thu, 23 Dec 2021 03:58:38 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 11/23] dma: Let dma_buf_write() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:42 +0100 Message-Id: <20211223115554.3155328-12-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260723164100001 Let devices specify transaction attributes when calling dma_buf_write(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/sysemu/dma.h | 2 +- hw/ide/ahci.c | 6 ++++-- hw/nvme/ctrl.c | 3 ++- hw/scsi/megasas.c | 2 +- hw/scsi/scsi-bus.c | 2 +- softmmu/dma-helpers.c | 5 ++--- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 0d5b836013d..e3dd74a9c4f 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -303,7 +303,7 @@ BlockAIOCB *dma_blk_write(BlockBackend *blk, QEMUSGList *sg, uint64_t offset, uint32_t align, BlockCompletionFunc *cb, void *opaque); uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg); -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg); +uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs); =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, QEMUSGList *sg, enum BlockAcctType type); diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 8e77ddb660f..079d2977f23 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1381,8 +1381,10 @@ static void ahci_pio_transfer(const IDEDMA *dma) has_sglist ? "" : "o"); =20 if (has_sglist && size) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; + if (is_write) { - dma_buf_write(s->data_ptr, size, &s->sg); + dma_buf_write(s->data_ptr, size, &s->sg, attrs); } else { dma_buf_read(s->data_ptr, size, &s->sg); } @@ -1479,7 +1481,7 @@ static int ahci_dma_rw_buf(const IDEDMA *dma, bool is= _write) if (is_write) { dma_buf_read(p, l, &s->sg); } else { - dma_buf_write(p, l, &s->sg); + dma_buf_write(p, l, &s->sg, MEMTXATTRS_UNSPECIFIED); } =20 /* free sglist, update byte count */ diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 5f573c417b3..e1a531d5d6c 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1146,10 +1146,11 @@ static uint16_t nvme_tx(NvmeCtrl *n, NvmeSg *sg, ui= nt8_t *ptr, uint32_t len, assert(sg->flags & NVME_SG_ALLOC); =20 if (sg->flags & NVME_SG_DMA) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; uint64_t residual; =20 if (dir =3D=3D NVME_TX_DIRECTION_TO_DEVICE) { - residual =3D dma_buf_write(ptr, len, &sg->qsg); + residual =3D dma_buf_write(ptr, len, &sg->qsg, attrs); } else { residual =3D dma_buf_read(ptr, len, &sg->qsg); } diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index dc28302f96d..da1c88167ee 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -1465,7 +1465,7 @@ static int megasas_dcmd_set_properties(MegasasState *= s, MegasasCmd *cmd) dcmd_size); return MFI_STAT_INVALID_PARAMETER; } - dma_buf_write(&info, dcmd_size, &cmd->qsg); + dma_buf_write(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECIFIED); trace_megasas_dcmd_unsupported(cmd->index, cmd->iov_size); return MFI_STAT_OK; } diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 77325d8cc7a..64a506a3975 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -1423,7 +1423,7 @@ void scsi_req_data(SCSIRequest *req, int len) if (req->cmd.mode =3D=3D SCSI_XFER_FROM_DEV) { req->resid =3D dma_buf_read(buf, len, req->sg); } else { - req->resid =3D dma_buf_write(buf, len, req->sg); + req->resid =3D dma_buf_write(buf, len, req->sg, MEMTXATTRS_UNSPECI= FIED); } scsi_req_continue(req); } diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index fa81d2b386c..2f1a241b81a 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -322,10 +322,9 @@ uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGLi= st *sg) MEMTXATTRS_UNSPECIFIED); } =20 -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg) +uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE, - MEMTXATTRS_UNSPECIFIED); + return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE, attrs); } =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260735; cv=none; d=zohomail.com; s=zohoarc; b=QiQsZPs/7O4zI4iQo2f0M8Vqs2RqMB+AXgN507GJ3NtBCyXkamB7lSUzUqmrK5iUZ/tvJL4AR9LDduELR4aZFYa94iDZXyW0n5dJALo09EV/KwE/oatQ+hT95exl57ETBzT33rWqZfMFQpplV1FB3+0VyZA8WW09sDCFNceEZQE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260735; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=QvhGQ7ni8djSAeJQKRJ8D/v7/Iobbm1EjIUqX2bC7Rw=; b=Qm/JE8xORbJDmtGFiDXd2JVVcrEnawbcGK1AM7ysdkwHHUhxHF/QP95M6Gr1oE86gDBvAMF2Db6dwRlwITxYTOzUmYqRPlXSwisTKowJKm3+g4cFteyHWcdIFy08/JbBUzwCnyh+srAsIab3xpU/wAcj5/w+UHJq7KhFu0gyT6g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260735769512.2531069654426; Thu, 23 Dec 2021 03:58:55 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-171-zKrnS03pNKyEaVFXgihrCQ-1; Thu, 23 Dec 2021 06:58:53 -0500 Received: by mail-wm1-f70.google.com with SMTP id u10-20020a05600c19ca00b00345b2959e5aso1853950wmq.9 for ; Thu, 23 Dec 2021 03:58:53 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id az15sm4222751wmb.47.2021.12.23.03.58.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:58:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260734; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QvhGQ7ni8djSAeJQKRJ8D/v7/Iobbm1EjIUqX2bC7Rw=; b=PtWDrHgnuOnJRSh98MZ420nC6DNp2r+BW8FVLOAGlRpMgd5I8osIxDBr9zSs6Kf0P4fm9s GPBYEXGReJeWPutkkLfv9vhRRBw27eWgFDFabr1UqygIGnuoKH5N8hvtPKzWk+O9eDg98C /9QCuURqiy0ovkDIlWpFZGm1cF5tjv0= X-MC-Unique: zKrnS03pNKyEaVFXgihrCQ-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=QvhGQ7ni8djSAeJQKRJ8D/v7/Iobbm1EjIUqX2bC7Rw=; b=g2+OQnXnygQIqcLXc050tDbQBQwNgslEcd+zC0MR2NdVtprvmHYCow6nfpgHX9PmFq F3ixCHBIrcJt5+o8YsPm05vijvke2nzrflViCmBvECZNhk/sL629AQNkKy92GRIKBGRa QhIk1riw61ATbsB+yEqxhXZMMb2i1RTMfYDzaUKcZlCQJ/R+PpMhPQlI117yBX7uOlGS 73fBPYJ20DpfjrfDie7CBXIbxqDqEwh63pMZTDoiUIKoFxRRYxlQejzYXt4Wt7l6YIUA tV/W8bcu21LOUpSl+GICgEpJII1hcjE+ptEzloTqM+p5Ldn3216QuShEgX2eqL09MBil VUvw== X-Gm-Message-State: AOAM532r2+yEmjchkFau5xMmP0rA7DjBxGeAxHeRimHLIMqlVy+XOHEN Fd/dloJDIF/QdK/mGPBBSXaPJ7wQXxM90gt/CLKiyQXK04F75qiKw4Y+suwUtr7qok7KhsAvXh1 T/opgyF4m8dnqvA== X-Received: by 2002:adf:c182:: with SMTP id x2mr1570774wre.646.1640260731926; Thu, 23 Dec 2021 03:58:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxEF2YmrIC2McauXzIIDHkMe0pi0Zddo8iJsQQQxKSrm0B6dybhy/E1ac8DsfLcJGFXfQpi/Q== X-Received: by 2002:adf:c182:: with SMTP id x2mr1570729wre.646.1640260731702; Thu, 23 Dec 2021 03:58:51 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 12/23] dma: Let dma_buf_read() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:43 +0100 Message-Id: <20211223115554.3155328-13-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260737022100001 Let devices specify transaction attributes when calling dma_buf_read(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/sysemu/dma.h | 2 +- hw/ide/ahci.c | 4 ++-- hw/nvme/ctrl.c | 2 +- hw/scsi/megasas.c | 24 ++++++++++++------------ hw/scsi/scsi-bus.c | 2 +- softmmu/dma-helpers.c | 5 ++--- 6 files changed, 19 insertions(+), 20 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index e3dd74a9c4f..fd8f16003dd 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -302,7 +302,7 @@ BlockAIOCB *dma_blk_read(BlockBackend *blk, BlockAIOCB *dma_blk_write(BlockBackend *blk, QEMUSGList *sg, uint64_t offset, uint32_t align, BlockCompletionFunc *cb, void *opaque); -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg); +uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs a= ttrs); uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs); =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 079d2977f23..205dfdc6622 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1386,7 +1386,7 @@ static void ahci_pio_transfer(const IDEDMA *dma) if (is_write) { dma_buf_write(s->data_ptr, size, &s->sg, attrs); } else { - dma_buf_read(s->data_ptr, size, &s->sg); + dma_buf_read(s->data_ptr, size, &s->sg, attrs); } } =20 @@ -1479,7 +1479,7 @@ static int ahci_dma_rw_buf(const IDEDMA *dma, bool is= _write) } =20 if (is_write) { - dma_buf_read(p, l, &s->sg); + dma_buf_read(p, l, &s->sg, MEMTXATTRS_UNSPECIFIED); } else { dma_buf_write(p, l, &s->sg, MEMTXATTRS_UNSPECIFIED); } diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index e1a531d5d6c..462f79a1f60 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1152,7 +1152,7 @@ static uint16_t nvme_tx(NvmeCtrl *n, NvmeSg *sg, uint= 8_t *ptr, uint32_t len, if (dir =3D=3D NVME_TX_DIRECTION_TO_DEVICE) { residual =3D dma_buf_write(ptr, len, &sg->qsg, attrs); } else { - residual =3D dma_buf_read(ptr, len, &sg->qsg); + residual =3D dma_buf_read(ptr, len, &sg->qsg, attrs); } =20 if (unlikely(residual)) { diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index da1c88167ee..fe36de10a21 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -848,7 +848,7 @@ static int megasas_ctrl_get_info(MegasasState *s, Megas= asCmd *cmd) MFI_INFO_PDMIX_SATA | MFI_INFO_PDMIX_LD); =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -878,7 +878,7 @@ static int megasas_mfc_get_defaults(MegasasState *s, Me= gasasCmd *cmd) info.disable_preboot_cli =3D 1; info.cluster_disable =3D 1; =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -899,7 +899,7 @@ static int megasas_dcmd_get_bios_info(MegasasState *s, = MegasasCmd *cmd) info.expose_all_drives =3D 1; } =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -910,7 +910,7 @@ static int megasas_dcmd_get_fw_time(MegasasState *s, Me= gasasCmd *cmd) =20 fw_time =3D cpu_to_le64(megasas_fw_time()); =20 - cmd->iov_size -=3D dma_buf_read(&fw_time, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&fw_time, dcmd_size, &cmd->qsg, MEMTXA= TTRS_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -937,7 +937,7 @@ static int megasas_event_info(MegasasState *s, MegasasC= md *cmd) info.shutdown_seq_num =3D cpu_to_le32(s->shutdown_event); info.boot_seq_num =3D cpu_to_le32(s->boot_event); =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -1006,7 +1006,7 @@ static int megasas_dcmd_pd_get_list(MegasasState *s, = MegasasCmd *cmd) info.size =3D cpu_to_le32(offset); info.count =3D cpu_to_le32(num_pd_disks); =20 - cmd->iov_size -=3D dma_buf_read(&info, offset, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, offset, &cmd->qsg, MEMTXATTRS_U= NSPECIFIED); return MFI_STAT_OK; } =20 @@ -1100,7 +1100,7 @@ static int megasas_pd_get_info_submit(SCSIDevice *sde= v, int lun, info->connected_port_bitmap =3D 0x1; info->device_speed =3D 1; info->link_speed =3D 1; - resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg, MEMTXATTRS_= UNSPECIFIED); g_free(cmd->iov_buf); cmd->iov_size =3D dcmd_size - resid; cmd->iov_buf =3D NULL; @@ -1172,7 +1172,7 @@ static int megasas_dcmd_ld_get_list(MegasasState *s, = MegasasCmd *cmd) info.ld_count =3D cpu_to_le32(num_ld_disks); trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECI= FIED); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1221,7 +1221,7 @@ static int megasas_dcmd_ld_list_query(MegasasState *s= , MegasasCmd *cmd) info.size =3D dcmd_size; trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECI= FIED); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1271,7 +1271,7 @@ static int megasas_ld_get_info_submit(SCSIDevice *sde= v, int lun, info->ld_config.span[0].num_blocks =3D info->size; info->ld_config.span[0].array_ref =3D cpu_to_le16(sdev_id); =20 - resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg); + resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg, MEMTXATTRS_= UNSPECIFIED); g_free(cmd->iov_buf); cmd->iov_size =3D dcmd_size - resid; cmd->iov_buf =3D NULL; @@ -1390,7 +1390,7 @@ static int megasas_dcmd_cfg_read(MegasasState *s, Meg= asasCmd *cmd) ld_offset +=3D sizeof(struct mfi_ld_config); } =20 - cmd->iov_size -=3D dma_buf_read(data, info->size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(data, info->size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 @@ -1420,7 +1420,7 @@ static int megasas_dcmd_get_properties(MegasasState *= s, MegasasCmd *cmd) info.ecc_bucket_leak_rate =3D cpu_to_le16(1440); info.expose_encl_devices =3D 1; =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg); + cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); return MFI_STAT_OK; } =20 diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 64a506a3975..2b5e9dca311 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -1421,7 +1421,7 @@ void scsi_req_data(SCSIRequest *req, int len) =20 buf =3D scsi_req_get_buf(req); if (req->cmd.mode =3D=3D SCSI_XFER_FROM_DEV) { - req->resid =3D dma_buf_read(buf, len, req->sg); + req->resid =3D dma_buf_read(buf, len, req->sg, MEMTXATTRS_UNSPECIF= IED); } else { req->resid =3D dma_buf_write(buf, len, req->sg, MEMTXATTRS_UNSPECI= FIED); } diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index 2f1a241b81a..a391773c296 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -316,10 +316,9 @@ static uint64_t dma_buf_rw(void *buf, int32_t len, QEM= USGList *sg, return resid; } =20 -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg) +uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs a= ttrs) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE, - MEMTXATTRS_UNSPECIFIED); + return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE, attrs); } =20 uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs) --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260744; cv=none; d=zohomail.com; s=zohoarc; b=OaJYd7l1vU6zGynNFZYJ/DzqLMUXe6c9MBzsaRd/YT0Ri/OmEXjPfrcEiGbHou/WMWpA30Yl+12X8sF8JoeM7i1HX+alqPY/ZH1eT7/IyYYyEhbCYJ0FjMlfalogA44NypACDvJzaMiGXRLBFtUMM5KimXBroKUvm/lITAUejjE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260744; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=XDiu/1Y9UJG/Mr1Uyi7hIwmLFqroGRXmqVVQxLYL8lo=; b=P03SlBCRotWxq4sv2GgxNtlhfVMJHn/O2ZRWaBs7acoKMpnF964+kQRdMESDInJE8Li9UbW6pOysd06teX8oHMTC9pVcAHhQ3w/y1hYAV6L5Rw3qM4fCwB423NHUS4Uv2SVYNJaHIaP9LOXId5N+9snhsTxXurGs7OsmTrg9Hp4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260744870278.25490281284146; Thu, 23 Dec 2021 03:59:04 -0800 (PST) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-412-c6bMapMcOZGhHYUbmN-A7g-1; Thu, 23 Dec 2021 06:59:02 -0500 Received: by mail-wm1-f69.google.com with SMTP id bg20-20020a05600c3c9400b0033a9300b44bso1877185wmb.2 for ; Thu, 23 Dec 2021 03:59:02 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id j13sm8693839wmq.11.2021.12.23.03.58.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:59:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XDiu/1Y9UJG/Mr1Uyi7hIwmLFqroGRXmqVVQxLYL8lo=; b=DxpA90nhmdc4XW5clrMEiJ8FFWhyQCge52Vh1WSvWzLk0q8NfgF09kIzJDJKUJcjy80kWi vEQiAs11TMpXc6lb5o7zdPzc9kq7AhWGoedViippAZ6bRKgTlamUcDK7qraoS/zejMJZh8 Vt4PS4Lk7sqnUWqNBTtVk2fS68Fx37k= X-MC-Unique: c6bMapMcOZGhHYUbmN-A7g-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=XDiu/1Y9UJG/Mr1Uyi7hIwmLFqroGRXmqVVQxLYL8lo=; b=unSQy0FN4pvbylFCFQwqjUz1xNqPHbDeXMAtJ8krGpyb7S87EVcxCjJ3XTt1HScJOi VzFHATHrdq0ACL1TQ9v+2HhLkoIwSuwlqhzXQaEKf2kOEwMsVihfxoXQzIYroU8idWhu oT7q85wDWtjFZUDeCLolWRvTiMYv9H/VJre7FC8q20lCS763bNfCEgAm/iaBmDcEXk87 jlve44IzWKeQKMWMv9dUMjGSOZ4UIBKqtI6kDzirca7aCNHK0tdA8Ie/AcpfTYoyK38u Y1MbZFTOIT7dTzJR6tGr1QXzz9JUzv1fe+Bl/9YeBT9iEIhyKdMpDWx7NJSapjGDbNM6 hQzQ== X-Gm-Message-State: AOAM533VV30rTahMq0VN2NT0m3T+OmC+Yuh+5uPrrCQQQU8dmKDK6BwX bXn3W0ZMx+oWtDSbYOQqElTXAVQPaT5KA58ypg95eq/f+johxfDB+bnNB/rXw0VvXiC38kkqitc t53FjThzvrQgKjA== X-Received: by 2002:a5d:64c6:: with SMTP id f6mr1468885wri.711.1640260741429; Thu, 23 Dec 2021 03:59:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJwnxPoqDT/k37moPDRccV+te9B75XwO+CkBI4dcJ0VLH0B//Q3K/CRWOZpRQ4Wm2X9u03Wvfg== X-Received: by 2002:a5d:64c6:: with SMTP id f6mr1468844wri.711.1640260741252; Thu, 23 Dec 2021 03:59:01 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 13/23] dma: Let dma_buf_rw() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:44 +0100 Message-Id: <20211223115554.3155328-14-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260746187100001 dma_memory_rw() returns a MemTxResult type. Do not discard it, return it to the caller. Since dma_buf_rw() was previously returning the QEMUSGList size not consumed, add an extra argument where this size can be stored. Update the 2 callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- softmmu/dma-helpers.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index a391773c296..b0be1564797 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -294,12 +294,14 @@ BlockAIOCB *dma_blk_write(BlockBackend *blk, } =20 =20 -static uint64_t dma_buf_rw(void *buf, int32_t len, QEMUSGList *sg, - DMADirection dir, MemTxAttrs attrs) +static MemTxResult dma_buf_rw(void *buf, int32_t len, uint64_t *residp, + QEMUSGList *sg, DMADirection dir, + MemTxAttrs attrs) { uint8_t *ptr =3D buf; uint64_t resid; int sg_cur_index; + MemTxResult res =3D MEMTX_OK; =20 resid =3D sg->size; sg_cur_index =3D 0; @@ -307,23 +309,34 @@ static uint64_t dma_buf_rw(void *buf, int32_t len, QE= MUSGList *sg, while (len > 0) { ScatterGatherEntry entry =3D sg->sg[sg_cur_index++]; int32_t xfer =3D MIN(len, entry.len); - dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, attrs); + res |=3D dma_memory_rw(sg->as, entry.base, ptr, xfer, dir, attrs); ptr +=3D xfer; len -=3D xfer; resid -=3D xfer; } =20 - return resid; + if (residp) { + *residp =3D resid; + } + return res; } =20 uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs a= ttrs) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_FROM_DEVICE, attrs); + uint64_t resid; + + dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_FROM_DEVICE, attrs); + + return resid; } =20 uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs) { - return dma_buf_rw(ptr, len, sg, DMA_DIRECTION_TO_DEVICE, attrs); + uint64_t resid; + + dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_TO_DEVICE, attrs); + + return resid; } =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260756; cv=none; d=zohomail.com; s=zohoarc; b=cyCK2Fq1Ix4I/3EIwFLetRxGkP8ZhmZnzMVv6g9hxkUOkECDTUGIka8wpJHNbXUlZl8Yvrem3ygYbi6TOB83Rl7YDp4PfLN0pEhWs1MR0B8PSXjYMeL+a1qQLIblL2O2nT4eS2zd+JBvCQO0vIu+U/kvIPs2kk0IpL5HgLPFhGU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260756; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=/EYBW+febHIYQTHlOkEync8IzdNbwI6kyRotYTo3Vg0=; b=KUhyivSQORjHiXPeK9AsBkh+WPYHH1t1sMeEGlDPxpz3FWLXRnWBBrOhyxFryI5qtF3IAOzQOMkR3ct4ipm2NH3nMhz/LmMS008jxPhndLMbsgBxgATeUoQVbZ/Aj48OJ8joneQC7Z5PX+fe4ejGM23ncHKMU3QiS7P4SondOks= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260756198276.90596490778853; Thu, 23 Dec 2021 03:59:16 -0800 (PST) Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-205-schaLdi-PvySH8kMC29wUA-1; Thu, 23 Dec 2021 06:59:14 -0500 Received: by mail-wr1-f70.google.com with SMTP id d13-20020adf9b8d000000b001a2aa837f8dso1224951wrc.3 for ; Thu, 23 Dec 2021 03:59:13 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id h204sm4790919wmh.33.2021.12.23.03.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/EYBW+febHIYQTHlOkEync8IzdNbwI6kyRotYTo3Vg0=; b=SvaQIYf5TRj6u9Oil+Bs+IUFvTSPxYYLsG2N4C0iTFU64SKsdNitAj85VLMqHOeDuW5Rtg +mWlZaDZJuLaMaakIIYNW0bNoYMZnLY0d0KOZqXZXJ0YZXN2oaiPMCyzyQGgfN5xxxOM65 U19jBvIqCBRZIhQD3aVx6FXY+G9Y+rI= X-MC-Unique: schaLdi-PvySH8kMC29wUA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/EYBW+febHIYQTHlOkEync8IzdNbwI6kyRotYTo3Vg0=; b=OTs+tBvfJ3XFGM+Di+2XUtJhnTvjmiA9YMo+hc7fDuU94++S56aj7hpCki52CL7YKX RdPJ7g7I1N9BsBgjcSwBSxppX6686fO8TlunPe919bsoURFc17kCeYGtQjW4puBjtG/8 y7lZ9430YE1isucDRZbfs1nC6Qs7LqyTzDUm3jjtiI6/zIsd8kYSxaLgMyohyqk9RZhb HQuUmpwiDCzstdMPyAKCnH/XiaY1zhGdkVkq+joYvqSwW1dTyufW5rANWWcfOREpY+/A 64cumWq1+R9pQaJDz0vR485qnev+E95R02cW1MOsD1HM7BlnCkNpyh3qR/UMXejZWJyI JO/g== X-Gm-Message-State: AOAM532mGddijt47Ifjn0PPJS3o+PBd3o5aHT4Ah6/3KYlkH1M+Lefyo kmIvof64GIJ2rEE1km+//2Lrwwp7+tzt0XF2pfhEmaNfa7yEE3x2Kjd/3HDjApQfOfC7OUC2MSo f+eULSvAP4q/2Xg== X-Received: by 2002:a5d:6d8a:: with SMTP id l10mr1535600wrs.276.1640260752712; Thu, 23 Dec 2021 03:59:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJyaRgJ51599I7DyCet8+Ut1sWRqjVByW/7JuTQpWOL9QU1mMnGXmWnpqwB8ASUCZjGA5dgpXw== X-Received: by 2002:a5d:6d8a:: with SMTP id l10mr1535541wrs.276.1640260752403; Thu, 23 Dec 2021 03:59:12 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson , Klaus Jensen Subject: [PATCH v2 14/23] dma: Let dma_buf_read() / dma_buf_write() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:45 +0100 Message-Id: <20211223115554.3155328-15-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260758139100001 Since the previous commit, dma_buf_rw() returns a MemTxResult type. Do not discard it, return it to the caller. Since both dma_buf_read/dma_buf_write functions were previously returning the QEMUSGList size not consumed, add an extra argument where the unconsummed size can be stored. Update the few callers. Reviewed-by: Klaus Jensen Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/sysemu/dma.h | 6 ++++-- hw/ide/ahci.c | 8 ++++---- hw/nvme/ctrl.c | 4 ++-- hw/scsi/megasas.c | 48 ++++++++++++++++++++++++++++++------------- hw/scsi/scsi-bus.c | 4 ++-- softmmu/dma-helpers.c | 18 ++++++---------- 6 files changed, 52 insertions(+), 36 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index fd8f16003dd..d11c1d794f9 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -302,8 +302,10 @@ BlockAIOCB *dma_blk_read(BlockBackend *blk, BlockAIOCB *dma_blk_write(BlockBackend *blk, QEMUSGList *sg, uint64_t offset, uint32_t align, BlockCompletionFunc *cb, void *opaque); -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs a= ttrs); -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs); +MemTxResult dma_buf_read(void *ptr, int32_t len, uint64_t *residp, + QEMUSGList *sg, MemTxAttrs attrs); +MemTxResult dma_buf_write(void *ptr, int32_t len, uint64_t *residp, + QEMUSGList *sg, MemTxAttrs attrs); =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, QEMUSGList *sg, enum BlockAcctType type); diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c index 205dfdc6622..0c7d31ceada 100644 --- a/hw/ide/ahci.c +++ b/hw/ide/ahci.c @@ -1384,9 +1384,9 @@ static void ahci_pio_transfer(const IDEDMA *dma) const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; =20 if (is_write) { - dma_buf_write(s->data_ptr, size, &s->sg, attrs); + dma_buf_write(s->data_ptr, size, NULL, &s->sg, attrs); } else { - dma_buf_read(s->data_ptr, size, &s->sg, attrs); + dma_buf_read(s->data_ptr, size, NULL, &s->sg, attrs); } } =20 @@ -1479,9 +1479,9 @@ static int ahci_dma_rw_buf(const IDEDMA *dma, bool is= _write) } =20 if (is_write) { - dma_buf_read(p, l, &s->sg, MEMTXATTRS_UNSPECIFIED); + dma_buf_read(p, l, NULL, &s->sg, MEMTXATTRS_UNSPECIFIED); } else { - dma_buf_write(p, l, &s->sg, MEMTXATTRS_UNSPECIFIED); + dma_buf_write(p, l, NULL, &s->sg, MEMTXATTRS_UNSPECIFIED); } =20 /* free sglist, update byte count */ diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index 462f79a1f60..fa410a179a6 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -1150,9 +1150,9 @@ static uint16_t nvme_tx(NvmeCtrl *n, NvmeSg *sg, uint= 8_t *ptr, uint32_t len, uint64_t residual; =20 if (dir =3D=3D NVME_TX_DIRECTION_TO_DEVICE) { - residual =3D dma_buf_write(ptr, len, &sg->qsg, attrs); + dma_buf_write(ptr, len, &residual, &sg->qsg, attrs); } else { - residual =3D dma_buf_read(ptr, len, &sg->qsg, attrs); + dma_buf_read(ptr, len, &residual, &sg->qsg, attrs); } =20 if (unlikely(residual)) { diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index fe36de10a21..87101705d01 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -738,6 +738,7 @@ static int megasas_ctrl_get_info(MegasasState *s, Megas= asCmd *cmd) size_t dcmd_size =3D sizeof(info); BusChild *kid; int num_pd_disks =3D 0; + uint64_t resid; =20 memset(&info, 0x0, dcmd_size); if (cmd->iov_size < dcmd_size) { @@ -848,7 +849,8 @@ static int megasas_ctrl_get_info(MegasasState *s, Megas= asCmd *cmd) MFI_INFO_PDMIX_SATA | MFI_INFO_PDMIX_LD); =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -856,6 +858,7 @@ static int megasas_mfc_get_defaults(MegasasState *s, Me= gasasCmd *cmd) { struct mfi_defaults info; size_t dcmd_size =3D sizeof(struct mfi_defaults); + uint64_t resid; =20 memset(&info, 0x0, dcmd_size); if (cmd->iov_size < dcmd_size) { @@ -878,7 +881,8 @@ static int megasas_mfc_get_defaults(MegasasState *s, Me= gasasCmd *cmd) info.disable_preboot_cli =3D 1; info.cluster_disable =3D 1; =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -886,6 +890,7 @@ static int megasas_dcmd_get_bios_info(MegasasState *s, = MegasasCmd *cmd) { struct mfi_bios_data info; size_t dcmd_size =3D sizeof(info); + uint64_t resid; =20 memset(&info, 0x0, dcmd_size); if (cmd->iov_size < dcmd_size) { @@ -899,7 +904,8 @@ static int megasas_dcmd_get_bios_info(MegasasState *s, = MegasasCmd *cmd) info.expose_all_drives =3D 1; } =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -907,10 +913,12 @@ static int megasas_dcmd_get_fw_time(MegasasState *s, = MegasasCmd *cmd) { uint64_t fw_time; size_t dcmd_size =3D sizeof(fw_time); + uint64_t resid; =20 fw_time =3D cpu_to_le64(megasas_fw_time()); =20 - cmd->iov_size -=3D dma_buf_read(&fw_time, dcmd_size, &cmd->qsg, MEMTXA= TTRS_UNSPECIFIED); + dma_buf_read(&fw_time, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPEC= IFIED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -930,6 +938,7 @@ static int megasas_event_info(MegasasState *s, MegasasC= md *cmd) { struct mfi_evt_log_state info; size_t dcmd_size =3D sizeof(info); + uint64_t resid; =20 memset(&info, 0, dcmd_size); =20 @@ -937,7 +946,8 @@ static int megasas_event_info(MegasasState *s, MegasasC= md *cmd) info.shutdown_seq_num =3D cpu_to_le32(s->shutdown_event); info.boot_seq_num =3D cpu_to_le32(s->boot_event); =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -967,6 +977,7 @@ static int megasas_dcmd_pd_get_list(MegasasState *s, Me= gasasCmd *cmd) size_t dcmd_size =3D sizeof(info); BusChild *kid; uint32_t offset, dcmd_limit, num_pd_disks =3D 0, max_pd_disks; + uint64_t resid; =20 memset(&info, 0, dcmd_size); offset =3D 8; @@ -1006,7 +1017,8 @@ static int megasas_dcmd_pd_get_list(MegasasState *s, = MegasasCmd *cmd) info.size =3D cpu_to_le32(offset); info.count =3D cpu_to_le32(num_pd_disks); =20 - cmd->iov_size -=3D dma_buf_read(&info, offset, &cmd->qsg, MEMTXATTRS_U= NSPECIFIED); + dma_buf_read(&info, offset, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFIED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -1100,7 +1112,9 @@ static int megasas_pd_get_info_submit(SCSIDevice *sde= v, int lun, info->connected_port_bitmap =3D 0x1; info->device_speed =3D 1; info->link_speed =3D 1; - resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg, MEMTXATTRS_= UNSPECIFIED); + dma_buf_read(cmd->iov_buf, dcmd_size, &resid, &cmd->qsg, + MEMTXATTRS_UNSPECIFIED); + cmd->iov_size -=3D resid; g_free(cmd->iov_buf); cmd->iov_size =3D dcmd_size - resid; cmd->iov_buf =3D NULL; @@ -1172,7 +1186,7 @@ static int megasas_dcmd_ld_get_list(MegasasState *s, = MegasasCmd *cmd) info.ld_count =3D cpu_to_le32(num_ld_disks); trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECI= FIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1221,7 +1235,7 @@ static int megasas_dcmd_ld_list_query(MegasasState *s= , MegasasCmd *cmd) info.size =3D dcmd_size; trace_megasas_dcmd_ld_get_list(cmd->index, num_ld_disks, max_ld_disks); =20 - resid =3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECI= FIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); cmd->iov_size =3D dcmd_size - resid; return MFI_STAT_OK; } @@ -1232,9 +1246,10 @@ static int megasas_ld_get_info_submit(SCSIDevice *sd= ev, int lun, struct mfi_ld_info *info =3D cmd->iov_buf; size_t dcmd_size =3D sizeof(struct mfi_ld_info); uint8_t cdb[6]; - ssize_t len, resid; + ssize_t len; uint16_t sdev_id =3D ((sdev->id & 0xFF) << 8) | (lun & 0xFF); uint64_t ld_size; + uint64_t resid; =20 if (!cmd->iov_buf) { cmd->iov_buf =3D g_malloc0(dcmd_size); @@ -1271,7 +1286,8 @@ static int megasas_ld_get_info_submit(SCSIDevice *sde= v, int lun, info->ld_config.span[0].num_blocks =3D info->size; info->ld_config.span[0].array_ref =3D cpu_to_le16(sdev_id); =20 - resid =3D dma_buf_read(cmd->iov_buf, dcmd_size, &cmd->qsg, MEMTXATTRS_= UNSPECIFIED); + dma_buf_read(cmd->iov_buf, dcmd_size, &resid, &cmd->qsg, + MEMTXATTRS_UNSPECIFIED); g_free(cmd->iov_buf); cmd->iov_size =3D dcmd_size - resid; cmd->iov_buf =3D NULL; @@ -1316,6 +1332,7 @@ static int megasas_dcmd_cfg_read(MegasasState *s, Meg= asasCmd *cmd) struct mfi_config_data *info; int num_pd_disks =3D 0, array_offset, ld_offset; BusChild *kid; + uint64_t resid; =20 if (cmd->iov_size > 4096) { return MFI_STAT_INVALID_PARAMETER; @@ -1390,7 +1407,8 @@ static int megasas_dcmd_cfg_read(MegasasState *s, Meg= asasCmd *cmd) ld_offset +=3D sizeof(struct mfi_ld_config); } =20 - cmd->iov_size -=3D dma_buf_read(data, info->size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(data, info->size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -1398,6 +1416,7 @@ static int megasas_dcmd_get_properties(MegasasState *= s, MegasasCmd *cmd) { struct mfi_ctrl_props info; size_t dcmd_size =3D sizeof(info); + uint64_t resid; =20 memset(&info, 0x0, dcmd_size); if (cmd->iov_size < dcmd_size) { @@ -1420,7 +1439,8 @@ static int megasas_dcmd_get_properties(MegasasState *= s, MegasasCmd *cmd) info.ecc_bucket_leak_rate =3D cpu_to_le16(1440); info.expose_encl_devices =3D 1; =20 - cmd->iov_size -=3D dma_buf_read(&info, dcmd_size, &cmd->qsg, MEMTXATTR= S_UNSPECIFIED); + dma_buf_read(&info, dcmd_size, &resid, &cmd->qsg, MEMTXATTRS_UNSPECIFI= ED); + cmd->iov_size -=3D resid; return MFI_STAT_OK; } =20 @@ -1465,7 +1485,7 @@ static int megasas_dcmd_set_properties(MegasasState *= s, MegasasCmd *cmd) dcmd_size); return MFI_STAT_INVALID_PARAMETER; } - dma_buf_write(&info, dcmd_size, &cmd->qsg, MEMTXATTRS_UNSPECIFIED); + dma_buf_write(&info, dcmd_size, NULL, &cmd->qsg, MEMTXATTRS_UNSPECIFIE= D); trace_megasas_dcmd_unsupported(cmd->index, cmd->iov_size); return MFI_STAT_OK; } diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 2b5e9dca311..34cf41796bb 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -1421,9 +1421,9 @@ void scsi_req_data(SCSIRequest *req, int len) =20 buf =3D scsi_req_get_buf(req); if (req->cmd.mode =3D=3D SCSI_XFER_FROM_DEV) { - req->resid =3D dma_buf_read(buf, len, req->sg, MEMTXATTRS_UNSPECIF= IED); + dma_buf_read(buf, len, &req->resid, req->sg, MEMTXATTRS_UNSPECIFIE= D); } else { - req->resid =3D dma_buf_write(buf, len, req->sg, MEMTXATTRS_UNSPECI= FIED); + dma_buf_write(buf, len, &req->resid, req->sg, MEMTXATTRS_UNSPECIFI= ED); } scsi_req_continue(req); } diff --git a/softmmu/dma-helpers.c b/softmmu/dma-helpers.c index b0be1564797..498303157e9 100644 --- a/softmmu/dma-helpers.c +++ b/softmmu/dma-helpers.c @@ -321,22 +321,16 @@ static MemTxResult dma_buf_rw(void *buf, int32_t len,= uint64_t *residp, return res; } =20 -uint64_t dma_buf_read(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs a= ttrs) +MemTxResult dma_buf_read(void *ptr, int32_t len, uint64_t *residp, + QEMUSGList *sg, MemTxAttrs attrs) { - uint64_t resid; - - dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_FROM_DEVICE, attrs); - - return resid; + return dma_buf_rw(ptr, len, residp, sg, DMA_DIRECTION_FROM_DEVICE, att= rs); } =20 -uint64_t dma_buf_write(void *ptr, int32_t len, QEMUSGList *sg, MemTxAttrs = attrs) +MemTxResult dma_buf_write(void *ptr, int32_t len, uint64_t *residp, + QEMUSGList *sg, MemTxAttrs attrs) { - uint64_t resid; - - dma_buf_rw(ptr, len, &resid, sg, DMA_DIRECTION_TO_DEVICE, attrs); - - return resid; + return dma_buf_rw(ptr, len, residp, sg, DMA_DIRECTION_TO_DEVICE, attrs= ); } =20 void dma_acct_start(BlockBackend *blk, BlockAcctCookie *cookie, --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260773; cv=none; d=zohomail.com; s=zohoarc; b=hsmUllrwFdNmyzGt09yd1kwwPpcPeH40F6kYqJzYOsK1H4RAney2vBNNWa+5vDl8tYCyWroGPq0PpXTDhM3oelKvh1Uhnt60vt4DxTacuOroNInFcmAqp/vrK2V2qHJXIeQd33CMRweleNJKu11MdeCWYcdNob7a1YAFucjqRsk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260773; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=NSopmSWVqanwbnplx6qNpP3mtJv+WIiHHgiOwpgcpF4=; b=jDalRtg0QnVPqGUnBD8y0RIebQjNX+jMEYSicSGEV10tSB+TBiaWd7MDP7eD1KuQ/+BW8nJUpOcoibAR4ygAsFHV0PftoVcFfTwDHzZzXHdCQ7Hq7GpWm8nbuaJKFzWNO1lHcu96k6LM3a1PXnV9YovNm3yjMBczn03IMKYJVAc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260773869855.7980239379013; Thu, 23 Dec 2021 03:59:33 -0800 (PST) Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-26-3BxNs6sdODmSMXwW2DV24w-1; Thu, 23 Dec 2021 06:59:26 -0500 Received: by mail-wr1-f72.google.com with SMTP id v15-20020adf8b4f000000b001a24c46d6ceso1217971wra.15 for ; Thu, 23 Dec 2021 03:59:26 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id z5sm4578810wru.87.2021.12.23.03.59.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:59:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260772; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=NSopmSWVqanwbnplx6qNpP3mtJv+WIiHHgiOwpgcpF4=; b=dc/vq5jWe7KVR4OeL5bI6B9K1HML1ZUsAh/ojXLzt8PX8q1D/IP6IlKSIslMVD3fMbAMa3 75NOu9/15yNjTRE6mhthHqViXXNOf9zf/l5y55GaRBawoOAq/1gQMkvfQFdgYV18V4UFVL JrFQJ4dRn46AtHbe7001ncU8Vpe2Vgs= X-MC-Unique: 3BxNs6sdODmSMXwW2DV24w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NSopmSWVqanwbnplx6qNpP3mtJv+WIiHHgiOwpgcpF4=; b=NDiES8Ml06m9xWgZfLrxeTB63VOh+kCVWo+QUVgMXAYqSY0izzBsBMgoVSlWcTmTAb jz+S49HFDXZTI87+BgRRkdFJGxsCQGdUJefvgDgf9Ujx6oEG+gnKKgMGEuFk3cf+Zzm+ EEkVxrrkllTF9UgDqzjkGxPnTRYL1ohBEuDUdLNfxHk3SLYeUv665MDWEOh4XkJ4Gs6O GPFCBgtIm1U0txXHz/ZH02zi6/PKZvT+KXfyIp7t4s2FzdcrqqVORek0tlERZldp0HKU bNO8gCYhkS0KB4cJBAnaFxTzquR59zir8OyHHdCuZEA84enOa6tFKV40POm3dq9WJIM6 vZ2Q== X-Gm-Message-State: AOAM531DkJ2fEVb5kPjTMaFiluGFM3GZ8GxOFSX/TqbBZzUG4zivOcdy 4vibUW8/MTbmT4fP7keqW1i3mDEC7pF652NZacmpdYGJkrsxzzd4MYINTWxApfiz7SNWRlri4mD /5CYZIVo1niGiMQ== X-Received: by 2002:a7b:ca54:: with SMTP id m20mr1476109wml.127.1640260765526; Thu, 23 Dec 2021 03:59:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJyn3Nwd76HLINri1ov2M1AHMbGhwDHxRznSJYVEH9ul28NBykc+7yxxHc0RMh8AndmXoGH1gg== X-Received: by 2002:a7b:ca54:: with SMTP id m20mr1476066wml.127.1640260765351; Thu, 23 Dec 2021 03:59:25 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 15/23] dma: Let st*_dma() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:46 +0100 Message-Id: <20211223115554.3155328-16-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260775654100003 Let devices specify transaction attributes when calling st*_dma(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Richard Henderson Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 3 ++- include/hw/ppc/spapr_vio.h | 12 ++++++++---- include/sysemu/dma.h | 10 ++++++---- hw/nvram/fw_cfg.c | 4 ++-- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index a751ab5a75d..d07e9707b48 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -859,7 +859,8 @@ static inline MemTxResult pci_dma_write(PCIDevice *dev,= dma_addr_t addr, static inline void st##_s##_pci_dma(PCIDevice *dev, \ dma_addr_t addr, uint##_bits##_t v= al) \ { \ - st##_s##_dma(pci_get_address_space(dev), addr, val); \ + st##_s##_dma(pci_get_address_space(dev), addr, val, \ + MEMTXATTRS_UNSPECIFIED); \ } =20 PCI_DMA_DEFINE_LDST(ub, b, 8); diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index 5d2ea8e6656..e87f8e6f596 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -118,10 +118,14 @@ static inline int spapr_vio_dma_set(SpaprVioDevice *d= ev, uint64_t taddr, H_DEST_PARM : H_SUCCESS; } =20 -#define vio_stb(_dev, _addr, _val) (stb_dma(&(_dev)->as, (_addr), (_val))) -#define vio_sth(_dev, _addr, _val) (stw_be_dma(&(_dev)->as, (_addr), (_val= ))) -#define vio_stl(_dev, _addr, _val) (stl_be_dma(&(_dev)->as, (_addr), (_val= ))) -#define vio_stq(_dev, _addr, _val) (stq_be_dma(&(_dev)->as, (_addr), (_val= ))) +#define vio_stb(_dev, _addr, _val) \ + (stb_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) +#define vio_sth(_dev, _addr, _val) \ + (stw_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) +#define vio_stl(_dev, _addr, _val) \ + (stl_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) +#define vio_stq(_dev, _addr, _val) \ + (stq_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) #define vio_ldq(_dev, _addr) (ldq_be_dma(&(_dev)->as, (_addr))) =20 int spapr_vio_send_crq(SpaprVioDevice *dev, uint8_t *crq); diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index d11c1d794f9..ebbc0501681 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -249,10 +249,11 @@ static inline void dma_memory_unmap(AddressSpace *as, } \ static inline void st##_sname##_##_end##_dma(AddressSpace *as, \ dma_addr_t addr, \ - uint##_bits##_t val) \ + uint##_bits##_t val, \ + MemTxAttrs attrs) \ { \ val =3D cpu_to_##_end##_bits(val); \ - dma_memory_write(as, addr, &val, (_bits) / 8, MEMTXATTRS_UNSPECIFI= ED); \ + dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ } =20 static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr) @@ -263,9 +264,10 @@ static inline uint8_t ldub_dma(AddressSpace *as, dma_a= ddr_t addr) return val; } =20 -static inline void stb_dma(AddressSpace *as, dma_addr_t addr, uint8_t val) +static inline void stb_dma(AddressSpace *as, dma_addr_t addr, + uint8_t val, MemTxAttrs attrs) { - dma_memory_write(as, addr, &val, 1, MEMTXATTRS_UNSPECIFIED); + dma_memory_write(as, addr, &val, 1, attrs); } =20 DEFINE_LDST_DMA(uw, w, 16, le); diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 9b91b15cb08..e5f3c981841 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -360,7 +360,7 @@ static void fw_cfg_dma_transfer(FWCfgState *s) if (dma_memory_read(s->dma_as, dma_addr, &dma, sizeof(dma), MEMTXATTRS_UNSPECIFIED)) { stl_be_dma(s->dma_as, dma_addr + offsetof(FWCfgDmaAccess, control), - FW_CFG_DMA_CTL_ERROR); + FW_CFG_DMA_CTL_ERROR, MEMTXATTRS_UNSPECIFIED); return; } =20 @@ -446,7 +446,7 @@ static void fw_cfg_dma_transfer(FWCfgState *s) } =20 stl_be_dma(s->dma_as, dma_addr + offsetof(FWCfgDmaAccess, control), - dma.control); + dma.control, MEMTXATTRS_UNSPECIFIED); =20 trace_fw_cfg_read(s, 0); } --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260781; cv=none; d=zohomail.com; s=zohoarc; b=N47G5JAPh+5hvsJ7ksTc71bzIaUnV+KgC8P5WLQ1JXhGiBBaYvrPKufS4OzznDj3hNS5mW0aUZSzCDWSkLsyp4TjThKjcfb+3Y6na/YfsfZ8nxrHO8PIF2y643O8FBWM1HIIRTilBWBPkvtWV8u5KerNm4mqvuEjn01OdTeTB4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260781; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=ftwXgHnQRoZowrvTRk4Xx2aE6O9/FjV/sJjIF9qzyOM=; b=aF8zuEXERBGLVtx04+tuWn+lhjtFtFNzaBlv9DmCu+znYDXRtQrTpYT3IwHp6FjWS1p72I1IIs5cbQYC54WzPz1hVmwlwLjFpaA/yktDcHcYa8SZpJzyy1OGPLZUyMt1NEl1GbXHq31WeSz+dRGTqqSShQTGKh2SbziJkowF+xs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260781780147.44240508397888; Thu, 23 Dec 2021 03:59:41 -0800 (PST) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-633-YwcUMonrMMqyUkmA5Zmu7w-1; Thu, 23 Dec 2021 06:59:39 -0500 Received: by mail-wm1-f69.google.com with SMTP id v23-20020a05600c215700b0034566adb612so1955697wml.0 for ; Thu, 23 Dec 2021 03:59:39 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id o38sm2299342wms.11.2021.12.23.03.59.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:59:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260780; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ftwXgHnQRoZowrvTRk4Xx2aE6O9/FjV/sJjIF9qzyOM=; b=UNJr1KB2z3wSxDLu/f7VXtbu9edJmQoxLpjVoLSOVkh8bbIwT6036b+/hLVG6y2a7qI2pJ GgPFeFpVyLUUjvlhvjFkEmvLs8k20UENMpMpJbVZ1I4q9nMOak+t3ZoJBBeleDuej5xlKJ ZrAjcQ+QefV2y0qA8+D25ZUtN0Hw5Po= X-MC-Unique: YwcUMonrMMqyUkmA5Zmu7w-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ftwXgHnQRoZowrvTRk4Xx2aE6O9/FjV/sJjIF9qzyOM=; b=CJEpQBqvx3WCgH7vGItbyb0sw283CmPX1YA6uVx9LD/EZdh8+4POWgoH8umtasTdmr o0xhTGusueqeM0MgiUmKKhbiPfSEXnVDA6kVZWJC5bChtFy0VvEYm6ny/qvPOzmAPJMg 4k335cGoUq2CqDsDg9Ma96yGGMsTxOSPro0NSlAH9GHFLuvFJM9Y/THVxgeqkE2QQA+q 4ge6Dtwm/ntYhv9hnsfiglkX2HU+3vDbsH7xZ7jBrCIEBIbycJ4y9CC/zfwUQpdSc3x6 nAT71CdZ/J0jVYsKa93axoWdfN5VSvuNVdF0R77VYQ5j/4JBTmfNnjhuL8/HSrhl6nOR Eibw== X-Gm-Message-State: AOAM530n3I7AiXdZ1Ig5s3dewg6dEpDqBc8RO1DR6KiERLeXkdb5UplD bKNpVYBAsGhc8892sNJv9OgOjDt0Cstb5nRV1my72IEs6mV3agpfdMlNVbWvlIzi8FiLn3B2LUk vRd5nmCUXVA3HKQ== X-Received: by 2002:adf:d1c5:: with SMTP id b5mr1519283wrd.177.1640260778441; Thu, 23 Dec 2021 03:59:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJy3RYShAZiqz5f6PCfPJ8NH7hoS9j2wFZo+e+5yyk/2KLGEc76Ly6K40LkflzX1JkLhKDSW2Q== X-Received: by 2002:adf:d1c5:: with SMTP id b5mr1519252wrd.177.1640260778196; Thu, 23 Dec 2021 03:59:38 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 16/23] dma: Let ld*_dma() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:47 +0100 Message-Id: <20211223115554.3155328-17-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260783795100001 Let devices specify transaction attributes when calling ld*_dma(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Richard Henderson Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 3 ++- include/hw/ppc/spapr_vio.h | 3 ++- include/sysemu/dma.h | 11 ++++++----- hw/intc/pnv_xive.c | 7 ++++--- hw/usb/hcd-xhci.c | 6 +++--- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index d07e9707b48..0613308b1b6 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -854,7 +854,8 @@ static inline MemTxResult pci_dma_write(PCIDevice *dev,= dma_addr_t addr, static inline uint##_bits##_t ld##_l##_pci_dma(PCIDevice *dev, \ dma_addr_t addr) \ { \ - return ld##_l##_dma(pci_get_address_space(dev), addr); \ + return ld##_l##_dma(pci_get_address_space(dev), addr, \ + MEMTXATTRS_UNSPECIFIED); \ } \ static inline void st##_s##_pci_dma(PCIDevice *dev, \ dma_addr_t addr, uint##_bits##_t v= al) \ diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index e87f8e6f596..d2ec9b0637f 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -126,7 +126,8 @@ static inline int spapr_vio_dma_set(SpaprVioDevice *dev= , uint64_t taddr, (stl_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) #define vio_stq(_dev, _addr, _val) \ (stq_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) -#define vio_ldq(_dev, _addr) (ldq_be_dma(&(_dev)->as, (_addr))) +#define vio_ldq(_dev, _addr) \ + (ldq_be_dma(&(_dev)->as, (_addr), MEMTXATTRS_UNSPECIFIED)) =20 int spapr_vio_send_crq(SpaprVioDevice *dev, uint8_t *crq); =20 diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index ebbc0501681..f3cf60d222d 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -241,10 +241,11 @@ static inline void dma_memory_unmap(AddressSpace *as, =20 #define DEFINE_LDST_DMA(_lname, _sname, _bits, _end) \ static inline uint##_bits##_t ld##_lname##_##_end##_dma(AddressSpace *= as, \ - dma_addr_t add= r) \ + dma_addr_t add= r, \ + MemTxAttrs att= rs) \ { \ uint##_bits##_t val; \ - dma_memory_read(as, addr, &val, (_bits) / 8, MEMTXATTRS_UNSPECIFIE= D); \ + dma_memory_read(as, addr, &val, (_bits) / 8, attrs); \ return _end##_bits##_to_cpu(val); \ } \ static inline void st##_sname##_##_end##_dma(AddressSpace *as, \ @@ -253,14 +254,14 @@ static inline void dma_memory_unmap(AddressSpace *as, MemTxAttrs attrs) \ { \ val =3D cpu_to_##_end##_bits(val); \ - dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ + dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ } =20 -static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr) +static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr, MemTxAtt= rs attrs) { uint8_t val; =20 - dma_memory_read(as, addr, &val, 1, MEMTXATTRS_UNSPECIFIED); + dma_memory_read(as, addr, &val, 1, attrs); return val; } =20 diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index ad43483612e..d9249bbc0c1 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -172,7 +172,7 @@ static uint64_t pnv_xive_vst_addr_indirect(PnvXive *xiv= e, uint32_t type, =20 /* Get the page size of the indirect table. */ vsd_addr =3D vsd & VSD_ADDRESS_MASK; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr); + vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, MEMTXATTRS_UNSPECI= FIED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG @@ -195,7 +195,8 @@ static uint64_t pnv_xive_vst_addr_indirect(PnvXive *xiv= e, uint32_t type, /* Load the VSD we are looking for, if not already done */ if (vsd_idx) { vsd_addr =3D vsd_addr + vsd_idx * XIVE_VSD_SIZE; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr); + vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, + MEMTXATTRS_UNSPECIFIED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG @@ -542,7 +543,7 @@ static uint64_t pnv_xive_vst_per_subpage(PnvXive *xive,= uint32_t type) =20 /* Get the page size of the indirect table. */ vsd_addr =3D vsd & VSD_ADDRESS_MASK; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr); + vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, MEMTXATTRS_UNSPECI= FIED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index ed2b9ea456e..d960b814587 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -2062,7 +2062,7 @@ static TRBCCode xhci_address_slot(XHCIState *xhci, un= signed int slotid, assert(slotid >=3D 1 && slotid <=3D xhci->numslots); =20 dcbaap =3D xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high); - poctx =3D ldq_le_dma(xhci->as, dcbaap + 8 * slotid); + poctx =3D ldq_le_dma(xhci->as, dcbaap + 8 * slotid, MEMTXATTRS_UNSPECI= FIED); ictx =3D xhci_mask64(pictx); octx =3D xhci_mask64(poctx); =20 @@ -3437,8 +3437,8 @@ static int usb_xhci_post_load(void *opaque, int versi= on_id) if (!slot->addressed) { continue; } - slot->ctx =3D - xhci_mask64(ldq_le_dma(xhci->as, dcbaap + 8 * slotid)); + slot->ctx =3D xhci_mask64(ldq_le_dma(xhci->as, dcbaap + 8 * slotid, + MEMTXATTRS_UNSPECIFIED)); xhci_dma_read_u32s(xhci, slot->ctx, slot_ctx, sizeof(slot_ctx)); slot->uport =3D xhci_lookup_uport(xhci, slot_ctx); if (!slot->uport) { --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260796; cv=none; d=zohomail.com; s=zohoarc; b=d+HVqeIEhg81Bw2uOLMcTIR53NzZC06ztp0cF/nrw+qy3hHh1ZJKXvZ5OLRA2JUe3sFUlQCh/BXUY5KlR8Ow/ttIFa3f6hJzHbq7rQc+b+wslhx1f+HvqLdctOY1YYCoobGTSbRXbzluE36S3lu2HJGjI4wkDGsUV2bCHTj79X8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260796; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=AccLfnY/B/12ZHLoZ2OU6IixKvcUVx9674CliXPrEJo=; b=EBQiJMPjzFWIvZnHbUH2GiYLilfSAkBYk31jN7viIvw4Gj+VwgQr0qlHDBZJJyJqUbNgA1mT3QuaLboVn7h3ezoU/Qhxkh0XxH0iyeHLsChOAEPEP/h4+VUwy3pCuryeqXSVxQ7SLYbOlYLmnZ5niiJHOHsQvXzFN3ZeVkR2IDU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260796390992.813885252688; Thu, 23 Dec 2021 03:59:56 -0800 (PST) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-489-05o-vAAAPm2WfQJhNLW3gA-1; Thu, 23 Dec 2021 06:59:54 -0500 Received: by mail-wm1-f72.google.com with SMTP id d4-20020a05600c34c400b00345d5d47d54so638300wmq.6 for ; Thu, 23 Dec 2021 03:59:54 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id i4sm7759112wmd.34.2021.12.23.03.59.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 03:59:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260795; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AccLfnY/B/12ZHLoZ2OU6IixKvcUVx9674CliXPrEJo=; b=Yt0Q84EV+TTM+tQVeUw2MrHn1uzPEocDodtyvb3D7/3ESa19XGN4WSPeLcKwLLurDhKEKe ebBJU4EDAP2vR+X/bA39GExlMsrHIPOESLDf2N0ztqdEBl2uoIGglzwW5Zu0NVmSPpuB/B 7rWorTQoUaNM99aS4K3Nm2Ano2fhdtI= X-MC-Unique: 05o-vAAAPm2WfQJhNLW3gA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=AccLfnY/B/12ZHLoZ2OU6IixKvcUVx9674CliXPrEJo=; b=oTGI2yahvjFxGhyoLQ9uMjEBvgZZotNxeHajGA7UOEbFF5LkHXOKGMkFX6U6ZclH3E t8oif00Je2WR3ck9xKA+3x/uR3YkPNAkGGTYFVG0FZerDN9ZvbuyIxJjQ0PfHsVVfyG/ NFHoBIvWgkvuq8aA3TGK5a35NOXCDWZy6vJB1m46Z7LTwlbRjE4x6016lDd45OofwArb jFyapvutGggjXd0OkrdvO0Ok2r29MmJBx3CcBTJN6LMU8sAHrS5Sa0/n1FUPqcYwvBYz njr1kY5LOZMo4KsXFH9UXFfDnZmyEB66o/PoLzu/e3pkf61JwJvugQQbdcZmQPxhRRjQ Kv5A== X-Gm-Message-State: AOAM532StywyJGks79HuavPCpmkXVU5AGnmioeZCAcBvbFMclqmVdOxy aXGeZzaOjzuU7RzO6bhwWE2PHH27abDVZ21L/oJCn6G/p/DydiQS9gXyIOICuatSogkg7bN8Y/a AFpNCUnDfQqJbog== X-Received: by 2002:a05:600c:1f18:: with SMTP id bd24mr1593833wmb.174.1640260793172; Thu, 23 Dec 2021 03:59:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJw/oJ4qDHZs1qmUK48d0flpcHtTo7uhZOdN58vL8y6w/JcRg0Kb4wZpKSYPbM+SK/9h+ecGLw== X-Received: by 2002:a05:600c:1f18:: with SMTP id bd24mr1593821wmb.174.1640260793042; Thu, 23 Dec 2021 03:59:53 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 17/23] dma: Let st*_dma() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:48 +0100 Message-Id: <20211223115554.3155328-18-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260798326100001 dma_memory_write() returns a MemTxResult type. Do not discard it, return it to the caller. Reviewed-by: Richard Henderson Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/sysemu/dma.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index f3cf60d222d..725e8e90f88 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -248,13 +248,13 @@ static inline void dma_memory_unmap(AddressSpace *as, dma_memory_read(as, addr, &val, (_bits) / 8, attrs); \ return _end##_bits##_to_cpu(val); \ } \ - static inline void st##_sname##_##_end##_dma(AddressSpace *as, \ - dma_addr_t addr, \ - uint##_bits##_t val, \ - MemTxAttrs attrs) \ - { \ - val =3D cpu_to_##_end##_bits(val); \ - dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ + static inline MemTxResult st##_sname##_##_end##_dma(AddressSpace *as, \ + dma_addr_t addr, \ + uint##_bits##_t va= l, \ + MemTxAttrs attrs) \ + { \ + val =3D cpu_to_##_end##_bits(val); \ + return dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ } =20 static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr, MemTxAtt= rs attrs) @@ -265,10 +265,10 @@ static inline uint8_t ldub_dma(AddressSpace *as, dma_= addr_t addr, MemTxAttrs att return val; } =20 -static inline void stb_dma(AddressSpace *as, dma_addr_t addr, - uint8_t val, MemTxAttrs attrs) +static inline MemTxResult stb_dma(AddressSpace *as, dma_addr_t addr, + uint8_t val, MemTxAttrs attrs) { - dma_memory_write(as, addr, &val, 1, attrs); + return dma_memory_write(as, addr, &val, 1, attrs); } =20 DEFINE_LDST_DMA(uw, w, 16, le); --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260808; cv=none; d=zohomail.com; s=zohoarc; b=QLgux0HnB83o3fhokrNkFFWw+7JWchQQ6p6tRths/JUPNZoxTrCpor9+HCndbajJCyo97lGQoBCM3nvlkA+wVbGZ85UZBP0aD8SIfoljqoSytmSdKUQdYhLEE7tgGxazmMboPA2H1+sa4e1f316M/uyM45MIaWjMk9zwk6sNS2g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260808; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=vdLtyGiJkeMl3td5q47AwY8bpcOEYnDZ2ZEG37vZDgg=; b=cVLk2LYZ8HektdUatdNmAYb0XEJkk+RZjDktQujn0GWa3KvOGH7vx6YCGrwgO3KCdBW7KdpZ5JWuWZrFNtV6mmENBIGWrYYjo2TfYea/nlhGWFslYUrNNDMznhjjh4uE0FG0fDPVOOazSVBZLxfDZ9tRlOQ+QV+9zh2KJC6nkaM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260808828152.69007648341722; Thu, 23 Dec 2021 04:00:08 -0800 (PST) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-91-Bxg0Wj3EOgm2hruNJnJgsA-1; Thu, 23 Dec 2021 07:00:06 -0500 Received: by mail-wm1-f72.google.com with SMTP id b83-20020a1c1b56000000b0033283ea5facso2079178wmb.1 for ; Thu, 23 Dec 2021 04:00:06 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id s1sm7657694wmh.35.2021.12.23.03.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:00:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260807; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=vdLtyGiJkeMl3td5q47AwY8bpcOEYnDZ2ZEG37vZDgg=; b=TT6FXCqRNiDKhyUlvMGlEbUbkirZ8STVuymUXAga32CdHQXbOYBxp6UAI/WNNx1oFYFAIz IlbUDZjf5Is4gVOVjXboMomNxSstXXnmkC0x9vyKju5csFJMsuTmRQu/sQi7W3cAo/Gj+6 EzRtNh3PgPrzU5aIF5Jbi4YOtYDkg5A= X-MC-Unique: Bxg0Wj3EOgm2hruNJnJgsA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vdLtyGiJkeMl3td5q47AwY8bpcOEYnDZ2ZEG37vZDgg=; b=ITD3yUz5v7wLLNWIWN1X3kamgGuLifvGkQPd/lpgUnz4cePxkqMpppzSUPgMxFOP4F kz3r5Ovp7eXIctr24Yky6GM3q36MDkdnk6jN4nBSIWOSY+L0XH31HGaGz8g5kzPUFTXI ST9f3keLH/EZmcg63d3UVZ9ZRZXM4B9UJ5MH2kMk70eZUFfoGdb8tSsu0wNc/updhg29 Co+3Yu2On+QMNmtlf6m/21nVdxhd2ej9PmF/bXepEUVFCC0NrpuhHmc+L7xiOCoEBO9U mkA+ZnR+dWjin+nT/cn+lPqosQkUOvIBHIAWo7n7+ZnX3ClQJVjLi3iZJrINzZP5Qur1 8twA== X-Gm-Message-State: AOAM5333ljcXPyuWKNva3WvEYXPRQqdcIC4PdekjJPv98dITZxIJVFsR ef1WHY+SiQDKXGrzLtL/dZ6syHH6hDOAjIHueLGYExFm4QTgx2wuzRt63jz4sQyMCtnTt5gxhWc UIiqA2fByQ9dXlw== X-Received: by 2002:a5d:650f:: with SMTP id x15mr1501790wru.57.1640260805309; Thu, 23 Dec 2021 04:00:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJyfBj7801Rym+T0NHjEcotQhjhXR9GQW60PbxXO5gjfhMFkT7gYMQ53oDZDV6oIaoYlKafFNw== X-Received: by 2002:a5d:650f:: with SMTP id x15mr1501781wru.57.1640260805125; Thu, 23 Dec 2021 04:00:05 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 18/23] dma: Let ld*_dma() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:49 +0100 Message-Id: <20211223115554.3155328-19-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260810660100001 dma_memory_read() returns a MemTxResult type. Do not discard it, return it to the caller. Update the few callers. Reviewed-by: Richard Henderson Reviewed-by: C=C3=A9dric Le Goater Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 6 ++++-- include/hw/ppc/spapr_vio.h | 6 +++++- include/sysemu/dma.h | 25 ++++++++++++------------- hw/intc/pnv_xive.c | 8 ++++---- hw/usb/hcd-xhci.c | 7 ++++--- 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 0613308b1b6..8c5f2ed5054 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -854,8 +854,10 @@ static inline MemTxResult pci_dma_write(PCIDevice *dev= , dma_addr_t addr, static inline uint##_bits##_t ld##_l##_pci_dma(PCIDevice *dev, \ dma_addr_t addr) \ { \ - return ld##_l##_dma(pci_get_address_space(dev), addr, \ - MEMTXATTRS_UNSPECIFIED); \ + uint##_bits##_t val; \ + ld##_l##_dma(pci_get_address_space(dev), addr, &val, \ + MEMTXATTRS_UNSPECIFIED); \ + return val; \ } \ static inline void st##_s##_pci_dma(PCIDevice *dev, \ dma_addr_t addr, uint##_bits##_t v= al) \ diff --git a/include/hw/ppc/spapr_vio.h b/include/hw/ppc/spapr_vio.h index d2ec9b0637f..7eae1a48478 100644 --- a/include/hw/ppc/spapr_vio.h +++ b/include/hw/ppc/spapr_vio.h @@ -127,7 +127,11 @@ static inline int spapr_vio_dma_set(SpaprVioDevice *de= v, uint64_t taddr, #define vio_stq(_dev, _addr, _val) \ (stq_be_dma(&(_dev)->as, (_addr), (_val), MEMTXATTRS_UNSPECIFIED)) #define vio_ldq(_dev, _addr) \ - (ldq_be_dma(&(_dev)->as, (_addr), MEMTXATTRS_UNSPECIFIED)) + ({ \ + uint64_t _val; \ + ldq_be_dma(&(_dev)->as, (_addr), &_val, MEMTXATTRS_UNSPECIFIED= ); \ + _val; \ + }) =20 int spapr_vio_send_crq(SpaprVioDevice *dev, uint8_t *crq); =20 diff --git a/include/sysemu/dma.h b/include/sysemu/dma.h index 725e8e90f88..e6776586613 100644 --- a/include/sysemu/dma.h +++ b/include/sysemu/dma.h @@ -240,14 +240,15 @@ static inline void dma_memory_unmap(AddressSpace *as, } =20 #define DEFINE_LDST_DMA(_lname, _sname, _bits, _end) \ - static inline uint##_bits##_t ld##_lname##_##_end##_dma(AddressSpace *= as, \ - dma_addr_t add= r, \ - MemTxAttrs att= rs) \ - { \ - uint##_bits##_t val; \ - dma_memory_read(as, addr, &val, (_bits) / 8, attrs); \ - return _end##_bits##_to_cpu(val); \ - } \ + static inline MemTxResult ld##_lname##_##_end##_dma(AddressSpace *as, \ + dma_addr_t addr, \ + uint##_bits##_t *p= val, \ + MemTxAttrs attrs) \ + { \ + MemTxResult res =3D dma_memory_read(as, addr, pval, (_bits) / 8, a= ttrs); \ + _end##_bits##_to_cpus(pval); \ + return res; \ + } \ static inline MemTxResult st##_sname##_##_end##_dma(AddressSpace *as, \ dma_addr_t addr, \ uint##_bits##_t va= l, \ @@ -257,12 +258,10 @@ static inline void dma_memory_unmap(AddressSpace *as, return dma_memory_write(as, addr, &val, (_bits) / 8, attrs); \ } =20 -static inline uint8_t ldub_dma(AddressSpace *as, dma_addr_t addr, MemTxAtt= rs attrs) +static inline MemTxResult ldub_dma(AddressSpace *as, dma_addr_t addr, + uint8_t *val, MemTxAttrs attrs) { - uint8_t val; - - dma_memory_read(as, addr, &val, 1, attrs); - return val; + return dma_memory_read(as, addr, val, 1, attrs); } =20 static inline MemTxResult stb_dma(AddressSpace *as, dma_addr_t addr, diff --git a/hw/intc/pnv_xive.c b/hw/intc/pnv_xive.c index d9249bbc0c1..bb207514f2d 100644 --- a/hw/intc/pnv_xive.c +++ b/hw/intc/pnv_xive.c @@ -172,7 +172,7 @@ static uint64_t pnv_xive_vst_addr_indirect(PnvXive *xiv= e, uint32_t type, =20 /* Get the page size of the indirect table. */ vsd_addr =3D vsd & VSD_ADDRESS_MASK; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, MEMTXATTRS_UNSPECI= FIED); + ldq_be_dma(&address_space_memory, vsd_addr, &vsd, MEMTXATTRS_UNSPECIFI= ED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG @@ -195,8 +195,8 @@ static uint64_t pnv_xive_vst_addr_indirect(PnvXive *xiv= e, uint32_t type, /* Load the VSD we are looking for, if not already done */ if (vsd_idx) { vsd_addr =3D vsd_addr + vsd_idx * XIVE_VSD_SIZE; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, - MEMTXATTRS_UNSPECIFIED); + ldq_be_dma(&address_space_memory, vsd_addr, &vsd, + MEMTXATTRS_UNSPECIFIED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG @@ -543,7 +543,7 @@ static uint64_t pnv_xive_vst_per_subpage(PnvXive *xive,= uint32_t type) =20 /* Get the page size of the indirect table. */ vsd_addr =3D vsd & VSD_ADDRESS_MASK; - vsd =3D ldq_be_dma(&address_space_memory, vsd_addr, MEMTXATTRS_UNSPECI= FIED); + ldq_be_dma(&address_space_memory, vsd_addr, &vsd, MEMTXATTRS_UNSPECIFI= ED); =20 if (!(vsd & VSD_ADDRESS_MASK)) { #ifdef XIVE_DEBUG diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index d960b814587..da5a4072107 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -2062,7 +2062,7 @@ static TRBCCode xhci_address_slot(XHCIState *xhci, un= signed int slotid, assert(slotid >=3D 1 && slotid <=3D xhci->numslots); =20 dcbaap =3D xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high); - poctx =3D ldq_le_dma(xhci->as, dcbaap + 8 * slotid, MEMTXATTRS_UNSPECI= FIED); + ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &poctx, MEMTXATTRS_UNSPECIFI= ED); ictx =3D xhci_mask64(pictx); octx =3D xhci_mask64(poctx); =20 @@ -3429,6 +3429,7 @@ static int usb_xhci_post_load(void *opaque, int versi= on_id) uint32_t slot_ctx[4]; uint32_t ep_ctx[5]; int slotid, epid, state; + uint64_t addr; =20 dcbaap =3D xhci_addr64(xhci->dcbaap_low, xhci->dcbaap_high); =20 @@ -3437,8 +3438,8 @@ static int usb_xhci_post_load(void *opaque, int versi= on_id) if (!slot->addressed) { continue; } - slot->ctx =3D xhci_mask64(ldq_le_dma(xhci->as, dcbaap + 8 * slotid, - MEMTXATTRS_UNSPECIFIED)); + ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &addr, MEMTXATTRS_UNSPEC= IFIED); + slot->ctx =3D xhci_mask64(addr); xhci_dma_read_u32s(xhci, slot->ctx, slot_ctx, sizeof(slot_ctx)); slot->uport =3D xhci_lookup_uport(xhci, slot_ctx); if (!slot->uport) { --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260823; cv=none; d=zohomail.com; s=zohoarc; b=npVj/JSXKXdVn+sqjyNOCpGPRepZzBh2RNjO9uWwolGA1ranZFyt90eaOXR5YH/jneQebE3rZJKGkf1Zkr7/GwPxUurcqwe8eWXJm9gv5HHUsY4XGjBG2ZFMMQXG7I/U1QsTXyJ8K8NIbG2+e+qcyjz2JJByJuP/h4LWynK1/8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260823; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=oOieGHzt55TTLrMgE6y82ndRao5o7/HgB++E/ZPWN8c=; b=Y9YS7km87hO6FFWGFEvI5anYAXOiXTq+fKcj7dWrgohvKSqxjIyJQW0/FOWugJCmfBv2+dudE+j97hdhIh2LSWgenbEIeFFc5QTeXFk9KfeiaBa8lctyrN1yvZIIziW3/nke2/MV63iZvMWbPvOg8jqA5a+SKR6NfCNjvb0jwyQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260823314584.0335341866585; Thu, 23 Dec 2021 04:00:23 -0800 (PST) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-463-kaIRZHycMTq02YNH8f1eaA-1; Thu, 23 Dec 2021 07:00:21 -0500 Received: by mail-wm1-f72.google.com with SMTP id ay41-20020a05600c1e2900b00345a568e6b2so1867330wmb.4 for ; Thu, 23 Dec 2021 04:00:20 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id s189sm9632538wme.0.2021.12.23.04.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:00:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260822; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oOieGHzt55TTLrMgE6y82ndRao5o7/HgB++E/ZPWN8c=; b=A8UdgYPmwJT39N7vx5IQidJHfrbwYNHi2QytnIToXxlfwlWNptD6Y6IzeJ3Ey7KJF6T7ea fBYg8iZnIlr8VqOnP2HpFDnvPuhBno878AcA5M1FqDnLp2uSkec3Q7aFnQMAG68Z5lT7dT Kv1lVUVx/qDz9U1DfmT/ffNYldfJH+k= X-MC-Unique: kaIRZHycMTq02YNH8f1eaA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oOieGHzt55TTLrMgE6y82ndRao5o7/HgB++E/ZPWN8c=; b=cCbm1iE2+NsgQ9GWCPia+ukHyvVrWDhOSMYWM9+DJ8Rxbc/dPGHDmBYCM9KlvlB20H vZOc7YpFA/BqDeYElxEM6cACqVp/Vom9sRHXcXZ+3br7h6bQ/NVfSDL5eDgU4Ndi6Ft3 2uaHJacpWcMBLY5euUMHZJMxZUU5JpaJasBpxVL+NNn+Yv432WjUn4QRINrA1YmoWWAn KrpGMXvjgR5xFQijjHMs8gWYpmwCA4CcIy9GOEvcEtTPdaw8xNVR+vWRzve3+0hw6JMd NAywIDDKKcnogFizDNVuc2+LR0TC0GH6F7OS86aIApsWzEHG0H2ZLscfsIi24ZWvW74j 7i3w== X-Gm-Message-State: AOAM532kTcHNRwhAQ2ATJEHsteyUkJm/vxNuzhvU7TmIT0nrFFV9p3tX FxJufG+LQw5j8uyHAOlAirECnPKpG7AzCcigJj1zuKXVpyqJYY1CzE/cVqywX2gyFT040NX+NC6 CTDTWKCy1zNmVYQ== X-Received: by 2002:adf:dc12:: with SMTP id t18mr1594661wri.566.1640260818908; Thu, 23 Dec 2021 04:00:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJxGfYn4yd0fXb5c1xYbseXF9g+iDrur+UWaKtsUx6dlZQeu/i7TrlfCzyVN9bsHr2TL9HY27w== X-Received: by 2002:adf:dc12:: with SMTP id t18mr1594625wri.566.1640260818723; Thu, 23 Dec 2021 04:00:18 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 19/23] hw/scsi/megasas: Use uint32_t for reply queue head/tail values Date: Thu, 23 Dec 2021 12:55:50 +0100 Message-Id: <20211223115554.3155328-20-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260824726100001 While the reply queue values fit in 16-bit, they are accessed as 32-bit: 661: s->reply_queue_head =3D ldl_le_pci_dma(pcid, s->producer_pa); 662: s->reply_queue_head %=3D MEGASAS_MAX_FRAMES; 663: s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa); 664: s->reply_queue_tail %=3D MEGASAS_MAX_FRAMES; Having: 41:#define MEGASAS_MAX_FRAMES 2048 /* Firmware limit at 65535 */ In order to update the ld/st*_pci_dma() API to pass the address of the value to access, it is simpler to have the head/tail declared as 32-bit values. Replace the uint16_t by uint32_t, wasting 4 bytes in the MegasasState structure. Acked-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/scsi/megasas.c | 4 ++-- hw/scsi/trace-events | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index 87101705d01..266c3d38003 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -109,8 +109,8 @@ struct MegasasState { uint64_t reply_queue_pa; void *reply_queue; uint16_t reply_queue_len; - uint16_t reply_queue_head; - uint16_t reply_queue_tail; + uint32_t reply_queue_head; + uint32_t reply_queue_tail; uint64_t consumer_pa; uint64_t producer_pa; =20 diff --git a/hw/scsi/trace-events b/hw/scsi/trace-events index 92d5b40f892..ae8551f2797 100644 --- a/hw/scsi/trace-events +++ b/hw/scsi/trace-events @@ -42,18 +42,18 @@ mptsas_config_sas_phy(void *dev, int address, int port,= int phy_handle, int dev_ =20 # megasas.c megasas_init_firmware(uint64_t pa) "pa 0x%" PRIx64 " " -megasas_init_queue(uint64_t queue_pa, int queue_len, uint64_t head, uint64= _t tail, uint32_t flags) "queue at 0x%" PRIx64 " len %d head 0x%" PRIx64 " = tail 0x%" PRIx64 " flags 0x%x" +megasas_init_queue(uint64_t queue_pa, int queue_len, uint32_t head, uint32= _t tail, uint32_t flags) "queue at 0x%" PRIx64 " len %d head 0x%" PRIx32 " = tail 0x%" PRIx32 " flags 0x%x" megasas_initq_map_failed(int frame) "scmd %d: failed to map queue" megasas_initq_mapped(uint64_t pa) "queue already mapped at 0x%" PRIx64 megasas_initq_mismatch(int queue_len, int fw_cmds) "queue size %d max fw c= mds %d" megasas_qf_mapped(unsigned int index) "skip mapped frame 0x%x" megasas_qf_new(unsigned int index, uint64_t frame) "frame 0x%x addr 0x%" P= RIx64 megasas_qf_busy(unsigned long pa) "all frames busy for frame 0x%lx" -megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t contex= t, unsigned int head, unsigned int tail, int busy) "frame 0x%x count %d con= text 0x%" PRIx64 " head 0x%x tail 0x%x busy %d" -megasas_qf_update(unsigned int head, unsigned int tail, unsigned int busy)= "head 0x%x tail 0x%x busy %d" +megasas_qf_enqueue(unsigned int index, unsigned int count, uint64_t contex= t, uint32_t head, uint32_t tail, unsigned int busy) "frame 0x%x count %d co= ntext 0x%" PRIx64 " head 0x%" PRIx32 " tail 0x%" PRIx32 " busy %u" +megasas_qf_update(uint32_t head, uint32_t tail, unsigned int busy) "head 0= x%" PRIx32 " tail 0x%" PRIx32 " busy %u" megasas_qf_map_failed(int cmd, unsigned long frame) "scmd %d: frame %lu" megasas_qf_complete_noirq(uint64_t context) "context 0x%" PRIx64 " " -megasas_qf_complete(uint64_t context, unsigned int head, unsigned int tail= , int busy) "context 0x%" PRIx64 " head 0x%x tail 0x%x busy %d" +megasas_qf_complete(uint64_t context, uint32_t head, uint32_t tail, int bu= sy) "context 0x%" PRIx64 " head 0x%" PRIx32 " tail 0x%" PRIx32 " busy %u" megasas_frame_busy(uint64_t addr) "frame 0x%" PRIx64 " busy" megasas_unhandled_frame_cmd(int cmd, uint8_t frame_cmd) "scmd %d: MFI cmd = 0x%x" megasas_handle_scsi(const char *frame, int bus, int dev, int lun, void *sd= ev, unsigned long size) "%s dev %x/%x/%x sdev %p xfer %lu" --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260836; cv=none; d=zohomail.com; s=zohoarc; b=P+62R3pKkYSm/CuMML0vm0x9Ejk2nXCnZki9Hm+H4I5Rhq3bGytVL/RYeQ2RNXhzvF95/nFxKkaiSyzLoMdJhsTnFtW2W+eq71U3onXgq9puCgCZrSU38b2pXFKo/F/4af+zRbBtmewywKF8oMxfFhQy+2g+jYxoDrynm898OkE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260836; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=9pReE1QJ5vxBRMRDloIuGc8yeeo3MgjkQ39UWuGBPOY=; b=gj3A9a3VM30XyeWC8maCCvp9GXxi1tVyNmkBfox1I3nTTa1p7fQLPmw6v78P8hPJdSnkx3dR/MqFomzSnOaRX+fyTs5Y0HpG+O9y++GY81b4VKkPrV8Sk2WtNyLSqgZfeii/fW4SYfvpjMeZSgFxNfxujGZWcnGJ+AZ4ZzQ2YPI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260836632667.2408646217156; Thu, 23 Dec 2021 04:00:36 -0800 (PST) Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-670-OI3_NMJyP9ihisTSqPOOnA-1; Thu, 23 Dec 2021 07:00:34 -0500 Received: by mail-wm1-f69.google.com with SMTP id v190-20020a1cacc7000000b003456d598510so4547391wme.6 for ; Thu, 23 Dec 2021 04:00:34 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id w6sm4601783wrs.52.2021.12.23.04.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:00:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260835; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9pReE1QJ5vxBRMRDloIuGc8yeeo3MgjkQ39UWuGBPOY=; b=RBwwbjlhFo+Q8shguLRHnCtBBxMHErq1LNDudc98l91R8K4EtCzDlzg618Cj8sQwJep2YC GYVJoHypiA5ShOC2ytSiKGbDlXu1Wd+iFKlxhK1SzSzPwe1gEp8wbP54nFtdmrX98n2nMe etEhacYE2HAFiw3tfGiG6vCNsCYC1r4= X-MC-Unique: OI3_NMJyP9ihisTSqPOOnA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9pReE1QJ5vxBRMRDloIuGc8yeeo3MgjkQ39UWuGBPOY=; b=X5ceHh752XJndApiYroEALbBpx0To3WhpS2/jr/9Di4EcxxIneP/NoxAt9g4ITzBKC XIkNRPzHdPxxCSgI8NpPTfW5jxsdLYyLRvk3RDqImbp2NzKCDRulcObFgejJIie6DuI1 JOBn+s6q4VzAQZq1cn2fIM2TkWYSUy0Xvg5QjiHWt95tIfsFDvY7ehnfEg/5PmUWaG1e oQI6+uaW4norwdBHj3HIl3n7oKli6DE1RFJaP45ZQ9p6DScIiQSXkKy2LbMIVCm9+sC0 S/3YFVhtXEQ/FLUDAqIqjMAJUGvJdyjsThFdVoEKWofsOKE78KI/xE55UsOIaYP9mipb dhjw== X-Gm-Message-State: AOAM5338RRRoSRb88EXg22F1oia6mkl8fNEi2knJ3297AXIR+wQotnei az3s1Z7NwUfOi1KO22wntMr5HDG1gPLFoWd50hFL+9Tc3s1MNE9YdzHEFkthc+9i7y5FqUhR/PS T9mQ3juNmfIHXOw== X-Received: by 2002:a05:6000:1787:: with SMTP id e7mr1584926wrg.31.1640260832810; Thu, 23 Dec 2021 04:00:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJw/DQ1hWR9qyFgUiRX1uFPfeDojVvudgj5ZvN6Va5wfFpZgZ/IESAYpz2iKee/YDWNEagse0A== X-Received: by 2002:a05:6000:1787:: with SMTP id e7mr1584902wrg.31.1640260832570; Thu, 23 Dec 2021 04:00:32 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 20/23] pci: Let st*_pci_dma() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:51 +0100 Message-Id: <20211223115554.3155328-21-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260837141100001 Let devices specify transaction attributes when calling st*_pci_dma(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 11 ++++++----- hw/audio/intel-hda.c | 10 ++++++---- hw/net/eepro100.c | 29 ++++++++++++++++++----------- hw/net/tulip.c | 18 ++++++++++-------- hw/scsi/megasas.c | 15 ++++++++++----- hw/scsi/vmw_pvscsi.c | 3 ++- 6 files changed, 52 insertions(+), 34 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 8c5f2ed5054..9f51ef2c3c2 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -859,11 +859,12 @@ static inline MemTxResult pci_dma_write(PCIDevice *de= v, dma_addr_t addr, MEMTXATTRS_UNSPECIFIED); \ return val; \ } \ - static inline void st##_s##_pci_dma(PCIDevice *dev, \ - dma_addr_t addr, uint##_bits##_t v= al) \ - { \ - st##_s##_dma(pci_get_address_space(dev), addr, val, \ - MEMTXATTRS_UNSPECIFIED); \ + static inline void st##_s##_pci_dma(PCIDevice *dev, \ + dma_addr_t addr, \ + uint##_bits##_t val, \ + MemTxAttrs attrs) \ + { \ + st##_s##_dma(pci_get_address_space(dev), addr, val, attrs); \ } =20 PCI_DMA_DEFINE_LDST(ub, b, 8); diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index fb3d34a4a0c..3309ae0ea18 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -345,6 +345,7 @@ static void intel_hda_corb_run(IntelHDAState *d) =20 static void intel_hda_response(HDACodecDevice *dev, bool solicited, uint32= _t response) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; HDACodecBus *bus =3D HDA_BUS(dev->qdev.parent_bus); IntelHDAState *d =3D container_of(bus, IntelHDAState, codecs); hwaddr addr; @@ -367,8 +368,8 @@ static void intel_hda_response(HDACodecDevice *dev, boo= l solicited, uint32_t res ex =3D (solicited ? 0 : (1 << 4)) | dev->cad; wp =3D (d->rirb_wp + 1) & 0xff; addr =3D intel_hda_addr(d->rirb_lbase, d->rirb_ubase); - stl_le_pci_dma(&d->pci, addr + 8*wp, response); - stl_le_pci_dma(&d->pci, addr + 8*wp + 4, ex); + stl_le_pci_dma(&d->pci, addr + 8 * wp, response, attrs); + stl_le_pci_dma(&d->pci, addr + 8 * wp + 4, ex, attrs); d->rirb_wp =3D wp; =20 dprint(d, 2, "%s: [wp 0x%x] response 0x%x, extra 0x%x\n", @@ -394,6 +395,7 @@ static void intel_hda_response(HDACodecDevice *dev, boo= l solicited, uint32_t res static bool intel_hda_xfer(HDACodecDevice *dev, uint32_t stnr, bool output, uint8_t *buf, uint32_t len) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; HDACodecBus *bus =3D HDA_BUS(dev->qdev.parent_bus); IntelHDAState *d =3D container_of(bus, IntelHDAState, codecs); hwaddr addr; @@ -428,7 +430,7 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_= t stnr, bool output, st->be, st->bp, st->bpl[st->be].len, copy); =20 pci_dma_rw(&d->pci, st->bpl[st->be].addr + st->bp, buf, copy, !out= put, - MEMTXATTRS_UNSPECIFIED); + attrs); st->lpib +=3D copy; st->bp +=3D copy; buf +=3D copy; @@ -451,7 +453,7 @@ static bool intel_hda_xfer(HDACodecDevice *dev, uint32_= t stnr, bool output, if (d->dp_lbase & 0x01) { s =3D st - d->st; addr =3D intel_hda_addr(d->dp_lbase & ~0x01, d->dp_ubase); - stl_le_pci_dma(&d->pci, addr + 8*s, st->lpib); + stl_le_pci_dma(&d->pci, addr + 8 * s, st->lpib, attrs); } dprint(d, 3, "dma: --\n"); =20 diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index 16e95ef9cc9..83c4431b1ad 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -700,6 +700,8 @@ static void set_ru_state(EEPRO100State * s, ru_state_t = state) =20 static void dump_statistics(EEPRO100State * s) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; + /* Dump statistical data. Most data is never changed by the emulation * and always 0, so we first just copy the whole block and then those * values which really matter. @@ -707,16 +709,18 @@ static void dump_statistics(EEPRO100State * s) */ pci_dma_write(&s->dev, s->statsaddr, &s->statistics, s->stats_size); stl_le_pci_dma(&s->dev, s->statsaddr + 0, - s->statistics.tx_good_frames); + s->statistics.tx_good_frames, attrs); stl_le_pci_dma(&s->dev, s->statsaddr + 36, - s->statistics.rx_good_frames); + s->statistics.rx_good_frames, attrs); stl_le_pci_dma(&s->dev, s->statsaddr + 48, - s->statistics.rx_resource_errors); + s->statistics.rx_resource_errors, attrs); stl_le_pci_dma(&s->dev, s->statsaddr + 60, - s->statistics.rx_short_frame_errors); + s->statistics.rx_short_frame_errors, attrs); #if 0 - stw_le_pci_dma(&s->dev, s->statsaddr + 76, s->statistics.xmt_tco_frame= s); - stw_le_pci_dma(&s->dev, s->statsaddr + 78, s->statistics.rcv_tco_frame= s); + stw_le_pci_dma(&s->dev, s->statsaddr + 76, + s->statistics.xmt_tco_frames, attrs); + stw_le_pci_dma(&s->dev, s->statsaddr + 78, + s->statistics.rcv_tco_frames, attrs); missing("CU dump statistical counters"); #endif } @@ -833,6 +837,7 @@ static void set_multicast_list(EEPRO100State *s) =20 static void action_command(EEPRO100State *s) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; /* The loop below won't stop if it gets special handcrafted data. Therefore we limit the number of iterations. */ unsigned max_loop_count =3D 16; @@ -911,7 +916,7 @@ static void action_command(EEPRO100State *s) } /* Write new status. */ stw_le_pci_dma(&s->dev, s->cb_address, - s->tx.status | ok_status | STATUS_C); + s->tx.status | ok_status | STATUS_C, attrs); if (bit_i) { /* CU completed action. */ eepro100_cx_interrupt(s); @@ -937,6 +942,7 @@ static void action_command(EEPRO100State *s) =20 static void eepro100_cu_command(EEPRO100State * s, uint8_t val) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; cu_state_t cu_state; switch (val) { case CU_NOP: @@ -986,7 +992,7 @@ static void eepro100_cu_command(EEPRO100State * s, uint= 8_t val) /* Dump statistical counters. */ TRACE(OTHER, logout("val=3D0x%02x (dump stats)\n", val)); dump_statistics(s); - stl_le_pci_dma(&s->dev, s->statsaddr + s->stats_size, 0xa005); + stl_le_pci_dma(&s->dev, s->statsaddr + s->stats_size, 0xa005, attr= s); break; case CU_CMD_BASE: /* Load CU base. */ @@ -997,7 +1003,7 @@ static void eepro100_cu_command(EEPRO100State * s, uin= t8_t val) /* Dump and reset statistical counters. */ TRACE(OTHER, logout("val=3D0x%02x (dump stats and reset)\n", val)); dump_statistics(s); - stl_le_pci_dma(&s->dev, s->statsaddr + s->stats_size, 0xa007); + stl_le_pci_dma(&s->dev, s->statsaddr + s->stats_size, 0xa007, attr= s); memset(&s->statistics, 0, sizeof(s->statistics)); break; case CU_SRESUME: @@ -1612,6 +1618,7 @@ static ssize_t nic_receive(NetClientState *nc, const = uint8_t * buf, size_t size) * - Magic packets should set bit 30 in power management driver regist= er. * - Interesting packets should set bit 29 in power management driver = register. */ + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; EEPRO100State *s =3D qemu_get_nic_opaque(nc); uint16_t rfd_status =3D 0xa000; #if defined(CONFIG_PAD_RECEIVED_FRAMES) @@ -1726,9 +1733,9 @@ static ssize_t nic_receive(NetClientState *nc, const = uint8_t * buf, size_t size) TRACE(OTHER, logout("command 0x%04x, link 0x%08x, addr 0x%08x, size %u= \n", rfd_command, rx.link, rx.rx_buf_addr, rfd_size)); stw_le_pci_dma(&s->dev, s->ru_base + s->ru_offset + - offsetof(eepro100_rx_t, status), rfd_status); + offsetof(eepro100_rx_t, status), rfd_status, attrs); stw_le_pci_dma(&s->dev, s->ru_base + s->ru_offset + - offsetof(eepro100_rx_t, count), size); + offsetof(eepro100_rx_t, count), size, attrs); /* Early receive interrupt not supported. */ #if 0 eepro100_er_interrupt(s); diff --git a/hw/net/tulip.c b/hw/net/tulip.c index ca69f7ea5e1..1f2c79dd58b 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -86,16 +86,18 @@ static void tulip_desc_read(TULIPState *s, hwaddr p, static void tulip_desc_write(TULIPState *s, hwaddr p, struct tulip_descriptor *desc) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; + if (s->csr[0] & CSR0_DBO) { - stl_be_pci_dma(&s->dev, p, desc->status); - stl_be_pci_dma(&s->dev, p + 4, desc->control); - stl_be_pci_dma(&s->dev, p + 8, desc->buf_addr1); - stl_be_pci_dma(&s->dev, p + 12, desc->buf_addr2); + stl_be_pci_dma(&s->dev, p, desc->status, attrs); + stl_be_pci_dma(&s->dev, p + 4, desc->control, attrs); + stl_be_pci_dma(&s->dev, p + 8, desc->buf_addr1, attrs); + stl_be_pci_dma(&s->dev, p + 12, desc->buf_addr2, attrs); } else { - stl_le_pci_dma(&s->dev, p, desc->status); - stl_le_pci_dma(&s->dev, p + 4, desc->control); - stl_le_pci_dma(&s->dev, p + 8, desc->buf_addr1); - stl_le_pci_dma(&s->dev, p + 12, desc->buf_addr2); + stl_le_pci_dma(&s->dev, p, desc->status, attrs); + stl_le_pci_dma(&s->dev, p + 4, desc->control, attrs); + stl_le_pci_dma(&s->dev, p + 8, desc->buf_addr1, attrs); + stl_le_pci_dma(&s->dev, p + 12, desc->buf_addr2, attrs); } } =20 diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index 266c3d38003..65451d34e64 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -168,14 +168,16 @@ static void megasas_frame_set_cmd_status(MegasasState= *s, unsigned long frame, uint8_t v) { PCIDevice *pci =3D &s->parent_obj; - stb_pci_dma(pci, frame + offsetof(struct mfi_frame_header, cmd_status)= , v); + stb_pci_dma(pci, frame + offsetof(struct mfi_frame_header, cmd_status), + v, MEMTXATTRS_UNSPECIFIED); } =20 static void megasas_frame_set_scsi_status(MegasasState *s, unsigned long frame, uint8_t v) { PCIDevice *pci =3D &s->parent_obj; - stb_pci_dma(pci, frame + offsetof(struct mfi_frame_header, scsi_status= ), v); + stb_pci_dma(pci, frame + offsetof(struct mfi_frame_header, scsi_status= ), + v, MEMTXATTRS_UNSPECIFIED); } =20 static inline const char *mfi_frame_desc(unsigned int cmd) @@ -542,6 +544,7 @@ static MegasasCmd *megasas_enqueue_frame(MegasasState *= s, =20 static void megasas_complete_frame(MegasasState *s, uint64_t context) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; PCIDevice *pci_dev =3D PCI_DEVICE(s); int tail, queue_offset; =20 @@ -555,10 +558,12 @@ static void megasas_complete_frame(MegasasState *s, u= int64_t context) */ if (megasas_use_queue64(s)) { queue_offset =3D s->reply_queue_head * sizeof(uint64_t); - stq_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, cont= ext); + stq_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, + context, attrs); } else { queue_offset =3D s->reply_queue_head * sizeof(uint32_t); - stl_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, cont= ext); + stl_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, + context, attrs); } s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa); trace_megasas_qf_complete(context, s->reply_queue_head, @@ -572,7 +577,7 @@ static void megasas_complete_frame(MegasasState *s, uin= t64_t context) s->reply_queue_head =3D megasas_next_index(s, tail, s->fw_cmds); trace_megasas_qf_update(s->reply_queue_head, s->reply_queue_tail, s->busy); - stl_le_pci_dma(pci_dev, s->producer_pa, s->reply_queue_head); + stl_le_pci_dma(pci_dev, s->producer_pa, s->reply_queue_head, attrs= ); /* Notify HBA */ if (msix_enabled(pci_dev)) { trace_megasas_msix_raise(0); diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index cd76bd67ab7..59c3e8ba048 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -55,7 +55,8 @@ (m)->rs_pa + offsetof(struct PVSCSIRingsState, field))) #define RS_SET_FIELD(m, field, val) \ (stl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ - (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), va= l)) + (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), va= l, \ + MEMTXATTRS_UNSPECIFIED)) =20 struct PVSCSIClass { PCIDeviceClass parent_class; --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260852; cv=none; d=zohomail.com; s=zohoarc; b=Gw4UaEUkabQhS2m8m9hRJiX07ZoYSVy69xK8T9ELssPt/pFU8dgDbTWZ0eDY/z5aUyW5dF60zUxhWCoTHSod9HFvOBvlBjMuzW/sSFM6S6ZzGTPhvkPofge6hlKEh0lBtAjXw6huZ3vFRFlFXFa1SZOeXlR2c0vot7uPjQv/mXs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260852; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=DBPP1EiSKr7NPlc65W5DPicfsUwIYcUriP04xIPwWVo=; b=KECMQwfISP5ARoqYvsYmt8bSIAquqKqYj8hLARdQjAFtDvl86EcKoRdrkC2xcpXUQ1eZf5d0qGG6rNakBDWPsojtMK48/K6JHiCR/mHlmcAxwu8XXaYZPpKW+iCyAsQoDFrmKgJsKU/q8D1HZUJEcF4OsakT1O8KQHEyfpWrakk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 1640260852282369.449267879005; Thu, 23 Dec 2021 04:00:52 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-359-IeAKELJ6PiKuaD2FmCtPSw-1; Thu, 23 Dec 2021 07:00:49 -0500 Received: by mail-wm1-f70.google.com with SMTP id 187-20020a1c02c4000000b003335872db8dso1945140wmc.2 for ; Thu, 23 Dec 2021 04:00:49 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id x8sm7654513wmj.44.2021.12.23.04.00.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:00:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260850; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DBPP1EiSKr7NPlc65W5DPicfsUwIYcUriP04xIPwWVo=; b=MCh29Bj6cjjau2vtFk7n3he4WvZYVUpopjYyVwl16FDCcg6srlFlOGvBJEBwXPjJyc73C8 uXwASYLia8xNPZVbVht2nO9T2Qd6y6T0hOSsYFc04NjcxBlRQ9xyZs/EwRFwiI2naxIQaF x8IIdX/Amany+jUp22vxj9TpEiTYRSI= X-MC-Unique: IeAKELJ6PiKuaD2FmCtPSw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=DBPP1EiSKr7NPlc65W5DPicfsUwIYcUriP04xIPwWVo=; b=mAXvCS2GuBSTrsezu8e3D1uHzq8XDRpptWZAjEAZmk5gUzH7pgSYhC4dHemhPg6vqE l/BDemoyDnB7d3ilRj/WlymaFqXtRtiyhY7HedRgB7xGF3cIqklvUJRNiYGsIdjyl5vB uZlVsa2UBsIXlGDDO8EU1CD1ns2ERZ/1W0YN2VBZPs1I+rzGI5096bMrlOLtEmp0aABj Xedn3+oYgtoU/VDWq4mIajIcZdcAH/2F1pWYKT6L9JChOKXyaekTE4IzIZHrE7cWlN1a g7rwYvTEisEKix54jzOzTQZdDllridpIIYw+fsnwAm9i0XimQJur8xCyXW2sEutkuIzm n3dw== X-Gm-Message-State: AOAM532lNQNLAe/Hm74y5K32DmiOC9X90weX/5XNg/vZYWpEkUQ0u2lG 3HxPOdxZ9kxytWNVBqxQACPH7uH7mLnCWm3MQw7ciRjRAteTWpW4+YF7YKY0nmF74hIyXApMdWa LUx0+ZDAFswcwxw== X-Received: by 2002:adf:d841:: with SMTP id k1mr1632763wrl.396.1640260848370; Thu, 23 Dec 2021 04:00:48 -0800 (PST) X-Google-Smtp-Source: ABdhPJx3x4bEjyITPOZYC9xFTlLr/8oRH55HegaMaa82awicTJ93Fzb1rX+4CUPeSc+/f+NROOKS2g== X-Received: by 2002:adf:d841:: with SMTP id k1mr1632747wrl.396.1640260848169; Thu, 23 Dec 2021 04:00:48 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 21/23] pci: Let ld*_pci_dma() take MemTxAttrs argument Date: Thu, 23 Dec 2021 12:55:52 +0100 Message-Id: <20211223115554.3155328-22-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260854654100001 Let devices specify transaction attributes when calling ld*_pci_dma(). Keep the default MEMTXATTRS_UNSPECIFIED in the few callers. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 6 +++--- hw/audio/intel-hda.c | 2 +- hw/net/eepro100.c | 19 +++++++++++++------ hw/net/tulip.c | 18 ++++++++++-------- hw/scsi/megasas.c | 16 ++++++++++------ hw/scsi/mptsas.c | 10 ++++++---- hw/scsi/vmw_pvscsi.c | 3 ++- hw/usb/hcd-xhci.c | 1 + 8 files changed, 46 insertions(+), 29 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 9f51ef2c3c2..7a46c1fa226 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -852,11 +852,11 @@ static inline MemTxResult pci_dma_write(PCIDevice *de= v, dma_addr_t addr, =20 #define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ static inline uint##_bits##_t ld##_l##_pci_dma(PCIDevice *dev, \ - dma_addr_t addr) \ + dma_addr_t addr, \ + MemTxAttrs attrs) \ { \ uint##_bits##_t val; \ - ld##_l##_dma(pci_get_address_space(dev), addr, &val, \ - MEMTXATTRS_UNSPECIFIED); \ + ld##_l##_dma(pci_get_address_space(dev), addr, &val, attrs); \ return val; \ } \ static inline void st##_s##_pci_dma(PCIDevice *dev, \ diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index 3309ae0ea18..e34b7ab0e92 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -335,7 +335,7 @@ static void intel_hda_corb_run(IntelHDAState *d) =20 rp =3D (d->corb_rp + 1) & 0xff; addr =3D intel_hda_addr(d->corb_lbase, d->corb_ubase); - verb =3D ldl_le_pci_dma(&d->pci, addr + 4*rp); + verb =3D ldl_le_pci_dma(&d->pci, addr + 4 * rp, MEMTXATTRS_UNSPECI= FIED); d->corb_rp =3D rp; =20 dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __func__, rp, verb); diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index 83c4431b1ad..eb82e9cb118 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -737,6 +737,7 @@ static void read_cb(EEPRO100State *s) =20 static void tx_command(EEPRO100State *s) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; uint32_t tbd_array =3D s->tx.tbd_array_addr; uint16_t tcb_bytes =3D s->tx.tcb_bytes & 0x3fff; /* Sends larger than MAX_ETH_FRAME_SIZE are allowed, up to 2600 bytes.= */ @@ -772,11 +773,14 @@ static void tx_command(EEPRO100State *s) /* Extended Flexible TCB. */ for (; tbd_count < 2; tbd_count++) { uint32_t tx_buffer_address =3D ldl_le_pci_dma(&s->dev, - tbd_address); + tbd_address, + attrs); uint16_t tx_buffer_size =3D lduw_le_pci_dma(&s->dev, - tbd_address + 4); + tbd_address + 4, + attrs); uint16_t tx_buffer_el =3D lduw_le_pci_dma(&s->dev, - tbd_address + 6); + tbd_address + 6, + attrs); tbd_address +=3D 8; TRACE(RXTX, logout ("TBD (extended flexible mode): buffer address 0x%08x,= size 0x%04x\n", @@ -792,9 +796,12 @@ static void tx_command(EEPRO100State *s) } tbd_address =3D tbd_array; for (; tbd_count < s->tx.tbd_count; tbd_count++) { - uint32_t tx_buffer_address =3D ldl_le_pci_dma(&s->dev, tbd_add= ress); - uint16_t tx_buffer_size =3D lduw_le_pci_dma(&s->dev, tbd_addre= ss + 4); - uint16_t tx_buffer_el =3D lduw_le_pci_dma(&s->dev, tbd_address= + 6); + uint32_t tx_buffer_address =3D ldl_le_pci_dma(&s->dev, tbd_add= ress, + attrs); + uint16_t tx_buffer_size =3D lduw_le_pci_dma(&s->dev, tbd_addre= ss + 4, + attrs); + uint16_t tx_buffer_el =3D lduw_le_pci_dma(&s->dev, tbd_address= + 6, + attrs); tbd_address +=3D 8; TRACE(RXTX, logout ("TBD (flexible mode): buffer address 0x%08x, size 0x%04x\= n", diff --git a/hw/net/tulip.c b/hw/net/tulip.c index 1f2c79dd58b..c76e4868f73 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -70,16 +70,18 @@ static const VMStateDescription vmstate_pci_tulip =3D { static void tulip_desc_read(TULIPState *s, hwaddr p, struct tulip_descriptor *desc) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; + if (s->csr[0] & CSR0_DBO) { - desc->status =3D ldl_be_pci_dma(&s->dev, p); - desc->control =3D ldl_be_pci_dma(&s->dev, p + 4); - desc->buf_addr1 =3D ldl_be_pci_dma(&s->dev, p + 8); - desc->buf_addr2 =3D ldl_be_pci_dma(&s->dev, p + 12); + desc->status =3D ldl_be_pci_dma(&s->dev, p, attrs); + desc->control =3D ldl_be_pci_dma(&s->dev, p + 4, attrs); + desc->buf_addr1 =3D ldl_be_pci_dma(&s->dev, p + 8, attrs); + desc->buf_addr2 =3D ldl_be_pci_dma(&s->dev, p + 12, attrs); } else { - desc->status =3D ldl_le_pci_dma(&s->dev, p); - desc->control =3D ldl_le_pci_dma(&s->dev, p + 4); - desc->buf_addr1 =3D ldl_le_pci_dma(&s->dev, p + 8); - desc->buf_addr2 =3D ldl_le_pci_dma(&s->dev, p + 12); + desc->status =3D ldl_le_pci_dma(&s->dev, p, attrs); + desc->control =3D ldl_le_pci_dma(&s->dev, p + 4, attrs); + desc->buf_addr1 =3D ldl_le_pci_dma(&s->dev, p + 8, attrs); + desc->buf_addr2 =3D ldl_le_pci_dma(&s->dev, p + 12, attrs); } } =20 diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index 65451d34e64..f93c34c4201 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -202,7 +202,9 @@ static uint64_t megasas_frame_get_context(MegasasState = *s, unsigned long frame) { PCIDevice *pci =3D &s->parent_obj; - return ldq_le_pci_dma(pci, frame + offsetof(struct mfi_frame_header, c= ontext)); + return ldq_le_pci_dma(pci, + frame + offsetof(struct mfi_frame_header, contex= t), + MEMTXATTRS_UNSPECIFIED); } =20 static bool megasas_frame_is_ieee_sgl(MegasasCmd *cmd) @@ -534,7 +536,8 @@ static MegasasCmd *megasas_enqueue_frame(MegasasState *= s, s->busy++; =20 if (s->consumer_pa) { - s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa); + s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa, + MEMTXATTRS_UNSPECIFIED); } trace_megasas_qf_enqueue(cmd->index, cmd->count, cmd->context, s->reply_queue_head, s->reply_queue_tail, s->= busy); @@ -565,14 +568,14 @@ static void megasas_complete_frame(MegasasState *s, u= int64_t context) stl_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, context, attrs); } - s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa); + s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa, at= trs); trace_megasas_qf_complete(context, s->reply_queue_head, s->reply_queue_tail, s->busy); } =20 if (megasas_intr_enabled(s)) { /* Update reply queue pointer */ - s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa); + s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa, at= trs); tail =3D s->reply_queue_head; s->reply_queue_head =3D megasas_next_index(s, tail, s->fw_cmds); trace_megasas_qf_update(s->reply_queue_head, s->reply_queue_tail, @@ -637,6 +640,7 @@ static void megasas_abort_command(MegasasCmd *cmd) =20 static int megasas_init_firmware(MegasasState *s, MegasasCmd *cmd) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; PCIDevice *pcid =3D PCI_DEVICE(s); uint32_t pa_hi, pa_lo; hwaddr iq_pa, initq_size =3D sizeof(struct mfi_init_qinfo); @@ -675,9 +679,9 @@ static int megasas_init_firmware(MegasasState *s, Megas= asCmd *cmd) pa_lo =3D le32_to_cpu(initq->pi_addr_lo); pa_hi =3D le32_to_cpu(initq->pi_addr_hi); s->producer_pa =3D ((uint64_t) pa_hi << 32) | pa_lo; - s->reply_queue_head =3D ldl_le_pci_dma(pcid, s->producer_pa); + s->reply_queue_head =3D ldl_le_pci_dma(pcid, s->producer_pa, attrs); s->reply_queue_head %=3D MEGASAS_MAX_FRAMES; - s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa); + s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa, attrs); s->reply_queue_tail %=3D MEGASAS_MAX_FRAMES; flags =3D le32_to_cpu(initq->flags); if (flags & MFI_QUEUE_FLAG_CONTEXT64) { diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index f6c77655443..ac9f4dfcd2a 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -172,14 +172,15 @@ static const int mpi_request_sizes[] =3D { static dma_addr_t mptsas_ld_sg_base(MPTSASState *s, uint32_t flags_and_len= gth, dma_addr_t *sgaddr) { + const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; PCIDevice *pci =3D (PCIDevice *) s; dma_addr_t addr; =20 if (flags_and_length & MPI_SGE_FLAGS_64_BIT_ADDRESSING) { - addr =3D ldq_le_pci_dma(pci, *sgaddr + 4); + addr =3D ldq_le_pci_dma(pci, *sgaddr + 4, attrs); *sgaddr +=3D 12; } else { - addr =3D ldl_le_pci_dma(pci, *sgaddr + 4); + addr =3D ldl_le_pci_dma(pci, *sgaddr + 4, attrs); *sgaddr +=3D 8; } return addr; @@ -203,7 +204,7 @@ static int mptsas_build_sgl(MPTSASState *s, MPTSASReque= st *req, hwaddr addr) dma_addr_t addr, len; uint32_t flags_and_length; =20 - flags_and_length =3D ldl_le_pci_dma(pci, sgaddr); + flags_and_length =3D ldl_le_pci_dma(pci, sgaddr, MEMTXATTRS_UNSPEC= IFIED); len =3D flags_and_length & MPI_SGE_LENGTH_MASK; if ((flags_and_length & MPI_SGE_FLAGS_ELEMENT_TYPE_MASK) !=3D MPI_SGE_FLAGS_SIMPLE_ELEMENT || @@ -234,7 +235,8 @@ static int mptsas_build_sgl(MPTSASState *s, MPTSASReque= st *req, hwaddr addr) break; } =20 - flags_and_length =3D ldl_le_pci_dma(pci, next_chain_addr); + flags_and_length =3D ldl_le_pci_dma(pci, next_chain_addr, + MEMTXATTRS_UNSPECIFIED); if ((flags_and_length & MPI_SGE_FLAGS_ELEMENT_TYPE_MASK) !=3D MPI_SGE_FLAGS_CHAIN_ELEMENT) { return MPI_IOCSTATUS_INVALID_SGL; diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index 59c3e8ba048..33e16f91116 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -52,7 +52,8 @@ =20 #define RS_GET_FIELD(m, field) \ (ldl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ - (m)->rs_pa + offsetof(struct PVSCSIRingsState, field))) + (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), \ + MEMTXATTRS_UNSPECIFIED)) #define RS_SET_FIELD(m, field, val) \ (stl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), va= l, \ diff --git a/hw/usb/hcd-xhci.c b/hw/usb/hcd-xhci.c index da5a4072107..14bdb896768 100644 --- a/hw/usb/hcd-xhci.c +++ b/hw/usb/hcd-xhci.c @@ -3440,6 +3440,7 @@ static int usb_xhci_post_load(void *opaque, int versi= on_id) } ldq_le_dma(xhci->as, dcbaap + 8 * slotid, &addr, MEMTXATTRS_UNSPEC= IFIED); slot->ctx =3D xhci_mask64(addr); + xhci_dma_read_u32s(xhci, slot->ctx, slot_ctx, sizeof(slot_ctx)); slot->uport =3D xhci_lookup_uport(xhci, slot_ctx); if (!slot->uport) { --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260865; cv=none; d=zohomail.com; s=zohoarc; b=GQdlmVrkdVx+oPC/dJutoSj+c4fOm59gDP7P8vwmrr5d9cY6frX40O6dTlSFXW/Kp5vTMutNft8CT8KvBPmKPfzn8aoVPkHNzqfxxOGfuxbxZnFT/f3CsTHDo0GTms/QPZTfvt5ObK+neqEYDItbM8TzqB8pgNaZ4mfc2Px9qCQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260865; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=Xe1vuKIn+V7zfO3YKXmpVrbFyeoxlWXQr1Mcr+LUv2s=; b=kJ+VnCvSM3w/o477gXoX2L+aGtm3+rp0aSxVM/+FnB1VaV9isu1y1qKik3JPIbpwVnG7cUj/8U6AWthYYlH0+DaxNddX/zUpxk5yYk0Mw7zyl2u7VskOL/Z+ubcneG+HujRJqaVLmWJG9wj0/SK6fwNZV4MuxcLSxAcuM6dGydk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1640260865551239.6540071420718; Thu, 23 Dec 2021 04:01:05 -0800 (PST) Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-88-3UqekWj0PPyJjN-KM5NHIA-1; Thu, 23 Dec 2021 07:01:03 -0500 Received: by mail-wm1-f72.google.com with SMTP id c5-20020a1c3505000000b00345c92c27c6so2342390wma.2 for ; Thu, 23 Dec 2021 04:01:02 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id l2sm4925992wrs.43.2021.12.23.04.00.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:01:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260864; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Xe1vuKIn+V7zfO3YKXmpVrbFyeoxlWXQr1Mcr+LUv2s=; b=OduHoNVKM5lUpZHODOYsMjk3X7aKJwtxxNnMoKozvh0wDjtY8lsfTQq32ToFqEZ8Xw6u0X ilV+jxdo0iTZbEARA7Sc2gMgZn8NDULNpKBL8p1fOIrVWSVNkADHCoEp/IwmhSnHfow4fK mWuNPFVfD0PmH2J56e00hUsolUiae6M= X-MC-Unique: 3UqekWj0PPyJjN-KM5NHIA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Xe1vuKIn+V7zfO3YKXmpVrbFyeoxlWXQr1Mcr+LUv2s=; b=TCa1qe5r8HpEmsejffVQCcVcrfsGiaSU0XCY1lnB2N3mGUsKzxgsop//z1CbKpk2J/ ZwMGfmMiKjBzY917NI/BTSaHo7Vh/Efz+YGwF9CalwrBpNoee8Qet9Qa+L5VtN3KRsvI N+OFMPsvProQ4RJ9Nhl80evrtZW80rWPRdgg4Qs4LBntaSbED1U3C0QvzAtArqRshJUb OfW9bcwDL6PXEQmPM/D2W8tTLtF82fFP66b2oOJirFjFnB31aw/THtcYakErHJS26WU2 /5s9RndnxG8cjUiVCBZW8DqYNXfknynQgWKjZXM5TiVh6ByunfMKftUfWzxuHmheXCYi eCRA== X-Gm-Message-State: AOAM530yCmCZ1jQws96qPWmcQ34suOC4gPNDD0qJHbdb6BPp85trqbtj UNwgtdLR8gF1ZNJF0+AulrhMbwZrcjYo21MRZpy6Rq6Zqsw3XCvlJVJeuz6+Kd8go7QqxUS9cDJ Ro9WR6uOGp283pg== X-Received: by 2002:a7b:cbc3:: with SMTP id n3mr1580214wmi.90.1640260861978; Thu, 23 Dec 2021 04:01:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJzlrOWfzUgzbU2x0aJm7EBIoyyeAl+mK7+LF+Bv/edFZaK9HYzsPmOF85+Vj2bXFjyAXF+glQ== X-Received: by 2002:a7b:cbc3:: with SMTP id n3mr1580192wmi.90.1640260861824; Thu, 23 Dec 2021 04:01:01 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 22/23] pci: Let st*_pci_dma() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:53 +0100 Message-Id: <20211223115554.3155328-23-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260866599100001 st*_dma() returns a MemTxResult type. Do not discard it, return it to the caller. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 7a46c1fa226..c90cecc85c0 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -859,12 +859,12 @@ static inline MemTxResult pci_dma_write(PCIDevice *de= v, dma_addr_t addr, ld##_l##_dma(pci_get_address_space(dev), addr, &val, attrs); \ return val; \ } \ - static inline void st##_s##_pci_dma(PCIDevice *dev, \ - dma_addr_t addr, \ - uint##_bits##_t val, \ - MemTxAttrs attrs) \ + static inline MemTxResult st##_s##_pci_dma(PCIDevice *dev, \ + dma_addr_t addr, \ + uint##_bits##_t val, \ + MemTxAttrs attrs) \ { \ - st##_s##_dma(pci_get_address_space(dev), addr, val, attrs); \ + return st##_s##_dma(pci_get_address_space(dev), addr, val, attrs);= \ } =20 PCI_DMA_DEFINE_LDST(ub, b, 8); --=20 2.33.1 From nobody Sun May 19 10:57:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) client-ip=170.10.129.124; envelope-from=philmd@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1640260879; cv=none; d=zohomail.com; s=zohoarc; b=nmhpsbS+kQc1Fz3LzrZgOLnLKCo9VYT2Qz22C8+Xob3kiB2eejHuaeMqNtsopQrI5d+RwCh5zXQrKwnI8ux0Mmdum9ekV+Glz0c0A2NZ8qc9/KmGhe9qFM03YnFjXh9CnRSj61YnfJm0wzATHsMF2YYiCgZib8zyATXlF3G9BUY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640260879; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=BZC8tfHy3WSbpiqDLZ5c3lPSNjnKLmWgO/7ewjz5hi0=; b=amg6ACgK2jXDaYl8tk0XBnAEDSone3rZk093vF1QukY4ddNWOsJwXc+Mr/YOedTjGwDKp7/38E0GWoLPH+3tGW5VE6fs86szQ+2vvY3tUDYI6uxdHrj7zKT3sICsV+FqHxyfG+lr46vs86jMFX6NHJdfMnSdKrpnmES/8pBlWMU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=philmd@redhat.com; dmarc=pass header.from= (p=none dis=none) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mx.zohomail.com with SMTPS id 164026087916936.50042825956632; Thu, 23 Dec 2021 04:01:19 -0800 (PST) Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-627-ASd_Jf0jPk6rD8zcl2ly0A-1; Thu, 23 Dec 2021 07:01:16 -0500 Received: by mail-wm1-f70.google.com with SMTP id b83-20020a1c1b56000000b0033283ea5facso2080421wmb.1 for ; Thu, 23 Dec 2021 04:01:16 -0800 (PST) Return-Path: Return-Path: Received: from x1w.. (33.red-193-152-124.dynamicip.rima-tde.net. [193.152.124.33]) by smtp.gmail.com with ESMTPSA id l36sm9514934wms.16.2021.12.23.04.01.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Dec 2021 04:01:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640260877; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=BZC8tfHy3WSbpiqDLZ5c3lPSNjnKLmWgO/7ewjz5hi0=; b=B63RWs09/XfwppEy1C0ifKv2CgXTDlKWTkQdowQsYlQ3X0gP6K64AaHgK1FDslYoAiZHbZ vnhql6gWa8g+hklhlO+JKqq3l1hgzxt2gG+OWeZrUYtFvJ1kChRVIuWvho38cvHoejEFWQ 4wAC/4l7cFFWKmVyYIkOxfGtdHRfklw= X-MC-Unique: ASd_Jf0jPk6rD8zcl2ly0A-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=BZC8tfHy3WSbpiqDLZ5c3lPSNjnKLmWgO/7ewjz5hi0=; b=cB8o5DyAOfDlJx7JbJtiDX/mg0CEqkNZNTtwawHD5sBMtFP1ggeqnvS+G1nV1tdbKu IymRFuK2cgaYnYvm0g73UoDYthikrqavcATvgswDERPtO+B11bEdwWNdboVtXrLpZWwv Oj3cUX6J6QtYKbub45rrawFPnGYYAe3Xw+W/Ns+BEgZq6nBuE8j+FbhVfRghkX9XxHjc DeNvAPMJ5jNrV/Do1Eh712Ri0P6oDxhY2ys9ldW9Z/GykDH+Z7RV5sFrj+9+ny/j06Y0 oIAusByFQXBWhNxIKr62g9t09l5Bc+HVEY/FO4NtmdEe3qo2oPa+8bJcv8ObX/PmRUgU ed6w== X-Gm-Message-State: AOAM5322RMX+qmOyqlxy9bVB7RiCfCycv7Uy/RYZGPvcu3gvcx8pmWbT y9T8XGTSMx67T1MkSccPSmUTVKY7RLg8AvaVYQhCxlC5mEi7A90hGZD9tzAySEaMKK5DLRw/J1d TDyKUZfNqYJkRRQ== X-Received: by 2002:a05:6000:1545:: with SMTP id 5mr1626661wry.438.1640260875212; Thu, 23 Dec 2021 04:01:15 -0800 (PST) X-Google-Smtp-Source: ABdhPJx0ZGZvRo+57kUsKr7pNjACll+XAsuQh5o8lCmPbYqhx5o13/FIG5gHw4WPtGn4YvKKzkquEw== X-Received: by 2002:a05:6000:1545:: with SMTP id 5mr1626638wry.438.1640260874931; Thu, 23 Dec 2021 04:01:14 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Joel Stanley , Richard Henderson , qemu-block@nongnu.org, Jason Wang , Keith Busch , "Michael S. Tsirkin" , Fam Zheng , Alistair Francis , David Hildenbrand , Eduardo Habkost , Havard Skinnemoen , Sven Schnelle , Tyrone Ting , Gerd Hoffmann , Peter Maydell , Beniamino Galvani , Daniel Henrique Barboza , Dmitry Fleytman , John Snow , Bin Meng , Greg Kurz , Eric Auger , Mark Cave-Ayland , "Edgar E. Iglesias" , Andrew Jeffery , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Marcel Apfelbaum , Andrew Baumann , Hannes Reinecke , Paolo Bonzini , Peter Xu , qemu-arm@nongnu.org, Klaus Jensen , Stefan Weil , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-ppc@nongnu.org, Jan Kiszka , David Gibson Subject: [PATCH v2 23/23] pci: Let ld*_pci_dma() propagate MemTxResult Date: Thu, 23 Dec 2021 12:55:54 +0100 Message-Id: <20211223115554.3155328-24-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211223115554.3155328-1-philmd@redhat.com> References: <20211223115554.3155328-1-philmd@redhat.com> MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=philmd@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1640260880323100001 ld*_dma() returns a MemTxResult type. Do not discard it, return it to the caller. Update the few callers. Reviewed-by: Richard Henderson Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/pci/pci.h | 17 ++++++++--------- hw/audio/intel-hda.c | 2 +- hw/net/eepro100.c | 25 ++++++++++--------------- hw/net/tulip.c | 16 ++++++++-------- hw/scsi/megasas.c | 21 ++++++++++++--------- hw/scsi/mptsas.c | 16 +++++++++++----- hw/scsi/vmw_pvscsi.c | 16 ++++++++++------ 7 files changed, 60 insertions(+), 53 deletions(-) diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index c90cecc85c0..5b36334a28a 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -850,15 +850,14 @@ static inline MemTxResult pci_dma_write(PCIDevice *de= v, dma_addr_t addr, DMA_DIRECTION_FROM_DEVICE, MEMTXATTRS_UNSPECIFIED); } =20 -#define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ - static inline uint##_bits##_t ld##_l##_pci_dma(PCIDevice *dev, \ - dma_addr_t addr, \ - MemTxAttrs attrs) \ - { \ - uint##_bits##_t val; \ - ld##_l##_dma(pci_get_address_space(dev), addr, &val, attrs); \ - return val; \ - } \ +#define PCI_DMA_DEFINE_LDST(_l, _s, _bits) \ + static inline MemTxResult ld##_l##_pci_dma(PCIDevice *dev, \ + dma_addr_t addr, \ + uint##_bits##_t *val, \ + MemTxAttrs attrs) \ + { \ + return ld##_l##_dma(pci_get_address_space(dev), addr, val, attrs);= \ + } \ static inline MemTxResult st##_s##_pci_dma(PCIDevice *dev, \ dma_addr_t addr, \ uint##_bits##_t val, \ diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c index e34b7ab0e92..2b55d521503 100644 --- a/hw/audio/intel-hda.c +++ b/hw/audio/intel-hda.c @@ -335,7 +335,7 @@ static void intel_hda_corb_run(IntelHDAState *d) =20 rp =3D (d->corb_rp + 1) & 0xff; addr =3D intel_hda_addr(d->corb_lbase, d->corb_ubase); - verb =3D ldl_le_pci_dma(&d->pci, addr + 4 * rp, MEMTXATTRS_UNSPECI= FIED); + ldl_le_pci_dma(&d->pci, addr + 4 * rp, &verb, MEMTXATTRS_UNSPECIFI= ED); d->corb_rp =3D rp; =20 dprint(d, 2, "%s: [rp 0x%x] verb 0x%08x\n", __func__, rp, verb); diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c index eb82e9cb118..679f52f80f1 100644 --- a/hw/net/eepro100.c +++ b/hw/net/eepro100.c @@ -769,18 +769,16 @@ static void tx_command(EEPRO100State *s) } else { /* Flexible mode. */ uint8_t tbd_count =3D 0; + uint32_t tx_buffer_address; + uint16_t tx_buffer_size; + uint16_t tx_buffer_el; + if (s->has_extended_tcb_support && !(s->configuration[6] & BIT(4))= ) { /* Extended Flexible TCB. */ for (; tbd_count < 2; tbd_count++) { - uint32_t tx_buffer_address =3D ldl_le_pci_dma(&s->dev, - tbd_address, - attrs); - uint16_t tx_buffer_size =3D lduw_le_pci_dma(&s->dev, - tbd_address + 4, - attrs); - uint16_t tx_buffer_el =3D lduw_le_pci_dma(&s->dev, - tbd_address + 6, - attrs); + ldl_le_pci_dma(&s->dev, tbd_address, &tx_buffer_address, a= ttrs); + lduw_le_pci_dma(&s->dev, tbd_address + 4, &tx_buffer_size,= attrs); + lduw_le_pci_dma(&s->dev, tbd_address + 6, &tx_buffer_el, a= ttrs); tbd_address +=3D 8; TRACE(RXTX, logout ("TBD (extended flexible mode): buffer address 0x%08x,= size 0x%04x\n", @@ -796,12 +794,9 @@ static void tx_command(EEPRO100State *s) } tbd_address =3D tbd_array; for (; tbd_count < s->tx.tbd_count; tbd_count++) { - uint32_t tx_buffer_address =3D ldl_le_pci_dma(&s->dev, tbd_add= ress, - attrs); - uint16_t tx_buffer_size =3D lduw_le_pci_dma(&s->dev, tbd_addre= ss + 4, - attrs); - uint16_t tx_buffer_el =3D lduw_le_pci_dma(&s->dev, tbd_address= + 6, - attrs); + ldl_le_pci_dma(&s->dev, tbd_address, &tx_buffer_address, attrs= ); + lduw_le_pci_dma(&s->dev, tbd_address + 4, &tx_buffer_size, att= rs); + lduw_le_pci_dma(&s->dev, tbd_address + 6, &tx_buffer_el, attrs= ); tbd_address +=3D 8; TRACE(RXTX, logout ("TBD (flexible mode): buffer address 0x%08x, size 0x%04x\= n", diff --git a/hw/net/tulip.c b/hw/net/tulip.c index c76e4868f73..d5b6cc5ee69 100644 --- a/hw/net/tulip.c +++ b/hw/net/tulip.c @@ -73,15 +73,15 @@ static void tulip_desc_read(TULIPState *s, hwaddr p, const MemTxAttrs attrs =3D MEMTXATTRS_UNSPECIFIED; =20 if (s->csr[0] & CSR0_DBO) { - desc->status =3D ldl_be_pci_dma(&s->dev, p, attrs); - desc->control =3D ldl_be_pci_dma(&s->dev, p + 4, attrs); - desc->buf_addr1 =3D ldl_be_pci_dma(&s->dev, p + 8, attrs); - desc->buf_addr2 =3D ldl_be_pci_dma(&s->dev, p + 12, attrs); + ldl_be_pci_dma(&s->dev, p, &desc->status, attrs); + ldl_be_pci_dma(&s->dev, p + 4, &desc->control, attrs); + ldl_be_pci_dma(&s->dev, p + 8, &desc->buf_addr1, attrs); + ldl_be_pci_dma(&s->dev, p + 12, &desc->buf_addr2, attrs); } else { - desc->status =3D ldl_le_pci_dma(&s->dev, p, attrs); - desc->control =3D ldl_le_pci_dma(&s->dev, p + 4, attrs); - desc->buf_addr1 =3D ldl_le_pci_dma(&s->dev, p + 8, attrs); - desc->buf_addr2 =3D ldl_le_pci_dma(&s->dev, p + 12, attrs); + ldl_le_pci_dma(&s->dev, p, &desc->status, attrs); + ldl_le_pci_dma(&s->dev, p + 4, &desc->control, attrs); + ldl_le_pci_dma(&s->dev, p + 8, &desc->buf_addr1, attrs); + ldl_le_pci_dma(&s->dev, p + 12, &desc->buf_addr2, attrs); } } =20 diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c index f93c34c4201..efcd8e3035e 100644 --- a/hw/scsi/megasas.c +++ b/hw/scsi/megasas.c @@ -202,9 +202,12 @@ static uint64_t megasas_frame_get_context(MegasasState= *s, unsigned long frame) { PCIDevice *pci =3D &s->parent_obj; - return ldq_le_pci_dma(pci, - frame + offsetof(struct mfi_frame_header, contex= t), - MEMTXATTRS_UNSPECIFIED); + uint64_t val; + + ldq_le_pci_dma(pci, frame + offsetof(struct mfi_frame_header, context), + &val, MEMTXATTRS_UNSPECIFIED); + + return val; } =20 static bool megasas_frame_is_ieee_sgl(MegasasCmd *cmd) @@ -536,8 +539,8 @@ static MegasasCmd *megasas_enqueue_frame(MegasasState *= s, s->busy++; =20 if (s->consumer_pa) { - s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa, - MEMTXATTRS_UNSPECIFIED); + ldl_le_pci_dma(pcid, s->consumer_pa, &s->reply_queue_tail, + MEMTXATTRS_UNSPECIFIED); } trace_megasas_qf_enqueue(cmd->index, cmd->count, cmd->context, s->reply_queue_head, s->reply_queue_tail, s->= busy); @@ -568,14 +571,14 @@ static void megasas_complete_frame(MegasasState *s, u= int64_t context) stl_le_pci_dma(pci_dev, s->reply_queue_pa + queue_offset, context, attrs); } - s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa, at= trs); + ldl_le_pci_dma(pci_dev, s->consumer_pa, &s->reply_queue_tail, attr= s); trace_megasas_qf_complete(context, s->reply_queue_head, s->reply_queue_tail, s->busy); } =20 if (megasas_intr_enabled(s)) { /* Update reply queue pointer */ - s->reply_queue_tail =3D ldl_le_pci_dma(pci_dev, s->consumer_pa, at= trs); + ldl_le_pci_dma(pci_dev, s->consumer_pa, &s->reply_queue_tail, attr= s); tail =3D s->reply_queue_head; s->reply_queue_head =3D megasas_next_index(s, tail, s->fw_cmds); trace_megasas_qf_update(s->reply_queue_head, s->reply_queue_tail, @@ -679,9 +682,9 @@ static int megasas_init_firmware(MegasasState *s, Megas= asCmd *cmd) pa_lo =3D le32_to_cpu(initq->pi_addr_lo); pa_hi =3D le32_to_cpu(initq->pi_addr_hi); s->producer_pa =3D ((uint64_t) pa_hi << 32) | pa_lo; - s->reply_queue_head =3D ldl_le_pci_dma(pcid, s->producer_pa, attrs); + ldl_le_pci_dma(pcid, s->producer_pa, &s->reply_queue_head, attrs); s->reply_queue_head %=3D MEGASAS_MAX_FRAMES; - s->reply_queue_tail =3D ldl_le_pci_dma(pcid, s->consumer_pa, attrs); + ldl_le_pci_dma(pcid, s->consumer_pa, &s->reply_queue_tail, attrs); s->reply_queue_tail %=3D MEGASAS_MAX_FRAMES; flags =3D le32_to_cpu(initq->flags); if (flags & MFI_QUEUE_FLAG_CONTEXT64) { diff --git a/hw/scsi/mptsas.c b/hw/scsi/mptsas.c index ac9f4dfcd2a..5181b0c0b0d 100644 --- a/hw/scsi/mptsas.c +++ b/hw/scsi/mptsas.c @@ -177,10 +177,16 @@ static dma_addr_t mptsas_ld_sg_base(MPTSASState *s, u= int32_t flags_and_length, dma_addr_t addr; =20 if (flags_and_length & MPI_SGE_FLAGS_64_BIT_ADDRESSING) { - addr =3D ldq_le_pci_dma(pci, *sgaddr + 4, attrs); + uint64_t addr64; + + ldq_le_pci_dma(pci, *sgaddr + 4, &addr64, attrs); + addr =3D addr64; *sgaddr +=3D 12; } else { - addr =3D ldl_le_pci_dma(pci, *sgaddr + 4, attrs); + uint32_t addr32; + + ldl_le_pci_dma(pci, *sgaddr + 4, &addr32, attrs); + addr =3D addr32; *sgaddr +=3D 8; } return addr; @@ -204,7 +210,7 @@ static int mptsas_build_sgl(MPTSASState *s, MPTSASReque= st *req, hwaddr addr) dma_addr_t addr, len; uint32_t flags_and_length; =20 - flags_and_length =3D ldl_le_pci_dma(pci, sgaddr, MEMTXATTRS_UNSPEC= IFIED); + ldl_le_pci_dma(pci, sgaddr, &flags_and_length, MEMTXATTRS_UNSPECIF= IED); len =3D flags_and_length & MPI_SGE_LENGTH_MASK; if ((flags_and_length & MPI_SGE_FLAGS_ELEMENT_TYPE_MASK) !=3D MPI_SGE_FLAGS_SIMPLE_ELEMENT || @@ -235,8 +241,8 @@ static int mptsas_build_sgl(MPTSASState *s, MPTSASReque= st *req, hwaddr addr) break; } =20 - flags_and_length =3D ldl_le_pci_dma(pci, next_chain_addr, - MEMTXATTRS_UNSPECIFIED); + ldl_le_pci_dma(pci, next_chain_addr, &flags_and_length, + MEMTXATTRS_UNSPECIFIED); if ((flags_and_length & MPI_SGE_FLAGS_ELEMENT_TYPE_MASK) !=3D MPI_SGE_FLAGS_CHAIN_ELEMENT) { return MPI_IOCSTATUS_INVALID_SGL; diff --git a/hw/scsi/vmw_pvscsi.c b/hw/scsi/vmw_pvscsi.c index 33e16f91116..4d9969f3b16 100644 --- a/hw/scsi/vmw_pvscsi.c +++ b/hw/scsi/vmw_pvscsi.c @@ -50,10 +50,10 @@ #define PVSCSI_MAX_CMD_DATA_WORDS \ (sizeof(PVSCSICmdDescSetupRings)/sizeof(uint32_t)) =20 -#define RS_GET_FIELD(m, field) \ - (ldl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ +#define RS_GET_FIELD(pval, m, field) \ + ldl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), \ - MEMTXATTRS_UNSPECIFIED)) + pval, MEMTXATTRS_UNSPECIFIED) #define RS_SET_FIELD(m, field, val) \ (stl_le_pci_dma(&container_of(m, PVSCSIState, rings)->parent_obj, \ (m)->rs_pa + offsetof(struct PVSCSIRingsState, field), va= l, \ @@ -249,10 +249,11 @@ pvscsi_ring_cleanup(PVSCSIRingInfo *mgr) static hwaddr pvscsi_ring_pop_req_descr(PVSCSIRingInfo *mgr) { - uint32_t ready_ptr =3D RS_GET_FIELD(mgr, reqProdIdx); + uint32_t ready_ptr; uint32_t ring_size =3D PVSCSI_MAX_NUM_PAGES_REQ_RING * PVSCSI_MAX_NUM_REQ_ENTRIES_PER_PAGE; =20 + RS_GET_FIELD(&ready_ptr, mgr, reqProdIdx); if (ready_ptr !=3D mgr->consumed_ptr && ready_ptr - mgr->consumed_ptr < ring_size) { uint32_t next_ready_ptr =3D @@ -323,8 +324,11 @@ pvscsi_ring_flush_cmp(PVSCSIRingInfo *mgr) static bool pvscsi_ring_msg_has_room(PVSCSIRingInfo *mgr) { - uint32_t prodIdx =3D RS_GET_FIELD(mgr, msgProdIdx); - uint32_t consIdx =3D RS_GET_FIELD(mgr, msgConsIdx); + uint32_t prodIdx; + uint32_t consIdx; + + RS_GET_FIELD(&prodIdx, mgr, msgProdIdx); + RS_GET_FIELD(&consIdx, mgr, msgConsIdx); =20 return (prodIdx - consIdx) < (mgr->msg_len_mask + 1); } --=20 2.33.1