From nobody Sun May 19 20:13:01 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=1640912156; cv=none; d=zohomail.com; s=zohoarc; b=CL0I04Zm4ecBVNYr4zmIQlcXlcYF+uNx0v1PK6qy5EggrTdg2IQirBFfTOHLrkfFXDt6BnLwr/ZmXQIi6Kl3a1YnyIk2j6g32+rRzN9tExPXme/TkesiTWTl5kfHvJ/fPTAI/bc6UaTWtWR284/1jRj1mh/TofhZUF+JqxzUies= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912156; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=gOzChpACyeatTO+0ft8wECHRMSNI7uqBSXhaq5nDK3A=; b=DDtkctmpe/s6olY5Y5dRVplbvPNOsyaCqM46ht8LuXRPKveRy1xmpL6pbgs6roAvvpqskYo1RRQHcx/QJ2pNmA8ui0A44tfWEBwSwGvd9tvaeouBxfxzu7D0NHzFjH7+8rf+AH2KjWIBwBKlnBfgQgHkzLibKb1kqiC4tInWNNw= 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 164091215606111.295007962390628; Thu, 30 Dec 2021 16:55:56 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-286-IG1SJxLYOySmrglhurtKKw-1; Thu, 30 Dec 2021 19:55:54 -0500 Received: by mail-ed1-f69.google.com with SMTP id v18-20020a056402349200b003f8d3b7ee8dso14591413edc.23 for ; Thu, 30 Dec 2021 16:55:54 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id e26sm10096073edr.82.2021.12.30.16.55.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:55:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912155; 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=gOzChpACyeatTO+0ft8wECHRMSNI7uqBSXhaq5nDK3A=; b=cPhDDlPEF9WJ8KsGZ6nzMdz6+X/P6v02MhPfS30fk7gl3zUGIIZGBQmeIlZ9wMszNNoZnW FG7ydqcnogM14K2lD7NU5jPCvA+uAJgY5JWy+X9EO+EjSJN6dlPlzaWlTLtQ178mF5cwc0 /qFxK8g/3p2/qShjIOeyLV04y9EJWfE= X-MC-Unique: IG1SJxLYOySmrglhurtKKw-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=gOzChpACyeatTO+0ft8wECHRMSNI7uqBSXhaq5nDK3A=; b=FZjqWTiA6kqeOWrC0IgO3hzl+GCFK4yZHOBBK56VLEdAa2Ovo48+LeSetvhx7OxiEv s1TRZZnn2//0ixyO/TXu7pZVNM/fRa8ByKvU6SQJiMvO0Dvaw/QZcAk0Je5tHmQcpoXO CaIHT07Nm1+8uxko2wYf+ig65xG0WfCZET4QiYKj+znK5z46f7WkgnGKwM2aEy2ts1tO 0V0yPqcX5B/fKNT5452ZP87C4siaVEhM6cXbm1yWAcOIuETKuO9RquKTPBDByM3VElo3 5mpl1OpQTd27lwdzzO1Tt5X6RAQdCiO0u4eYVTGRhaZ4bMwwynr/qVqQouCGFjmlbvl7 +FQA== X-Gm-Message-State: AOAM5326B22ysXC6x5WV762YIm922vtPfhpm07jhFmcTSYkViOyuNymw Ud9/lVfkcMzgM1dHf6arm64thx/rQEYbDGbRt+CzdsZ50NRLW2S28FC1uv1u8n3V8Z0zkuA0jK7 eAnAEf0E47I+QbA== X-Received: by 2002:a17:906:2109:: with SMTP id 9mr12119288ejt.38.1640912152732; Thu, 30 Dec 2021 16:55:52 -0800 (PST) X-Google-Smtp-Source: ABdhPJwGMbhv7zja5Awvll/fHnFDn+fDCJb3TeXRvNsDtEbVJjHA+oH4sacFWwuRaQ7RCEJuQFzAcA== X-Received: by 2002:a17:906:2109:: with SMTP id 9mr12119279ejt.38.1640912152582; Thu, 30 Dec 2021 16:55:52 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 01/22] hw/scsi/megasas: Use uint32_t for reply queue head/tail values Date: Fri, 31 Dec 2021 01:55:25 +0100 Message-Id: <20211231005546.723396-2-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912157236000001 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 Message-Id: <20211223115554.3155328-20-philmd@redhat.com> --- 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 8f357841004..14ec6d68bbf 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 20:13:01 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=1640912161; cv=none; d=zohomail.com; s=zohoarc; b=f3muAL/Szbe8cqYBGAP4Lrr1bE4I+zhGni4alAHYQrB1CdLHZ/gsk/FqHWcj8RdCH9n3XP1xEnIdzbLmzaa3vqCcpJXhe7QLakxkzZf6XgxJ4mb6+O2FJPoNW5DvC/8t8bdH+TmcpzCVT0zWnz54aI0wE70ygCdLxIn1l7CiG2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912161; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=uy66yOKuirQhWV608pFhVD3cE7bRMCKIXJgxDkyzKSE=; b=BE1bKRRAGlnmq9O1ku0M6Ra24molRvCQEAQ5m7ThL4jiDScNzKaq9yfpP6X4zRJzKDMhyn9SdxYV/vwsWanF/2DaBM963rs9LkDPz+49L6XTHwPzzLPf61JeIRhErsyfm1cq6Xt+oz232bWwwyTlrXNK+O2fKtgq4m94FCZpD90= 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 1640912161859730.4894568569624; Thu, 30 Dec 2021 16:56:01 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-660-e1BaPdUkM32Q9z-oOjdM4Q-1; Thu, 30 Dec 2021 19:56:00 -0500 Received: by mail-ed1-f72.google.com with SMTP id t1-20020a056402524100b003f8500f6e35so18071580edd.8 for ; Thu, 30 Dec 2021 16:55:59 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id w11sm6836119edd.21.2021.12.30.16.55.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:55:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912161; 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=uy66yOKuirQhWV608pFhVD3cE7bRMCKIXJgxDkyzKSE=; b=WKa7uKSMg9XgHHpTY+ukQVBpGFMOOSy8iAKLwaX/t7BchwT+oawLFsQhjHv5xOjra4idcg yRvtTNNlexdOMi1T/MBSpvUhowX4eWI5VLB0im1pMg4cxF9nNcg9t4Er+rfOrvIL+AW95G pcxfbmTdqn5iZm8q0E0YBGZeGIuxPnM= X-MC-Unique: e1BaPdUkM32Q9z-oOjdM4Q-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=uy66yOKuirQhWV608pFhVD3cE7bRMCKIXJgxDkyzKSE=; b=erfIAx37bI35p01n7tSgWRm1Ps3bpYwuby7JWtcXZP4PyxiCNHXu/lO5nhDkeXGZOg HD0LCV7/ih410EBUiQi+comq0FCf2IeXQXO2SR1fnxHb7jxGPZzt+tlWCdJSOl1x7lsl 5+X3OsYjnlk1NyQWpIfau9x0ZzWAaFhIPAhIy+06L95KPwsp0xUCKC/45Q3S2eDLiX51 4sGiTotcp5OpKZ2F/EeH9mxrITVL9t1SsxflHfjvShICTKz6aZQsl92Q3hD9Mr/PMXbC jjU8u+UOn61uud7MxeSX3BB3O3Dx9HuAnaOP4OVEqP1Vb1fFGexTJMTiHlAW5UzXXgX7 doIA== X-Gm-Message-State: AOAM530ck9VM+PgC4fZ4NYXVPFcDgHaZJ8v7QGNnHd2+qau5ct2hubqc sbpohmPVKcizXFwKmxYp5zbWs2JeHccnvQccFx4m0HeCTw6YsTbZyXYhnklccxWeb21HpQeKNWX ju3idobXgAlSkog== X-Received: by 2002:a17:907:6291:: with SMTP id nd17mr27508355ejc.194.1640912158881; Thu, 30 Dec 2021 16:55:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJwI+GJ4PwEgTyOFvi3A2nlMq/uUlGx0+QlsmykwqgsEfKS1giVY8J+QNyin6Odu4eSAR35GRg== X-Received: by 2002:a17:907:6291:: with SMTP id nd17mr27508338ejc.194.1640912158703; Thu, 30 Dec 2021 16:55:58 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 02/22] dma: Let dma_memory_valid() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:26 +0100 Message-Id: <20211231005546.723396-3-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912164325000001 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: <20211223115554.3155328-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 20:13:01 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=1640912166; cv=none; d=zohomail.com; s=zohoarc; b=R7kOgNaEyR95cSPC+p3DOtmeDLk7/epGNs9tOT2rpBjaW5f/RWxO2+8WzZZBl5kWNQLyH/5xi2UVXPZcWJ2vRNl98lLbxvLXFYYFUoGxX+P/KWLgsrwMnXYNhwHUh5VxsPQ3RjXZJPIubFBf8qfjRO8BXQTTk9y0174+hSluS4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912166; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=KeiKMm3CiVyYkpY8CZBmincKnDi2qBU6go149AXy5rM=; b=La5+3Z5O/5bMjTOrFFXdVAZ4aA5LeAKNk+/+k75VuhtQlUUgqkb0dYwkAYRpgwlkXpvKPoKkDKKyWw1wZEhiGF5S9+mBfevBU8Eqv2Tcm14wGy9PB1cd8yVhUbi1zDsm5HCWzwNIjQFbtRVyFbI5yo9xPP1tlyNDkQb86XFnKhw= 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 1640912166625104.06436784869345; Thu, 30 Dec 2021 16:56:06 -0800 (PST) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-646-ybvbxBdNMgm3gPrvwfDJsA-1; Thu, 30 Dec 2021 19:56:04 -0500 Received: by mail-ed1-f71.google.com with SMTP id w6-20020a05640234c600b003f916e1b615so8834755edc.17 for ; Thu, 30 Dec 2021 16:56:04 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id b7sm9978785edj.24.2021.12.30.16.56.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912166; 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=KeiKMm3CiVyYkpY8CZBmincKnDi2qBU6go149AXy5rM=; b=Neroi8xz6c7ibgkP0XtH/meXqrK3FDsimcjKud637kTeRVvTZmLuaZKp/Esc9WjsuBuwiD aXT8se7AuQ4BKHe993u9BdH8yYFNnAlQ3NuOz088Ocja2KiGSzTMtHSUmXz4a+7J4EpGgb +7lvXpLa47wxPAOKPGcKbIv9miUsw0Q= X-MC-Unique: ybvbxBdNMgm3gPrvwfDJsA-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=KeiKMm3CiVyYkpY8CZBmincKnDi2qBU6go149AXy5rM=; b=7xm3hOwWhmWScEcs6OU5BTU0K88Uf4eTmy3/lzkN+RUlk7UNyEs/iqR0rcZv98z7d3 JjUtQi1zkN+ZmLfLwJx1rgVftPPYDsb6iiyss7TrYffkSUiLnynREo4I2/yJXVljknsy qYWAbCaIEa4pEz/VB4M3hKscYpJucXijn5VNq2mNlabkimKNQgwAHR0wpQDbqVwzL9Ha Lekp/aYLLj+CkwktCtKXly6h0cQRXnQHi5z58nmfBtT1tEzTls0RIAL6Wy5dStukQpUa FjyfXPeX2asF80O0xgFL0l/qGSnfKBaYoEzn3W7BjlRXyD4EmzRzmmVPoiY4cpJA4pC6 oOfg== X-Gm-Message-State: AOAM533P3fBti+vyUSD0VqQS0afANmo4U9XbWMZIIQ1t/XKPiUIgKGQv d0kJGB/a6TgLtCfliC5HC5Lun9IT1Kax4SDcTOAxJ8+8aA2sG3zNfdw3BT8kllNugw4osNHCbBS yfdBT1VbWN0Kf+Q== X-Received: by 2002:a17:907:3f1e:: with SMTP id hq30mr26395921ejc.613.1640912163733; Thu, 30 Dec 2021 16:56:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJy8EpB5y2+AMoaEaWfz4XYbAXOoEvLYwkRjiiX7GIsqoOr1LpK8Iery8RuK1CPuCr8UjUlmnA== X-Received: by 2002:a17:907:3f1e:: with SMTP id hq30mr26395911ejc.613.1640912163521; Thu, 30 Dec 2021 16:56:03 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 03/22] dma: Let dma_memory_set() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:27 +0100 Message-Id: <20211231005546.723396-4-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912167771000001 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: <20211223115554.3155328-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 20:13:01 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=1640912171; cv=none; d=zohomail.com; s=zohoarc; b=JmYbnsOPYWetaKzHaULkvtvQMTGQIdJcu7srLdboSSGlVTCmIZjtcJietet3ZrMCkXoC1HoNym1t6ZNu6yBu9eIO/TvM3LZzYi1IVJBR8YJ45xduVpB8j1gVCWb4GsR3lEUSRpqQZa8HyeAqqf1nqsa/1mVr5jC3M/I5y/cwrv0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912171; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=Ys/cNV69q3G25W9D3DPfAUUoPaKwIaNZm6mQ9dXuTPg=; b=Ag5HbLoU4Hpbfu8kTyikdgT8eQJFcFVNKuzQap9qWmm1EWUgWQ2/+hCCs/ziFQw08+Bf05/ln0t8qd0+aW5AoQDD8fP8Bw/9sL7Wm9cbsYtIhLhBssmsFV4XPvRpufBbPSANDmyFR3kiKXp8BJc+6bqWRJBN3pldaLlFIsfPOyQ= 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 1640912171270986.9626518729851; Thu, 30 Dec 2021 16:56:11 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-116-t3fciHjAOMuW_MEZxvBmEg-1; Thu, 30 Dec 2021 19:56:09 -0500 Received: by mail-ed1-f69.google.com with SMTP id i5-20020a05640242c500b003f84839a8c3so18032284edc.6 for ; Thu, 30 Dec 2021 16:56:09 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id s13sm9991317edd.15.2021.12.30.16.56.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912170; 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=Ys/cNV69q3G25W9D3DPfAUUoPaKwIaNZm6mQ9dXuTPg=; b=HO3IQ1bEm7xSX0Im3MSzgDbLvdMWeYYRHc1bIgkf5JjHj1971T0UXDMRdDMKlEbAwnMYRw lm2tWTDjNR/es2tTatITdsFASh+2yXqFLW3BepXhU/9AnAgd0RsEDk8iy1uJo2vadWR10M xFt/JnDKRKg1eeGM3wGQU+MWNfzdLfM= X-MC-Unique: t3fciHjAOMuW_MEZxvBmEg-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=Ys/cNV69q3G25W9D3DPfAUUoPaKwIaNZm6mQ9dXuTPg=; b=fcC8WhqqGVdfi1iKpOxcRG2I3KQWSDtTnwxAd6XWfNT43I3MI9EbgHTmLQZRvCgWmw 8ma60gwCM4MQU/F5YuMLWv74OSPWkJkB6JiEMxRnAGaOKrwae+OdJujs+i5hv6eKuMYL P47IsDsDGQ8C+G2Z7jniyBxXbKQo48km2t0lRwirSsk4PZW6MljNqFknzjKspSOcpdVQ 16eEnOYMFDNUufzmrakTos7U6uypXqalUVI2/XulwBT5W36sWx6zMK2lBjjSzNyWBs7O KNdRWyx3GMw5ESKvXHGnDBi2WRwYZ3JwcUvK9uwDDpGSAk+NoW9f2xjU+RFhuHAoLuho UMZw== X-Gm-Message-State: AOAM5304PVe09AG995PGfID1eh7JQiCF9+w975jLwcy+D2XSO0GUzRfg FlSp/nCVzw8/5cmRag2hRtitLJV56GQLioIucmANNTJ1SXxWDTK8D2A+QGH/l4qDtET/w3P+ENS rzhIUDMJdehX3VQ== X-Received: by 2002:a05:6402:490:: with SMTP id k16mr32975125edv.99.1640912168416; Thu, 30 Dec 2021 16:56:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJwH2NrNYbQq8rHB//OHaJPXNXkMFA8bfIJstnVpnHvpRPLaKE8W+DBKEsyDhYpkM/XYVmQ8BQ== X-Received: by 2002:a05:6402:490:: with SMTP id k16mr32975110edv.99.1640912168251; Thu, 30 Dec 2021 16:56:08 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 04/22] dma: Let dma_memory_rw_relaxed() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:28 +0100 Message-Id: <20211231005546.723396-5-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912172128000001 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: <20211223115554.3155328-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 20:13:01 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=1640912176; cv=none; d=zohomail.com; s=zohoarc; b=CkqnqFfxJDET1ITsOGznQlG+r1SrH+jVYIt1kgL/ldSGWIFDaEioP3M3SrPZ3k5rIPfVrMKkm91K2fcT9EnmogdnJUDFIDeuFxK79T2F5oIyMFoKrb0l0Rxk78VQSpg5ZRAMEF1OgjXQf2qDhNOgThzkkuzFeiPV7+TsUzr3mEU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912176; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=dhtB8Rb0RJXvMfRyBEm0cUWmMJM45WEukPox89NA3XE=; b=Wt7Wo76h9UdVv63tDeYHKfU2QkAEs18Zg28y3tkI20PzhDafw3onEYtfTvBpVDaAEIUmt8Xd+a2b9zl78vsh0c0C2WXTcT2IkGBtB+pF0zUNjgG2CIF17EcWEOd8rWfzS/ZhNiADJUd6U58YuxmyAnhMx82IhT1h62OHcfTcwsc= 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 1640912176216405.1026066221; Thu, 30 Dec 2021 16:56:16 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-647--1TA7_3LPEmBQbTdUbK4Jw-1; Thu, 30 Dec 2021 19:56:14 -0500 Received: by mail-ed1-f69.google.com with SMTP id s12-20020a50ab0c000000b003efdf5a226fso18011568edc.10 for ; Thu, 30 Dec 2021 16:56:14 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id mp9sm8066408ejc.106.2021.12.30.16.56.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912175; 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=dhtB8Rb0RJXvMfRyBEm0cUWmMJM45WEukPox89NA3XE=; b=Di8slJy1V+nqbIg+RpQ/TwwmHzQhBQXQY16DmXkssSdFaQZ02g3MG2oJ3HpXGAb/fMArJV /L6vVj/BDKFFE+sJ65Z7YjiWLpRn6p5PqLLDzEllXm2nB3kmiYDCWxpahEKIeo7OA/7KQp RkI4CUJxLlDKUJ4F8vlP4UmU3Bfl1mI= X-MC-Unique: -1TA7_3LPEmBQbTdUbK4Jw-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=dhtB8Rb0RJXvMfRyBEm0cUWmMJM45WEukPox89NA3XE=; b=UoC5hf3sStzjBBECojC4ZBtnQKgoum9SVhAr0wKFLByfnufFNUC0z1TRlADGW9q1rB e5al5S8X1wyfANJQMfhMWHxQOPmG8xSYMyIQBHDhPK+cLBcUr7JuTzYYXPEp+7TaLRLv 4JpUonFnyYpzWynzVpghJL/5Ip+0LOrn7z0G/4Unng9p/G40BsoqukWJevqsoI5ClPAJ fbCWhk+SZmFwqE7qFMKzieku9Ob1Cz4BsJgorrAYu59kvXH996hZsl0lq2iKoR57Z372 2FOKLqQDk7Ezcw7rUR4BKT8fwH8DndXTiwqXRVt8+W7EsS/0QdmuY7tNvL0UdB4CxpdE pXtA== X-Gm-Message-State: AOAM532ZevlDeV9jK94NWE4MJkqqPSw9pDece+a//QLudLUIZiHVhlwL kdfcKxTINOkcJIr7aGeHUTx80YipZXMBFpsKOV8JkFMtFdJ9eBrurzvjdNkjPpLktFHEkgs34wY qUsDcivyPmTuB4w== X-Received: by 2002:a17:906:d554:: with SMTP id cr20mr26300868ejc.356.1640912173158; Thu, 30 Dec 2021 16:56:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJyK14Pqs0BBiVLQujaqWUNCKPuQIepLlNEhmUZCYTdUNe8gMVCpxUfD8MzMRtr0r+PfPcXcmQ== X-Received: by 2002:a17:906:d554:: with SMTP id cr20mr26300854ejc.356.1640912172952; Thu, 30 Dec 2021 16:56:12 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 05/22] dma: Let dma_memory_rw() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:29 +0100 Message-Id: <20211231005546.723396-6-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912179205000001 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: <20211223115554.3155328-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 20:13:01 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=1640912183; cv=none; d=zohomail.com; s=zohoarc; b=nuDvGmVNMq1yAV0iadk0vbiTdsKIpTlMF55iLoDDsh7f2XSBK5rndVAc4pw5akhIWrJJadm++pVBZMQ2rrY+G06KeIjH79gJ0gWYh88Bfy4nV+lwpgLHKHAbiYFu3fEdKt4xxAX124+4kJZXwb/oy2op/ZupmrmqS43jRMl90k4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912183; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=YEmuDAa/zcrwzU2lsE3UDvORo/jV2hDlGSMsdPgfdAU=; b=B/dqZu72sXVDTcJ/F7KYWA4xAy8tXVNh8b0d50GLcGhil8+GYAD6htsHqnJmXxv1u33hOCNlRkn7rAHM/Qw85vG8vTdVnJPzyOyd04NOgjtBdtz/I2ld6z9GIhoJyDoxthfMfd1K83eQykxTnE21JiW/mgGeRuLu8apBx5PrNuU= 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 164091218377148.26469158870668; Thu, 30 Dec 2021 16:56:23 -0800 (PST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-300-tJMeXBTYPyysCAA3KUd-ZQ-1; Thu, 30 Dec 2021 19:56:20 -0500 Received: by mail-ed1-f70.google.com with SMTP id x19-20020a05640226d300b003f8b80f5729so16762197edd.13 for ; Thu, 30 Dec 2021 16:56:20 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id i20sm9978672edv.44.2021.12.30.16.56.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912182; 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=YEmuDAa/zcrwzU2lsE3UDvORo/jV2hDlGSMsdPgfdAU=; b=ZNikAozYB4rw6DeJXg1WJIHTFQsWbJqLmT+GsDQkj8ds8JKlYHL7GqWBYZssc2MmZrUcVA BiP/n63qURyc3ffgIVC9IOXbi7eQEAf+CVFaMCWJYx7z06cURnTeX1E+h0vpnmQnm2+LdF W1QFeybEETe097VaKTYm/ozxHvQiQs4= X-MC-Unique: tJMeXBTYPyysCAA3KUd-ZQ-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=YEmuDAa/zcrwzU2lsE3UDvORo/jV2hDlGSMsdPgfdAU=; b=GHdKTr5sPS00Ut8aO/Cg2lJv25t4b3qzOA6Zk8fI7mHzTSfKhANylAzV1KisIPoGCa pCJoQhRohC8ZtQJr4CSMhr/eiEqUa6gNZpVfOao4BeqIZfsNDQddQWGdm+9Yk52wE2fL 6nVCR2XrjyieJpt3UPjj+tYy6nHu2XQ4Q4FAAs0NeCuerivoOZGPyrRKpsTZwvRSzhaH 7BlgvOtNAHySCzzd9F0sAT5nNVhrMzIgR65kAhyE6XXintP2XBGrIb6GaaVtdR36KJiI C5r6B7JON2ZOMKHEKbjSVci0hvlSLNdz0jTxnlutfxst0Fnd0ezOCt7fDv77IM/PpgPX jplA== X-Gm-Message-State: AOAM531YEG8QtQ51zZwrIXfykV2LRSVtRJyJZWRv7xAABngixJpPcwg2 m+nOkpO29H/8fr2lN2c3Tq02n9Sb1Oe09qmhYTJkLxGfNG40Q0nC3Gndw532GOqLJmvzeRh2zM1 0/PePPwkafsF2Jw== X-Received: by 2002:a05:6402:34ca:: with SMTP id w10mr33358590edc.359.1640912178347; Thu, 30 Dec 2021 16:56:18 -0800 (PST) X-Google-Smtp-Source: ABdhPJxD8PUVk8tgXv4RCHOFRbQ1NK/6x3PL8ch/GJGj3FwbkvFGYfzseZR4LbUSDz8PdyZ9wWUzLA== X-Received: by 2002:a05:6402:34ca:: with SMTP id w10mr33358559edc.359.1640912177868; Thu, 30 Dec 2021 16:56:17 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 06/22] dma: Let dma_memory_read/write() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:30 +0100 Message-Id: <20211231005546.723396-7-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912185536000001 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: <20211223115554.3155328-6-philmd@redhat.com> --- 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 20:13:01 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=1640912191; cv=none; d=zohomail.com; s=zohoarc; b=nlM4u7qcakD0m4e/pvq7Q7AgX0oJF6onil3vTvE6y0RcVgPjiLxZX6jFwrhGbikU83HK/lEtuHk2jU1Yqfw6Yy1Cvf5jA+1pXnJKUncCitE3saqpVqJhiCQIIgt9mFOyUMSe7TjHzqDTsJWOUNeEagQk9BHjS4Rg92429dfpLPY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912191; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=cfDn76iFhTL8AmEmLGnMgId22VooDLm9Co5wl/NuzDs=; b=Bijaxtc7zr5rj4mrzefbKOmQUddHUJG5EvztKaz29JcdVWuSbk7Ml4kCRTqI8aG0knndLB3RMHckHMSqAKrCtYxn6p0UTKnm68EOGoO13n8Y4X+EiElR61ig+uGMrgUuel3s3shtQKH8TXOzIKbn1NtxfUY01EXnyrp25Z8aHRM= 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 1640912191092528.3182776593699; Thu, 30 Dec 2021 16:56:31 -0800 (PST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-401-j4k_nLyWODOfVy3WvN-YBw-1; Thu, 30 Dec 2021 19:56:24 -0500 Received: by mail-ed1-f70.google.com with SMTP id z8-20020a056402274800b003f8580bfb99so18044777edd.11 for ; Thu, 30 Dec 2021 16:56:23 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id a18sm10293380eds.42.2021.12.30.16.56.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912190; 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=cfDn76iFhTL8AmEmLGnMgId22VooDLm9Co5wl/NuzDs=; b=OT/nkNbyojsOk8QSIWkweirI1hogvcJLR3b8TdoWN2OoZKnfaT9IUzStiZFxWv7aGJbuYO uCdSbji87aeC+gaWzoeY2wuIrMbWIk81mSIukZxIvPfN7X4bAaihn28mG45gNLUpQTi3zK //NFjJw4VkJnwvldZqfMPa3/CcaXDdc= X-MC-Unique: j4k_nLyWODOfVy3WvN-YBw-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=cfDn76iFhTL8AmEmLGnMgId22VooDLm9Co5wl/NuzDs=; b=3EgQSDTmdPVqcG4vDo0+VJES7KW97uJY/rH9GAyR8kCBsx3EEhPdjqBODgoTY1UyVG fXIhmg/jdPnEDd9k9zfnoTStl3RojKDz8MtGLl+myh+2c5PkWmGMnJ2lNBL/+gbISqhq dy5CEIFuswh+7KG8P4k4TbiuvSRz9C3st6gbW2L6WqO+N32/fGJKP3wRaAS4zqKPJPQA 1Sdtam06ftjVkdprdlOPHQvNxb79IwSCnH03DaAi7BEjZz2ZLmd5/JCpbip2j2jH5nL8 mns+k/039r6c9ToYz64R/ZVBd1RyQA/qns884c8ffsWEgeX4btnWxc/b4TblW8b9NxiA piGA== X-Gm-Message-State: AOAM532Q8ghNBgwNBKHc6zWedNJK1ek1yQX3imZOVqxK/uDj/ifjS9p2 /FqIjIr6fdKwDFCsBwL1QseHCRZMXTnKeCd52MGOqJaO0oZDKgCupZgKnJM6XKccZIC8wBeNLs6 SDghv5hd3Um9fZg== X-Received: by 2002:a17:907:7f8c:: with SMTP id qk12mr26428771ejc.169.1640912182882; Thu, 30 Dec 2021 16:56:22 -0800 (PST) X-Google-Smtp-Source: ABdhPJzeRF+S8Ccr+pZG2u3r7hdMdt7ZJnZejKIsVLFrtci+eMTO5VVZIi0Q1wTYidRqczBVjkB3TA== X-Received: by 2002:a17:907:7f8c:: with SMTP id qk12mr26428761ejc.169.1640912182712; Thu, 30 Dec 2021 16:56:22 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , Li Qiang , "Edgar E . Iglesias" , Stefan Hajnoczi Subject: [PULL 07/22] dma: Let dma_memory_map() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:31 +0100 Message-Id: <20211231005546.723396-8-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912191959000001 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: <20211223115554.3155328-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 20:13:01 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=1640912190; cv=none; d=zohomail.com; s=zohoarc; b=LGLgnsSWg1Yel7nZkl79Qdgz9tXY2jhOuJDVK6UAEal+g5l/NYwlLWFnybrzceo0KWsoiPFIkzEevp53xAPAkpHpLypUDDggOZyxhOez2vhMIgnXiwF7a5yUIh7/EggoPqcKKwDR/EXTHoKykgaSxLbwFNrHYCaMtDzCxrq8psA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912190; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=JE68J83OkbzA8nCRRfKVPFa1WbIbEeNp8R6h+tw15yA=; b=UrhJZLu3YpIq4MzuBLcIwJgQ8BylwU+Ckh3L4f1KWobJ5vlHn+Q441u6rx9XpP12D+c3W9w/WZvVxUCazb4fsbmlZZdtz6vGkLuAQ7JaxHSaZSo+cXgq6prnz5LYGkJ8JbMmCpuHCtcfWmdZuHtFyq3p+fwsuv1QNyntoKl564k= 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 1640912190058239.12789986872735; Thu, 30 Dec 2021 16:56:30 -0800 (PST) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-384-eDvX5dw7N-ymA3S0wsdGlQ-1; Thu, 30 Dec 2021 19:56:28 -0500 Received: by mail-ed1-f71.google.com with SMTP id d7-20020aa7ce07000000b003f84e9b9c2fso17913438edv.3 for ; Thu, 30 Dec 2021 16:56:28 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id sa6sm8122800ejc.6.2021.12.30.16.56.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912189; 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=JE68J83OkbzA8nCRRfKVPFa1WbIbEeNp8R6h+tw15yA=; b=TdDU+OjM6C+Tr/EzHR/twWVF5jTTkb/3SR+7NY3C7FiUtF5hx2mizDCGdZNalWhSUSFMP2 TFrpejZ6kajxWLG3sBE9IfAHdsotp7NPG0QaPjUYp/pxJTpWUJz1QXSqt3zrGRtiWq1TSm d13bf5ac4ssDG5x+mS8i6+P4gGu2z1k= X-MC-Unique: eDvX5dw7N-ymA3S0wsdGlQ-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=JE68J83OkbzA8nCRRfKVPFa1WbIbEeNp8R6h+tw15yA=; b=NWTHCjALf/lcvNZnwKcdaFycvt/9EoAnpYc9cJ0qnV0vg/6SIarvqufaecHnRJdgNl loOUkKw3zdHNPW6CHDUYt6MBRXHY/ViPbvGp3EHzWwdy9ivTgt9jx2Liuq3V51XA51gL Dco2p/EBH9V0UgzrjvkErCMTP0Nj8rKNz40To/CyJkmQ6NC601tAKyOVzSUlyifHyVkV cyJAOOE/n+Nwg5/IILWGvJ9FsPzu0w6bwCF2SPUDRR5AzdJj8z3K7MN5jFy3wjwYl4FR DdlqohlBDHE/jrbo86bKWvLlgFCggTwKFp5Dxdwp+5yvxb34V0qxdcEK1M7KEpFFaSQq cJJg== X-Gm-Message-State: AOAM531bPBTW5UeSv8SxVBeJmtONDLcCfFRF0ol1qgck89/aCPTRYbZ2 /VF8lbXWtmlUDJngtDyhlkT30t5ac5z6mez2HdZSpzkzIq6BcA3J56n1dyJ99HBCuPDZ8qKuDEF sB0l4NnKFqmjdKw== X-Received: by 2002:a17:907:1c92:: with SMTP id nb18mr26650575ejc.249.1640912187240; Thu, 30 Dec 2021 16:56:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJydYwDARW50WnUU4/RVl/v4ApOhsA9Jb5AvPSAimAvCKtmnNIOYftP9+T4mG3pHewE9VGTk2w== X-Received: by 2002:a17:907:1c92:: with SMTP id nb18mr26650573ejc.249.1640912187116; Thu, 30 Dec 2021 16:56:27 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 08/22] dma: Have dma_buf_rw() take a void pointer Date: Fri, 31 Dec 2021 01:55:32 +0100 Message-Id: <20211231005546.723396-9-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912192020000002 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 Message-Id: <20211223115554.3155328-8-philmd@redhat.com> --- 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 20:13:01 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=1640912195; cv=none; d=zohomail.com; s=zohoarc; b=kIJUotyD7b7r1YAMkqSN5dmy4BEzivaVjSeIT8gXlBSDzCDzpe3sHrI5sF3/8oayFI1L/4CUUjm9LECA3q4EC0yO2KgKbw2/zcy8BNEJ/+hkHAJ+zwMRLw+klz1dWNELeiRA1r18uVgNrbWsmdnMUGg+dohRQ7oiZE4KYImIVmA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912195; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=0O3GSXTG0rQZmC+XLVuOePHG903RoCnOoh6M+AdwkDI=; b=T43kYIkL+gZrkXsU2ceLC+bS23HUjQc+TTz722rugYsd7RSe50WQHHihvvvqGpHFZwQ+ROCunYhgd47LsubmynX4jevJxWf7gS8PjRG/0qdadpucwbBGRhCdvgMsrPz9FA1KRKjhYw+9keMEKtvb2Q26IBQwXWZmiuCXaepNeho= 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 1640912195258251.58685017752555; Thu, 30 Dec 2021 16:56:35 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-9-RWDcE62oOlSMme71EJAIZg-1; Thu, 30 Dec 2021 19:56:33 -0500 Received: by mail-ed1-f69.google.com with SMTP id o20-20020a056402439400b003f83cf1e472so18029077edc.18 for ; Thu, 30 Dec 2021 16:56:32 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id ds7sm8121982ejc.50.2021.12.30.16.56.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912194; 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=0O3GSXTG0rQZmC+XLVuOePHG903RoCnOoh6M+AdwkDI=; b=Q9PljLwIcvKrjYng1+OTb2V34FltLPFKFRF8UM8MUXEhzbF79QTZadcOTgzN/Ufcpox5sN nXGO0BkcKYH8b4UUQbnwasYoWHOUkP8hZ2MPyr5Bm8oj9Slimi527n08mfGanr6y1RSdLp FoHcgYRAedcc+jcutnxs0DwdGCA+X8A= X-MC-Unique: RWDcE62oOlSMme71EJAIZg-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=0O3GSXTG0rQZmC+XLVuOePHG903RoCnOoh6M+AdwkDI=; b=s4P9aFuaMekP3EDrvgSt77fYWE7kXkp3H7DKaKpVSUR8sC2oYjOmg5/6cIpq8BmmLm 5NkHn4XAwLn0arKAALawDlXeAF4hDPWA4d0k3w4i0sqVduOIfRkjpgbXtybYwDQ2a3CC XKxYIVmob3nEvnZXgSi9imP/TbR9QjlDxvJG4tQfRKugkErsxDHKCCZBSMA98XoOX67v lo2teqNpiZcRrcVsGad8X+Ctw1i/RpsnhLhtR0sDZOSHQrJvDKpmqB+ee0/k9/QUdYH/ 0zkMdAbjyk6fRkzBm+B4vr21oClRIrcMjAnyhhUaqmHZbA0ueyV0I93inQuODuW+KBIK RSUw== X-Gm-Message-State: AOAM531ZpQu22uv4bmebIZAaX4si9gBuJiQTuc5We6nx6jJWKKV5Vgze ycdCvAI3EgSpsReCK9WmgCtxZC9UYH1MvdHaq+bdIXYtlUiUOQA1SxdLSdXG/rLPbKAkwoa/3LB TWXICQRz/gEmJ5A== X-Received: by 2002:a17:906:888f:: with SMTP id ak15mr26583485ejc.0.1640912191888; Thu, 30 Dec 2021 16:56:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJwPXLNdzMwIN26GVSEBMJM4lZDxdoBrKusGfAWYZtjKrAwq2qZ7Ryr4gIHCi/lO+W0EMZfAog== X-Received: by 2002:a17:906:888f:: with SMTP id ak15mr26583472ejc.0.1640912191689; Thu, 30 Dec 2021 16:56:31 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 09/22] dma: Have dma_buf_read() / dma_buf_write() take a void pointer Date: Fri, 31 Dec 2021 01:55:33 +0100 Message-Id: <20211231005546.723396-10-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912196202000001 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 Message-Id: <20211223115554.3155328-9-philmd@redhat.com> --- 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 14ec6d68bbf..2dae33f6755 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 20:13:01 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=1640912199; cv=none; d=zohomail.com; s=zohoarc; b=cHyLEA8OeleHwHjqNb0Oob5vYPYfbRjHEZ7/xNAvXFNC7Iqrh1ShfRJ8wQLpRvIBaymSxp7bYsZu4a/At8OPCXYfGxBqehpwk1AsDMMPNygwCm2xxpjltSVQwTIkIli8C9SFCJ6DaM6HLQh2pZuWo5F5CYZUiX1dTlzal2D04Uw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912199; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=z4OtSfjPggV0SCf5NnhwjZXBrLozwaJfQy6f5j8NafY=; b=eKOVGHosXWs35pD5Lp5dX/kxAGAw37aZcDzj13Ehh3NcVxTH50KpinSkx5KRfSm2VpGI+od0OR9zdmxJw3COB+7UBFiBT1p7AzCqIHO6//Ab+U5FHvZhUVTcF9GgxWRY215qhgOnPAcrFkUTtsCVtuT++ClB1F9rrIiAG5mskD4= 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 1640912199439804.9614976694315; Thu, 30 Dec 2021 16:56:39 -0800 (PST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-548-M4pMwLzpMgKwvnjPoDFdXA-1; Thu, 30 Dec 2021 19:56:37 -0500 Received: by mail-ed1-f70.google.com with SMTP id w6-20020a05640234c600b003f916e1b615so8835423edc.17 for ; Thu, 30 Dec 2021 16:56:37 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id u21sm10054371eds.8.2021.12.30.16.56.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912198; 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=z4OtSfjPggV0SCf5NnhwjZXBrLozwaJfQy6f5j8NafY=; b=dAlEt2odWshi0tMllegXZcQll2WHSmz4YsMYa3IUzYTNHXBVDqf1HgnypfN59EIqw6CZeR wQqhP9/Es3bAO8UL5tOJoBYgSligOWgGhgAylQmf+5L8ztnpfb0mtXcHpPBqxtFhtUhz5X nOsMu9nQLZxNGcwWefyE0IRhQBJNK/8= X-MC-Unique: M4pMwLzpMgKwvnjPoDFdXA-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=z4OtSfjPggV0SCf5NnhwjZXBrLozwaJfQy6f5j8NafY=; b=A/DK7BaHa+TjhTPOIRUUYPFYOC8NI7qC74X7BtGY64wr9VScyvTGO8Wvg+pAha3Uso RICp+6lGTAYSWvyEDiOIIzDAr+6MIw6i43Sq0k9VJ2Jc8dS9tJmkhkAoo9iMAlyzDS/q QlLRWSXoq7YzYwY4iEHbeMSOr2qiBHKda4c2axt4y9qnqadVSh5BdtjP1uSMVkqF2tYy SP+sZ17Vv7u/ENNBSsjLCp+I//s3RlFzRlwOxYXchriSA+nhNc3pQTrjageYECueRdrL yeF66GDlr+z75oXhh8osrqlOciLTham4Wmo9b2PJ4EKOd6NCCf3osapC8x5kq+iLr2pM JK5A== X-Gm-Message-State: AOAM532GXfq8YhY8UP6umnTPVG4BWAEgrGZ1OI4VjB18qk2aIB+ohdlz hyuuy/4j4YTi/+4sQSqEbLhPd6kVmAbHZUjVU2dkz4XNSZOC0nBOu9XNAemim80ydxRsVsUiIQs FheRLOqEg5DGxJQ== X-Received: by 2002:a17:906:e208:: with SMTP id gf8mr27494709ejb.11.1640912196459; Thu, 30 Dec 2021 16:56:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJzzwm/MFkHrHxXFXDXVh5wiUwXrDGoQLkKEB2u+8BtoVlRyo3LVMmZr/dpH2brlpmEN/60DAQ== X-Received: by 2002:a17:906:e208:: with SMTP id gf8mr27494699ejb.11.1640912196305; Thu, 30 Dec 2021 16:56:36 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 10/22] pci: Let pci_dma_rw() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:34 +0100 Message-Id: <20211231005546.723396-11-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912200482000001 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 Message-Id: <20211223115554.3155328-10-philmd@redhat.com> --- 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 20:13:01 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=1640912204; cv=none; d=zohomail.com; s=zohoarc; b=QNHeR8mQubadJjeaA8V/uVP/UKBMQhcm/Mxe7qqYeNLyAyXWizx/zzOvv7TfWbpsP55WrP7berwIDTVr9IjDXul/pT922/BReOwR5SHLlpUkvT8HeLH/os2Cm5VWoguCM3+pZ3EdJJXjlS5PCLIQv73F6cDnbBVq4SaxeUDJ5bw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912204; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=P6mIO4CGwa5WX+783uVHB0Nmeav2CUdqvdcqnFc0STk=; b=Sz6fogiy6gRkiSYhv/HWVZIC4cK8kUWCA+pzLbpMF6T4Da+/iKTh3EpaTDv7Amc9LEEYyEX88gYJ4C+eOMDzuo/nGio0gwdDHkUoaCuDqPmRlP75f20Nit0NkZbHSiC27s86m/73bgzU6SCQSKeZ9n+wBTwOM3yHjnatyRUQ2vo= 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 1640912204014635.9911698693256; Thu, 30 Dec 2021 16:56:44 -0800 (PST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-634-93bCfzFcMael9dwHIP04tA-1; Thu, 30 Dec 2021 19:56:42 -0500 Received: by mail-ed1-f70.google.com with SMTP id s12-20020a50ab0c000000b003efdf5a226fso18012157edc.10 for ; Thu, 30 Dec 2021 16:56:41 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id sc7sm8063141ejc.87.2021.12.30.16.56.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912203; 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=P6mIO4CGwa5WX+783uVHB0Nmeav2CUdqvdcqnFc0STk=; b=TB2iprl+aSAZn6Wh3m8aaSPIWQqEOQJ+ys15E/thwy7NYJl3hSf8V+Oz2nXMDxekpqV5BV XEwXVDYaKDxqDLEE5oVaj8pG815sCbbVLahMNvX3LclH2cg49xBdzIXQoCn76vrND4p2cm /H7XtWaCWwoT4fnKV7Hx2qMhmvWm8mE= X-MC-Unique: 93bCfzFcMael9dwHIP04tA-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=P6mIO4CGwa5WX+783uVHB0Nmeav2CUdqvdcqnFc0STk=; b=XB3abNBoKqxwhgt13RKKCeCgkxGmp/gYbb6HLrUyaFqtuatRIANDphXRiEaX872kx0 nG9lOegXQ7dcWfNUjU7c9Vu+mkTFUfN9CSDBQDTUD8e54SMFKS1KnU1h4Hf9aIFusK+a Qwh8K2iWtd8qeMobFjQc3lIgzyFBAKgoHfLcrk2cNLn601KSvh8ok4ivYcgTKcQYobcD Mcol9TCwoE878cjWafjZ5cr0/gY/iihlu+y0jMQaL/tpaDcIUv/QaIlg2dO2BfuwAqS8 oMZT3asTXJO43mTkYIYPgmLpyYKZfkE0B49rj+gQX1uCTNEnhBuEIlxXU6NN4V/XKEsY jk3Q== X-Gm-Message-State: AOAM532BQX+u6xyYZ3JnsN3GUq/QzouJNIwrCjklxhvz7Gm7BDMSsQCf +N/EkGPgGE1EO5oJebFBb3Bd6GafGE0B9kKMvrn8rrGSRboI/Y3bw3fHX1+D4d024WFwirb17zO dcjeW4kR83MSG5Q== X-Received: by 2002:a17:906:6a0f:: with SMTP id qw15mr27837135ejc.663.1640912201032; Thu, 30 Dec 2021 16:56:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJxyquURKORaWOEDFdECldoNU1EVHi654jttm088yhvJ2slYLMn+OjAjLNZwGfLuVpYBiWM+/g== X-Received: by 2002:a17:906:6a0f:: with SMTP id qw15mr27837124ejc.663.1640912200859; Thu, 30 Dec 2021 16:56:40 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 11/22] dma: Let dma_buf_rw() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:35 +0100 Message-Id: <20211231005546.723396-12-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912204988000001 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 Message-Id: <20211223115554.3155328-11-philmd@redhat.com> --- 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 20:13:01 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=1640912209; cv=none; d=zohomail.com; s=zohoarc; b=fFpwxoK8oCDM/3r9q9NLhH944KeU3uBWsbIZKFs2JKYxc+BIR981JslwAbF8INyDFDrXs5aFPtceialHnelHboOFs86T9d3e3oio59CkEMbrNqfmbAeEfybs9928zCPkL+sOHIymZ1yEz3hyYQcAd/8xDNcK4dY945Pe2zDLsK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912209; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=+1Z9pLM3dvlcchcXJSyskF4WLTwr1M3wKSGXhcPQIKI=; b=XI4JCtcA8NDdKUv9jCzWHydHFIPdFBMvf5xGZpuC/NVVYob3qlsWS+m74XY2P592ooQmjvlMvOlEzLGqPeneWQsop+5SBcI3Nei6ED0oYuiN0EjyI0uxmbkpV8h2bRkgfNLJuHzV+loBzaTOfUhtz8Zokg2e/fwNjcy2+gFjN74= 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 1640912209569660.4433031396896; Thu, 30 Dec 2021 16:56:49 -0800 (PST) Received: from mail-ed1-f70.google.com (mail-ed1-f70.google.com [209.85.208.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-673-eOIfjTurOlmcdq-0qcQEnQ-1; Thu, 30 Dec 2021 19:56:46 -0500 Received: by mail-ed1-f70.google.com with SMTP id g2-20020a056402424200b003f8ee03207eso11185251edb.7 for ; Thu, 30 Dec 2021 16:56:46 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id qw9sm8092092ejc.211.2021.12.30.16.56.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912207; 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=+1Z9pLM3dvlcchcXJSyskF4WLTwr1M3wKSGXhcPQIKI=; b=FBl6vLDnfllFCPQ19FyfMlzRf0Kz4ZmyNcd6totVuRr1R8QXREbazi86jAr0lg/WBBjiuY 3jBy1/+N7fDP0gcUrlNOkAYpFsiT/F1zOubWqfwWI5Q8K4wvo+TtiqUiw+9bIt37bGE/4F GjRi04aMgEVv2jYyiYffwLJgomVLvoY= X-MC-Unique: eOIfjTurOlmcdq-0qcQEnQ-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=+1Z9pLM3dvlcchcXJSyskF4WLTwr1M3wKSGXhcPQIKI=; b=XnkNOafA/UEk/ickyraY6cd4o8zqQ4imBzI7WjXjlhXDky+xQl3m9fRC80fWnEzDSx e/mpwbIcj6LzkcK/XGBQQ7JLrMQypvKMpuoQJFEKVXedGw2yJPnAGPCIAWpwvA1YfQC6 uYTDlEWvlKqRKdaJSiHml7jAEmVCvEjc8M4NYcjE+BKHwvZCM4XMprvjcTLMA7c0HTcZ HQrKjNZn/SFwUlIOTukGnzdQTfojETPGdOwpN+HT0ZkWgfzxSTrMSMAmyCRVpjDHTZaH TKfrDAmNhwQ1XanpGICz+fJZ4zWJy3Z95Co/gjvQ2ozUR13rQEeMq4gYgQjIUJOQ8SJd be/Q== X-Gm-Message-State: AOAM530nILDyjogg+H8m18ydkF7R/tkbkXCvYfZRENvIXNzhQ90MG88z cTnijQvMN9uLuEybgufChLA2eYeMLDDURf5lTLv4ivvio6Ld8VDZ11ezoeNtKmzN2XIlmmYREvP 8t+9hwHbzAzPAzQ== X-Received: by 2002:a05:6402:2686:: with SMTP id w6mr32180614edd.79.1640912205610; Thu, 30 Dec 2021 16:56:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJxgR5CfazrtMirXmAS5QOoJws+tELIcAQhVe0L3hg0fTVUeMBhEfuOyVZlmn2kDfRSZos7Pbw== X-Received: by 2002:a05:6402:2686:: with SMTP id w6mr32180597edd.79.1640912205413; Thu, 30 Dec 2021 16:56:45 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 12/22] dma: Let dma_buf_write() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:36 +0100 Message-Id: <20211231005546.723396-13-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912211106000001 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 Message-Id: <20211223115554.3155328-12-philmd@redhat.com> --- 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 2dae33f6755..79fd14c5a33 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 20:13:01 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=1640912215; cv=none; d=zohomail.com; s=zohoarc; b=oGvdYvMx9nh4/QmKpS4PzScWYQvrUOtGvy1zdCFPU1ORvoI9hTt8+BZlMpv5F4m/9hit/zXcKg1JJz4rTtKuGZor2za/JYAh2nqI50A17LGFcT+aIpIqCcNSzKZImZi+lyqeNig/pPOcPvtC6Nn8PXm2o7ez6aUOpVmkTusX72s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912215; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=zV1cC5sbwAcNr5Gi638i0pS/v+OOIgrgXUoKZb4q7T8=; b=VdsD7StxlB4O0n7SHswCvUrzdacAJA9fr/dL5NGQ4zIL/P/LSAiZMD/ZG0bgPtqgtKxdWUmeI3KxURc134I2N9K4OlIJsaIZcvIRcMN1dos7NPufHBJsGVkO0LlS0a7656AKXEXUI1HpEnAOoH7cC5gnpyanzeU7FdgLaQX1Y9c= 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 1640912215185620.5918541053345; Thu, 30 Dec 2021 16:56:55 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-532-1ug4YTSIM82yNbpioYiqFw-1; Thu, 30 Dec 2021 19:56:51 -0500 Received: by mail-ed1-f69.google.com with SMTP id y10-20020a056402358a00b003f88b132849so18256827edc.0 for ; Thu, 30 Dec 2021 16:56:51 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id f8sm10085420edd.73.2021.12.30.16.56.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912214; 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=zV1cC5sbwAcNr5Gi638i0pS/v+OOIgrgXUoKZb4q7T8=; b=W8ajVNZDNacb57OFRshxaAGl7Fsx13TyIhewBtsPe+XA3BVkMM6KzGNelHcq4HlHTE1O1F 6EUlVOE8JuGsAHoW1mNOCyz7yeWrSYNL2c9d9HhoivkUYCthwa1A4qhyTC9kzjQlZaXZkJ K3e5E4N8BhuZMsjqa86wH5u2uPxvIPA= X-MC-Unique: 1ug4YTSIM82yNbpioYiqFw-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=zV1cC5sbwAcNr5Gi638i0pS/v+OOIgrgXUoKZb4q7T8=; b=UQyfJZAS2q7VOsNDV7nM39nwnvcM/topGdDB8Ik6/ZfVf6IfrmXSfsX1kTusFGaK8a ooyoQLql2V/waQnFesLOyc5KHHZDbhHhi7x/BgeyEKfN6sefS4R+JhpkytBtofTAiivO i4hkoikRv1mu8ofDoiEemOXIWbMr3b1VbC/mVK2mNZ+8kOtN/ngANpd7WcOUPdUH1Dzh xIcI7km+3uGKzWvmHtnX5ot/PMVzWlirj4lE4lTqLAC2sUW8gMh2Ey40hq9OSIOukC7V 4xc+d7wo+lEABfLlVy87tOKI136HeTj3VV8IKAEyJ0eFiUwuHGH8/LWsivyfOGSTgbih Dxaw== X-Gm-Message-State: AOAM530987OVx2VEPnAH0US3/sKUdr7NaY84qjDhdJVjL6ZTRvkIeuxu hdstjMHySxO12ABqk3bm+PoXzZdVYid7OlDZsBvGd5AtLr61D0l8dx8RKXmi+byP3EbRLSVbGn7 NqhLLrIwJU399gw== X-Received: by 2002:a05:6402:3550:: with SMTP id f16mr20696230edd.407.1640912210136; Thu, 30 Dec 2021 16:56:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJz9Itl8Ksdb6qLIHcdGIrLzEXEyOHdt2mxwMLq1FKJ+YlyNiQ+LvnvgjhS1draAigsD28n62A== X-Received: by 2002:a05:6402:3550:: with SMTP id f16mr20696220edd.407.1640912209926; Thu, 30 Dec 2021 16:56:49 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 13/22] dma: Let dma_buf_read() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:37 +0100 Message-Id: <20211231005546.723396-14-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912215658000001 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 Message-Id: <20211223115554.3155328-13-philmd@redhat.com> --- 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 79fd14c5a33..091a350e055 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 20:13:01 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=1640912217; cv=none; d=zohomail.com; s=zohoarc; b=PXjx3cYSQCj0SEwO5EJa6iubUCXa8VMiBOW1uccrqdAx+nU0FPnL1V6hiqmpEu8x5VPghFhV7XrU9XYlu3WuaAd9skBqQM36MCj0shFqBHX/mZuYm+JEBCOxr3/TvAkznwLJYmufda9OvEkjzDXb1heXXQ1B6EdREVbef+HezhY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912217; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=zjkq/WlHNhkvtvm4qiPoY5i0eEmAP2+gefa9oIHx13g=; b=hFwbiVSUCbF8jKm/ipooGlKrBsLoA/kAJWSMRUfvfgTIEpzhN4lM3wDt225pg96yGucoEcSz/HP+EiFRIMcTLeT3AQuWGun+QBJqQn+pLkdGS6CX/KI2pWzrQY97c6nuApTnNo6cFy6m5EUxMINah6V749Zc3m++BZa9hXxW12w= 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 1640912217500419.57925898338146; Thu, 30 Dec 2021 16:56:57 -0800 (PST) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-194-Cqx8XL_gNoePh_VCKFjxqQ-1; Thu, 30 Dec 2021 19:56:55 -0500 Received: by mail-ed1-f71.google.com with SMTP id i5-20020a05640242c500b003f84839a8c3so18033109edc.6 for ; Thu, 30 Dec 2021 16:56:55 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id g16sm8022972ejt.202.2021.12.30.16.56.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912216; 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=zjkq/WlHNhkvtvm4qiPoY5i0eEmAP2+gefa9oIHx13g=; b=NZthQ3NVAtI0CxDLOfEiPmBxK0CGCjJkxKK6ihSRkZLWVseBUIQ7swAFHKhKXipccVi463 VlcSATa3dOzeVNTDX6NzJhU+C9AfX3t/YCcJs9VUlwFxIEY6ABOeFcYPbq2UxsHXHSUa94 CWvMaeCjaB4lAiOOM5DjOeRkggmn6GI= X-MC-Unique: Cqx8XL_gNoePh_VCKFjxqQ-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=zjkq/WlHNhkvtvm4qiPoY5i0eEmAP2+gefa9oIHx13g=; b=1gTP12HwbsQBF+sbNupXQhRFI/moy659BToHOSz4prTrW/MnIaH2lGFQaV1iwa/sQ7 EVMEGvHxbEUpYNUdgEkhHct9/b9PMMeV6WsE6cq8QxSDYWQ6KDu2FgAAPL+ciXKlxo7v /TeGphhn6qLxg6V9W5MyOhKgtNbmXI0RuuoBKSqWxyxLB9rarY8TfvpPrXyFro24V29X 1grRv8CBE+XUfEhjA9E6MsVr6afZ1CH4CNpUk94juQdO5B7x6sVHO1GkYj9uG7RM/ZD3 p0x4ZK6fFDobUTLHBU8hOLomwGJND9oeqG+CwdRkxsIpVHdCTF/08PLmsEjyUhn2+84J cPCg== X-Gm-Message-State: AOAM532vM/eqhtQ8LXU25yXf9lx83y2D00HilGrlBV8tGOBCf65MtehY ESEWIX9u1GafUTnsY/erqawmPkEOpIfIjDjiZxeEYBlpRep5fTxqlaXKPFZ1nvZ9ereESco8UzN tx7HXICCgOVMNyg== X-Received: by 2002:a05:6402:354d:: with SMTP id f13mr24653913edd.135.1640912214609; Thu, 30 Dec 2021 16:56:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJwS2DoI+vW0zPPUwNygRqfjoncvHEEbPwXuL0i5GC+qFNzKR0x4gr/HgGp8mj/aNopNvGMPMg== X-Received: by 2002:a05:6402:354d:: with SMTP id f13mr24653898edd.135.1640912214491; Thu, 30 Dec 2021 16:56:54 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Klaus Jensen Subject: [PULL 14/22] dma: Let dma_buf_rw() propagate MemTxResult Date: Fri, 31 Dec 2021 01:55:38 +0100 Message-Id: <20211231005546.723396-15-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912219777000001 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 Message-Id: <20211223115554.3155328-14-philmd@redhat.com> --- 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 20:13:01 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=1640912221; cv=none; d=zohomail.com; s=zohoarc; b=JzXkLmLNXGlvel34E0h85cCbIOCBsuJGrua/UuHOdBLgKysZDeGZxGPiFJ3mzqGEAH1cTQu/ibKDUnrPb+qV/cFJH1d9ZDKDYEu1mxQPTAUlnN8a2mQhXtey1rVG5JRE3r1FH2DL+CMprF80lnvGdaaUn03iL4DzKUUFtm/7EVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912221; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=UcHZiN5CaxHZgNjiZBrsrm3Tzs52Oa+NswcKSWWvrHc=; b=EG0u+J2DcnqsZ5Uw636TA47y/pLDsGzw23u5n3K/3eDuUc1zMLe6G/N3IYMu+NLWeZ52u/9BYFTPurEeLH0JndPtoDUdzseOx+dMJO50sgaRms34u/6/QDpVURDCsmR9nFK7XWuu/MJ9+tftFhHkKNR9R1AfTvpOgZusYFbH5yo= 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 1640912221947218.42548244620423; Thu, 30 Dec 2021 16:57:01 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-447-QiJoFsBkMhSY4_FPq25-Eg-1; Thu, 30 Dec 2021 19:57:00 -0500 Received: by mail-ed1-f69.google.com with SMTP id ch27-20020a0564021bdb00b003f8389236f8so17861027edb.19 for ; Thu, 30 Dec 2021 16:57:00 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id k19sm7977501ejv.38.2021.12.30.16.56.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:56:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912221; 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=UcHZiN5CaxHZgNjiZBrsrm3Tzs52Oa+NswcKSWWvrHc=; b=LXGSf41b7ijKEBYM/qYzbynabw/2xLJXBWDbQ9Zfq6oZhNfb/56PiTcKaz1T+YPKj3lLSJ pr8Krt+dEdbVLwy3zP0N4Uh9KZtQ823r7cyVhPC9hPs3ck3eazmX4KsjM9/e0+/smCN9qI DM0VFjZ8HzJdPbc+73PbDDJH6k2xoC4= X-MC-Unique: QiJoFsBkMhSY4_FPq25-Eg-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=UcHZiN5CaxHZgNjiZBrsrm3Tzs52Oa+NswcKSWWvrHc=; b=X5S/Z0KU3w/KQE5OtP4Sm0xxoXtQ/GCOa+OhQd45OxUh42phKKFvpG/TNnnpmXDEFV ggibyFK5GKGK1N29WQCedaIcpd1U4SzoLDyw8xISDHmmpBRPlxEfrGqO2gles5qLGn5B eCWYaDH7yl6W0lumW/YzHOKzMvcTR9t+VSwOVdjvgajEVxHx/lAUOZSIp1cxvQ2dgHar qd5NOSAOqEsxPrNaTWRGYBy8FamUQXQ1cZVuH8+gW4vrlTHZVxqvGhLjlevwh7aTb+Lx o5eodvsvldQ6cm0NB/bB/anDZIjo4UE9Apa5M7hTcvuNrB0ey/6SGeWfd0VUSHtT6kdh tEKQ== X-Gm-Message-State: AOAM531z4QdU+UX6tSLNzHBehTB204QC/eWg2BKXZ+zh0Zi+viDsBCiN eyR/R7XaFvPnKV9HWccaFtyR0xJghSskGYkaHM4KANI+ZO5TqDuvv0YX3ED03pL70p6FQ0FZ0i8 SaFSi0rzoAtUspQ== X-Received: by 2002:aa7:c658:: with SMTP id z24mr32464654edr.187.1640912219055; Thu, 30 Dec 2021 16:56:59 -0800 (PST) X-Google-Smtp-Source: ABdhPJy6iDktP8J83LSY8lWHItrwO+Rkz+MZdYf//4JrfZCsaYE9QpY7M7BGUlj9MY6mcfVo7ZdNJg== X-Received: by 2002:aa7:c658:: with SMTP id z24mr32464649edr.187.1640912218940; Thu, 30 Dec 2021 16:56:58 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 15/22] dma: Let st*_dma() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:39 +0100 Message-Id: <20211231005546.723396-16-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912224045000001 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 Message-Id: <20211223115554.3155328-16-philmd@redhat.com> --- 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 fd8f16003dd..009dd3ca960 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 20:13:01 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=1640912226; cv=none; d=zohomail.com; s=zohoarc; b=E9xiC8WRT1Ed2AP87yOrym+ZRI273ENWJVcX9r5S/FIYH3btxrxaeoKzGfS4v+Kioe8+EzJbRhOFVClflfHUnYv7FjUrZnAcdBSilcDXijQASeVsYhKjMMtqDPxKFaTR000PwqV8jTLJTeRT31pYWEDaa3ubxvDwOViwmveEGZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912226; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=xgo4TgyYI9M3NsxJkvR5hMlDSbK9clBQx4AwNiHH0tA=; b=YFQQVgSDuVChmZYN4JZ/62BYGETDSsIWBznLAcsp8ytcppWYwX/lerClp/KAVCoHP4Rr+JcnkUwBLkP7KvNEtXnjHxbtu7oGMcL82hiq6aabaqD1EwpL/QsEx4ZH3Feia6vUqHTEaKRsFaXNKjB12cwC+eMQwtH+V0mZ7pfSKL0= 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 1640912226724803.6722664637571; Thu, 30 Dec 2021 16:57:06 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-325-0FWriDPKOmqQkH89Fsy3GA-1; Thu, 30 Dec 2021 19:57:04 -0500 Received: by mail-ed1-f72.google.com with SMTP id o20-20020a056402439400b003f83cf1e472so18029560edc.18 for ; Thu, 30 Dec 2021 16:57:04 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id g19sm10033981edr.6.2021.12.30.16.57.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912226; 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=xgo4TgyYI9M3NsxJkvR5hMlDSbK9clBQx4AwNiHH0tA=; b=QKTQgqqIkScb4BSaoQWvnFC41Dul9hZVtXNTnlf9not2Gqn5Tzs4YDLKcGpx5ReUAt8Ih3 EtAd/gavliutpMudLSsx0mjSTrDykOH8snywFAgNYNfVsSh9fVT0F3pF0VgTUi+EuNMLgY ynTtmXfqLqLWJJx3eM1tx8lq/dk1Z8Q= X-MC-Unique: 0FWriDPKOmqQkH89Fsy3GA-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=xgo4TgyYI9M3NsxJkvR5hMlDSbK9clBQx4AwNiHH0tA=; b=5M1MFOBKrnV61srSW2KypdBYtyLPETu4ggeBZRdgtN2ZS4QFjM/+lliw1+FAaGIpIf 9u9R4nVNtHheIK+IcFhYN8jESpmnSlav2FeVXHM5wjAxtcbq3q31Eh6GFtGhwzMQy7/s cgGLDtc0R59/cFz5RLjY0OhEmOwk2nCYsS1IoGC/ADWoe9nqoM2JbAApQcyooap4dOtp 8PDlLhtgdHApv5kJamZHRatqO2ItVBhDp/FPHrFo6cPvYPmGNggFM25lQz0dMiVbbx0b e+XeArhSxvIZfzrpiWqnFA+EHTa9p7CLtu6A7M2rEhLhLePM5SW63aNXWNuYTtaH1BOw u7GA== X-Gm-Message-State: AOAM530a2FY9y90qT1KtXckW6pTVGomjxqhioQ8QCe+F9mBmtlIUp5AL K8nLw/edVbIHZp2AUXCYCI36imH/h2ZDIifwVVINJOYSaQ75QZP7+KOdpygZymV3zBsx/+ihf1c qeVO4hFJRmG2J/w== X-Received: by 2002:aa7:d818:: with SMTP id v24mr33219940edq.298.1640912223608; Thu, 30 Dec 2021 16:57:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJww1hfLUTZID8odZnnf5T85TqBHXXV3VqZvh+loTM1BKD4jZb72TNakbfai4QZ0X9PtcD373Q== X-Received: by 2002:aa7:d818:: with SMTP id v24mr33219933edq.298.1640912223435; Thu, 30 Dec 2021 16:57:03 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 16/22] dma: Let ld*_dma() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:40 +0100 Message-Id: <20211231005546.723396-17-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912228368000001 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 Message-Id: <20211223115554.3155328-17-philmd@redhat.com> --- 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 009dd3ca960..d1635f55870 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 20:13:01 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=1640912231; cv=none; d=zohomail.com; s=zohoarc; b=DJt4bR/nm121eAAVZuVPCKYOdSNTSfLlNfP8wjaJP11/y27rVoGBHF3TNEiTg+qS7qwoniNi8exOMXAjb+/7n7hmbGezmTi0/UNIKM+pvtuNPDih905+VLo/fmDi/ZVTI8tjv2EIt+aDzxiE0X212i1MdJRL64I9L4/0UZH3TwM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912231; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=74OOiqX2C2ZPRJwdKtKEO75yG3GLUs7TFxrYw/0AG1I=; b=NBRisdl04ARkW+mq8UoB75eOHBz5LLkoTdilBIpfFPKat5Kbe4qcQNfduH+qKudozal9yroUvqwLoIkgCILDmx7+nCtFYyeMHJp/A76Nj8zCv8TDbOgVPjsDMS5mmt09IrMwaefWmBjMQ5gQEoJRDJE9TZdPoJqlbCIiD36kFzs= 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 1640912231114514.9515678110736; Thu, 30 Dec 2021 16:57:11 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-21-1TTS9JZiPNuZKxHHdG80wA-1; Thu, 30 Dec 2021 19:57:09 -0500 Received: by mail-ed1-f72.google.com with SMTP id t1-20020a056402524100b003f8500f6e35so18072815edd.8 for ; Thu, 30 Dec 2021 16:57:09 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id w11sm6836821edd.21.2021.12.30.16.57.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912230; 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=74OOiqX2C2ZPRJwdKtKEO75yG3GLUs7TFxrYw/0AG1I=; b=TZWrLaTdXRVbb9Z4s9LJ3ypFhJyo4FLkAG1jDLz6t6s1q0WT0wEdflDQ7S0AtVDYAFs9o7 sQBzCQi/1NYk2GCRITckwiV2elF7nw61Hq5wQDm4BcBn1pRdgWOhOhGkL6rF8rUdlZ+QAh XMbr3XMQJP79gvsGc6ed8fc1k9YwQmA= X-MC-Unique: 1TTS9JZiPNuZKxHHdG80wA-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=74OOiqX2C2ZPRJwdKtKEO75yG3GLUs7TFxrYw/0AG1I=; b=VVHR1RBB3TqYLHO856aXhJT2TnJyRZgYS0tJE1Q/1M1YCBn+YlVwi436zUQCO6nfPm btnw/z8jjOdWhk2dr04926GkYE5jOEl2M6sLa4OYQ3VeIxekiThP7NRSBlqtSbhOEhB/ YaoeaUJkI90j50Qf9v0wZ0w5+txzzlhgUoK18PK2wNU+zKe+F3aHwU0pZwh4hn4ENveL 1mnTNTfPTeveBNeHLazTz5y3snFbPbX3wHCi65tT7jQikzun23AjcJEucY3mGEmdbDUE mMPQ6Fy0GwJ6bimzM3eSt171LIjbK2PthbarEbbJw2c9cdIx9yGTtlXSu9LZKQ1OZfiD ZuCQ== X-Gm-Message-State: AOAM531eKkVfFGo2Ya4cYrHb82xd+vJt/R7LdpVTbFeux198pMBr2bif XzQHuZ9bU0ZIROpCSImQ2t6aJYHi51RIWm7K3PPbXrQ/Acvw3/yhCfyqY0I/X8uS3pkGqfxPGSp ztEbXCAyD2yfeMw== X-Received: by 2002:aa7:d795:: with SMTP id s21mr988788edq.30.1640912227985; Thu, 30 Dec 2021 16:57:07 -0800 (PST) X-Google-Smtp-Source: ABdhPJwO9MOEJbowYJ6hMSuiR+HX2ZiP/i9IskH9TxDPXUEPluOOVHYkaXf2i+FmlDmSIYCjj84VBA== X-Received: by 2002:aa7:d795:: with SMTP id s21mr988782edq.30.1640912227876; Thu, 30 Dec 2021 16:57:07 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 17/22] dma: Let st*_dma() propagate MemTxResult Date: Fri, 31 Dec 2021 01:55:41 +0100 Message-Id: <20211231005546.723396-18-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912232732000001 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 Message-Id: <20211223115554.3155328-18-philmd@redhat.com> --- 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 d1635f55870..895044d747f 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 20:13:01 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=1640912235; cv=none; d=zohomail.com; s=zohoarc; b=IRBK3FdiWkypKcLtKh90gQ4kxt6LECPBWhs9KdWh92IC4Gqwu8RjZ4UXfm+cD6s01R3pkSZLT5jI69gpSonzspYIUqvR1aCITNEzbhQZa95AcKJT+6OgNtf5jmsPY87fH23tFTo4CqOjg/dCfZGtZGNSS+mrVADZfQtDB81mGpk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912235; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=wLEy95INhAWDbLQg6MEe6L4Zh42fLXEnwRSZqGrXmjI=; b=ltQ0+qehoKehv89/OEzW8jLTUhuFHkuwgHr+fb7UXmbU90YH7tUMpljckeIn98iTsS/eqgVlaFpBd12IIkvxf4R2sMPgv0gYHqu9AwcB4kgD/arGvVXrtiS5NIYwxxDFxzFXLHfeYFgY8/8QseO4HLVQl0wW3QiLrd3b3w8kG1I= 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 1640912235244292.4427922252522; Thu, 30 Dec 2021 16:57:15 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-6-EXbdTarOPCCoeGlBZ9_2JQ-1; Thu, 30 Dec 2021 19:57:13 -0500 Received: by mail-ed1-f72.google.com with SMTP id q15-20020a056402518f00b003f87abf9c37so17983634edd.15 for ; Thu, 30 Dec 2021 16:57:13 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id y22sm7507857eda.49.2021.12.30.16.57.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912234; 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=wLEy95INhAWDbLQg6MEe6L4Zh42fLXEnwRSZqGrXmjI=; b=LFRYTzTRImwutE2Q5s9NlZ0mma3CpHP/iO8r/AyS244AGw+5HkD++GGt4+8ScFWIzRgYev GGyb5scm3h3gAR/8ojtAikV8oy6CqKXIxkGZTGY2K3IeVbI33TGUHFl96jY0liiwxPsvcG vyjAJzlh3IAEq0+S3WP5mSWcSd38vF8= X-MC-Unique: EXbdTarOPCCoeGlBZ9_2JQ-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=wLEy95INhAWDbLQg6MEe6L4Zh42fLXEnwRSZqGrXmjI=; b=x8/hvkTrLaJlCPPbS2byN8vcuxWi1jTJtQUCRXaVEzg8c06XKNolFin9Ik6nd97qKY XpRCAL/qpxT0hWVMeqEmBwFFfacunaYQaWgkIkMmGReZ77t5ntqf2Siszmr8Rm/C5k7O ioz4oD8/FCb8+LEfFVF5/ZdteLrOp+Nqx4Gj4Hfn/saAwDE9yBWsuETzcVnYoEXfAtiT bV/ofUjcJycH6YGTsC46j/O6JMK24kCJ5vlpWstpzKvCdYAnraYBC1l3ETeJnioeNZpL eNTA2wzbapcElYTaiUZ7EsGIYpHrB8OnFvl2ZaeM32T8DNO/qAPe71/jbmmjBmELE+m7 kG0Q== X-Gm-Message-State: AOAM532TKHZh/shwKlA0yttLZJi2sNgtOUR832BvdyZeiB0H6tDCnjNw a/QCBN3oUaw189EYIiNajx1kC/beiD3tMwzCH5p0TcExfPgAoIL43tgeB1kzf74l4MocM0g7oWO D3FVWJ6Um8jPU5A== X-Received: by 2002:aa7:de82:: with SMTP id j2mr14087728edv.389.1640912232455; Thu, 30 Dec 2021 16:57:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJzsoPUXB7i3bz8MVUofJC1s28cruRcGmoMxPP4D0Jc4H58G0jJ4b4cU/NOujxuW7fVQ6q48Wg== X-Received: by 2002:aa7:de82:: with SMTP id j2mr14087722edv.389.1640912232314; Thu, 30 Dec 2021 16:57:12 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Subject: [PULL 18/22] dma: Let ld*_dma() propagate MemTxResult Date: Fri, 31 Dec 2021 01:55:42 +0100 Message-Id: <20211231005546.723396-19-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912237054000001 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 Message-Id: <20211223115554.3155328-19-philmd@redhat.com> --- 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 895044d747f..b3faef41b2f 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 20:13:01 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=1640912241; cv=none; d=zohomail.com; s=zohoarc; b=h+iflewk5JCaFQoM1aQDdfZUh+AdatlK++RGibyvEWpC8qapUfTzp1M+hkhWpK7ajo30g/O1K/Lm4Q0yENTRgKjMnSU9r+Ywd2gJdGTAOzv7TEkkljZivzXd20Zl6YQYb2LXu9oNy68EeoSYhjy5wn/Ll5CKCDYTV85X51ViY4w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912241; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=BXpVbj6TDB9n0qzhMpNrBoSB1bd85hb1RgWVt59qhCQ=; b=VgDNZde7eE/GZ7L1lJIlC6+/mG73Xh0g45qOieP9/MnQYtGpAmbIbyMaVBT+Hb+XwP/vDZ3CAt7hViUkFXJZpJHOKlP/LzeH6uV10HX5R6Ac50BMln1sf4sShtiw5zNXDlTNYnIhTNSPK8v9ZiYjmvpCTMQaeC5K2RkV5U7sHHY= 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 1640912241047316.7689945079045; Thu, 30 Dec 2021 16:57:21 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-635-sZiIAzBqP2GqTXNEgnEh0g-1; Thu, 30 Dec 2021 19:57:18 -0500 Received: by mail-ed1-f72.google.com with SMTP id w6-20020a05640234c600b003f916e1b615so8836005edc.17 for ; Thu, 30 Dec 2021 16:57:18 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id g10sm8032799eja.80.2021.12.30.16.57.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912240; 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=BXpVbj6TDB9n0qzhMpNrBoSB1bd85hb1RgWVt59qhCQ=; b=HMhvJd8oZvAmNm7rrotMYk26W9jK3IZjaUZrbnp2DhCAq7+gq9t4rQvVDMrBbtzVyXP8br rvNwafMqLKnCSak+Rmtr0HvsyphUNBT2d1rnDsdBRXpp0RUPZDfj74EHRhzWjcLqC2dcvm /524V46dLRWm62NMa25Qy+rzzLM7zi4= X-MC-Unique: sZiIAzBqP2GqTXNEgnEh0g-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=BXpVbj6TDB9n0qzhMpNrBoSB1bd85hb1RgWVt59qhCQ=; b=1dP4pMSWPYrqa6t0+TC3Du/+DWU+Vz0afL92Ig+vpP/ExfBZix/PlEXXTchYf6t+du cf7U4rnLoNXUXZ78AjYK2YxuUNlU3733Jng89yVpglVJumnB5mavwy+MLFabaeB4A9mB 0fDwVTF9icz7l8pTjcg9wEh5vIuwNb8vaCPKGXga6t1S3RS/0ImfCsm/vKi20MIsvLcD F3KaY0RfegyJGKyPM9n9X58FDwav7oLpNG0ZV8iGiyX9wpyO9Nj2lqN00stVy3ukbbHp fFWB0FsooZY5sa4JdOVPdAe9Xd90S/TMUQRrbI7S2a1QmBqLAdUCWME4TLukHws7tnIH ucwQ== X-Gm-Message-State: AOAM530LbZ6Hlfc37Fxw8eE1p2HN86dte6vKSbXldpizvmiB59a6aWs4 eWNbb3L7OVdxTUH292dch6uWFiBCdgpCw5SD7GHfLBISh0n93UwzE6gqplaI66D3zGeSui6YGCQ W590ns5YH7CoIWA== X-Received: by 2002:a17:907:9488:: with SMTP id dm8mr26883584ejc.571.1640912237129; Thu, 30 Dec 2021 16:57:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJxLsoxIl1gqjv4fTisCkLnmD9ugM/BYnIQJ0x/JugYm+RsrgYfDr2OPO+lMhBZcCKOFcXB1xQ== X-Received: by 2002:a17:907:9488:: with SMTP id dm8mr26883566ejc.571.1640912236919; Thu, 30 Dec 2021 16:57:16 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 19/22] pci: Let st*_pci_dma() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:43 +0100 Message-Id: <20211231005546.723396-20-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912241482000001 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 Message-Id: <20211223115554.3155328-21-philmd@redhat.com> --- 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 091a350e055..b5e8b145c50 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 20:13:01 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=1640912244; cv=none; d=zohomail.com; s=zohoarc; b=JciIQkwY7z12BDf0SDSw/CUhEtfzLALKXwmQuWNvJV5SZBxD6vdCZ/yb+bJlUJUcypZBrQSNzIrkSCEmpkt0htaTcmvZ8YmwGWj312bLCUQb9i2nyq2UWL3tLyF75AFhA80frLxUCT1Nm9QGXUJQltrqQG/hNV8/YVdGqtrJrXw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912244; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=sS8ViVFx9vU6BoRnUKd9yhbqttFC6mc9+Op2YaMRDYs=; b=a89a/OTlX8uOWkpjyCVE43TpQFYhfI9jfPI38J0S9zt06T+XIpKcDfS6wVEpvoKp2puhf8He+Kt3h2jHlrx4H1EmzQlh+I2/mLvUHvuCF9o9PzyHY13kiCa0EhT/XfDM3Snyoi/GDp+2hcdyFCexIEC2T8vMuI7/VbjsVxTYhQg= 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 1640912244602291.21786345139503; Thu, 30 Dec 2021 16:57:24 -0800 (PST) Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-372-o46jLpHRMVmXA05zKLp4FA-1; Thu, 30 Dec 2021 19:57:22 -0500 Received: by mail-ed1-f71.google.com with SMTP id o20-20020a056402439400b003f83cf1e472so18029858edc.18 for ; Thu, 30 Dec 2021 16:57:22 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id o22sm10040527edw.50.2021.12.30.16.57.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912244; 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=sS8ViVFx9vU6BoRnUKd9yhbqttFC6mc9+Op2YaMRDYs=; b=dWwpsfvUlqX0AU83xh7/f58Malr8kmceN6ZuK4ILAs7r1pVwJ/siTR/dg7bXtGqMNtmTZC CT8rUKdj8Z04N1IPirr+UbYoWLmJZ9hwDG+lWROuqadjRfP8WQx2vACkJA+LXBiE1je5Vf lX+9GsvCa07GdNbMA1oQmXPX29FZEsg= X-MC-Unique: o46jLpHRMVmXA05zKLp4FA-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=sS8ViVFx9vU6BoRnUKd9yhbqttFC6mc9+Op2YaMRDYs=; b=Huft4kBx43MD0JCSZnSKmM19cheB8APflip8+ExXWlTJ08R1HKgB29wg86HBny9aH6 fxCA1QKPETaZuwVj3yG3TQvgW313ZSwNZxw1e0O98Oq9FrQXxJBCGjKg8++cuY2VvAf3 OafP+JFyk+Y4e7VATm+Pt8MgSoaoHm6jNHCdpjZfBKSxl/I5CNerxKd2gO5yfGa9egfL TAiiU/O85VoMvOdNDSBlP5jN2vqfBg0Y/RQ/lRN87G2qkIU3l9LUpQBd9rJiu4wVS93A 7tFm2kVVNq1SGo5VH+kUdVRjhkVJAs8an4ZkeR1N9r1eby2/5LW2X5K0m3GRwJYrR8SN 157Q== X-Gm-Message-State: AOAM533i8pr+rFaN96Om6eZO3fJMNciPjuQDORD1yMBFwUt1ZaEx+xn1 BYolK+E/GVNDgaYq9Aa/juLoRxdlC/sAdiGRAIDuaxO2rzWQ9sww+Zcwyqpz1WV/kL2yJqjVoQx +QfWtCNbSLDHvLw== X-Received: by 2002:a17:907:8a06:: with SMTP id sc6mr26388507ejc.214.1640912241535; Thu, 30 Dec 2021 16:57:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJw6ibVnuPY4GlSyDOcAnwZZZPU10pLkkeMVmZrkgkjV4MELogdX/AenOPUep92zgaLuIngV8Q== X-Received: by 2002:a17:907:8a06:: with SMTP id sc6mr26388503ejc.214.1640912241298; Thu, 30 Dec 2021 16:57:21 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 20/22] pci: Let ld*_pci_dma() take MemTxAttrs argument Date: Fri, 31 Dec 2021 01:55:44 +0100 Message-Id: <20211231005546.723396-21-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912245718000001 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 Message-Id: <20211223115554.3155328-22-philmd@redhat.com> --- 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 b5e8b145c50..98b13708c13 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 20:13:01 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=1640912248; cv=none; d=zohomail.com; s=zohoarc; b=DmKBk62fiZeJddEOAkvpG9qHNk0w2BmnUB297l7rmmtmU52KeUEAXRmGUnbueHYFO12BXRLYuo1wFDrC1c5aCLdAchfc5x0rw2pg+Pu0HlKmy0fGEgdjE7pWJEiYOOcS3F87XbLNW/r27WGo96NCx3pqSqzq0NPVCcAPpHDoSP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912248; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=WCc06vNMSzgUMxZ/cS32IBGYYWJrzwAKS5pIQs2nrf4=; b=Avqz3HLQgw/ux3bK8SIYK3mKrswTc7zBo5ljNeIErIOajI4ol2mRO2RK4zbmPB+VCguUP8k4UzdyGhsCxH453AXX2d7iTTtfH/VqwO863d+/7ydczdb6uTCholU/BRHyhkdQyfKVhqQigK7BnbAbwQ+zRWa4u+UtkQlcgzzKCBA= 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 1640912248762853.0769484466853; Thu, 30 Dec 2021 16:57:28 -0800 (PST) Received: from mail-ed1-f69.google.com (mail-ed1-f69.google.com [209.85.208.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-546-NPDCil2dNgap6ya4R6Vvbg-1; Thu, 30 Dec 2021 19:57:27 -0500 Received: by mail-ed1-f69.google.com with SMTP id w10-20020a50d78a000000b003f82342a95aso18011540edi.22 for ; Thu, 30 Dec 2021 16:57:26 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id gz11sm8006244ejc.223.2021.12.30.16.57.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912248; 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=WCc06vNMSzgUMxZ/cS32IBGYYWJrzwAKS5pIQs2nrf4=; b=ijlZNasvT6wipIQxHeopz0iGaIuu5hWgMEqLoEHc2L2m9JRwv+bH7YylbbYbyQn0kb2Wa6 njTe2sMR84JO6oOk7VnqnhkCfCNXyqGoq5n6KTPynscziiW0XKfIskH+IpV243GmdgGb/Q E7DrpFIXYyhDgAMT/QAHbSsJtwDk42w= X-MC-Unique: NPDCil2dNgap6ya4R6Vvbg-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=WCc06vNMSzgUMxZ/cS32IBGYYWJrzwAKS5pIQs2nrf4=; b=K+Z8XqWuXEjVB3PFkzv4GlpyVSi0ZY34y7NnFH5Jy4MvCTv0fioZIhGe6C2f9frbb/ aJwjOUApd4U0mj94NfvciL5kexXghXS9At4/QJpHd7DB11oAP1BUGDKmDKmpcRkiSB04 JMSYB+OtsrvKAH/5I4unIBPhDIRs1kKYXNpLaoEU6hl5YrHASDmUoZHWF6dTQ5d4pUE+ qNSfx6x3E706gnChCr3X1Ymi7scTqEGrRh5Bc63SIh751IU+whfyWLX9X/W7+Dy95sBi 3LXp9QGTViCXal129Yp+lZ1X0/C/MtftKym0eZtAa3Z4mC34BT/4OWCyhkJ5Pd0xCJS4 8oxw== X-Gm-Message-State: AOAM533qc86s2teI2/hvG//irTNbgWJF5BFudDvU4JGVlVz9cljqJYVc UpxhtlNWiKaGLGGPtL6QreWmnmnuNTMbux7tA56mQ/ey9juGCQSUGiNinXRSebBUzM0fahcGkYV tQgAL+FIxQxvbkA== X-Received: by 2002:a17:906:71cc:: with SMTP id i12mr27877414ejk.457.1640912246006; Thu, 30 Dec 2021 16:57:26 -0800 (PST) X-Google-Smtp-Source: ABdhPJzCkxy/ojJhDjIpWuer4jNlpYMRS5RzzN9GtDur68JfVxG8gQtvR4aGpZXW+w3lCwcDBHoTbw== X-Received: by 2002:a17:906:71cc:: with SMTP id i12mr27877406ejk.457.1640912245839; Thu, 30 Dec 2021 16:57:25 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 21/22] pci: Let st*_pci_dma() propagate MemTxResult Date: Fri, 31 Dec 2021 01:55:45 +0100 Message-Id: <20211231005546.723396-22-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912250040000001 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 Message-Id: <20211223115554.3155328-23-philmd@redhat.com> --- 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 20:13:01 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=1640912253; cv=none; d=zohomail.com; s=zohoarc; b=iRqBbFCgVjkjQ7U92sIjCr8oJIKs9tTpn7y0pZTWoe16fHF5I0r9AV5Ywgo11f6DNssLCUBHMvY/Er5psYnyDu5soHyMq2dxgzDaVgtwsobx+yYVp/V3vMHb+qYlmrQhbB1nvLgW51bwHn3Q/rF1jtVuOu55wPFql3gObz39I9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1640912253; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=g5KO5RB8afA4fBy3fxbE0nS0ip/QCDlb7ylGTbGpnEg=; b=JGZiN5AUQZtcs3+aa6av0QBNVdeVEyIpT93pKX+95iQ1WxlXYRz/2CHFsPdMB64ndRM+hAwMDq49qGeCMM2qle1J1KYSLPNl0aKrFHdGr+AVl8YFH7Y//IOi+9Zk94vopYdvAIh4qIFao+EzQT8SpkzY4cs198wZMXbNBZTng04= 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 1640912253704565.1848357034786; Thu, 30 Dec 2021 16:57:33 -0800 (PST) Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-558-a-KVTBjpNDqpNNZ7_EpPZw-1; Thu, 30 Dec 2021 19:57:31 -0500 Received: by mail-ed1-f72.google.com with SMTP id s12-20020a50ab0c000000b003efdf5a226fso18012985edc.10 for ; Thu, 30 Dec 2021 16:57:31 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (26.red-83-50-86.dynamicip.rima-tde.net. [83.50.86.26]) by smtp.gmail.com with ESMTPSA id sc34sm8145177ejc.7.2021.12.30.16.57.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Dec 2021 16:57:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1640912253; 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=g5KO5RB8afA4fBy3fxbE0nS0ip/QCDlb7ylGTbGpnEg=; b=LyVcfdiC/Klhtli9qtJNcUNSqKVqL98R1uS1lh0QyveCJJe2xl/KumefWjz1n0DbVRDGaV W2ffh6O+xysrxcJc8SQ0T48CwIZPIwC0ly/QBYICpPLZ78aqolLbmjO4/yBipnUG5UpZYB zvRAjC+k7HkFN8YeJW5Ln3uTOw7Ih8U= X-MC-Unique: a-KVTBjpNDqpNNZ7_EpPZw-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=g5KO5RB8afA4fBy3fxbE0nS0ip/QCDlb7ylGTbGpnEg=; b=kTC400UpTDx2o0uIDBMBIZ7uyn5JUREpLBuB7klqKrDiv9AZgBZ6CIiqMUiAkXhj+9 yqgacgT8s8BvimQ59x/zVwa2N5Ed2KO6FpACEMkMp020dLRjcs34rKSzpxvsP/gVFDPV eliRRhxJno9bBAuIkZEuDbp1cMEZpCldMjtfWJEKvCPYwLjGJ+kdmhYlQnXwrmm94r4j mv7JPiUcGOhvAEt0wuwm74W024UmXbY1t6ta0CyhYV8DwWjAd7YDujEbCMXE7jPHLylu pMoQCSxrY9Rjf7k4lR0jjZ/LaRQneg5XVmGXPpRemGj8nljH6/IL9ftLYou/nsjTNxNQ doeg== X-Gm-Message-State: AOAM53035q1I+geYD/AeI/frZYwaWTRjmYDNuOHDiX5Kk9oFl/YB49Qy BX9gXgh6FmKgG241wh8uXoLs0IkH6P+WX+QRucKV5xk3ZZ58TYzLcw2DZwFRFWrRg5cRc0y1QzH PRP7xUGd1T6TTAA== X-Received: by 2002:a17:907:2cc4:: with SMTP id hg4mr26206995ejc.150.1640912250650; Thu, 30 Dec 2021 16:57:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJyRkDdXq2iglJiRTmnYSjyrxTa0KKzai1KQTgDimUBQleaRdDeHuCxNQ9lMREt5U+f1ZbdACA== X-Received: by 2002:a17:907:2cc4:: with SMTP id hg4mr26206986ejc.150.1640912250396; Thu, 30 Dec 2021 16:57:30 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Richard Henderson Subject: [PULL 22/22] pci: Let ld*_pci_dma() propagate MemTxResult Date: Fri, 31 Dec 2021 01:55:46 +0100 Message-Id: <20211231005546.723396-23-philmd@redhat.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211231005546.723396-1-philmd@redhat.com> References: <20211231005546.723396-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: 1640912254374000001 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 Message-Id: <20211223115554.3155328-24-philmd@redhat.com> --- 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 98b13708c13..dc9bbdb740e 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