From: "Michael S. Tsirkin" <mst@redhat.com>
To: Jason Chien <jason.chien@sifive.com>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org,
Palmer Dabbelt <palmer@dabbelt.com>,
Alistair Francis <alistair.francis@wdc.com>,
Weiwei Li <liwei1518@gmail.com>,
Daniel Henrique Barboza <dbarboza@ventanamicro.com>,
Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>,
Hannes Reinecke <hare@suse.com>,
qemu-block@nongnu.org
Subject: Re: [PATCH 1/3] include/hw/pci: Attach BDF to Memory Attributes
Date: Mon, 14 Apr 2025 11:28:46 -0400 [thread overview]
Message-ID: <20250414112346-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20250302091209.20063-2-jason.chien@sifive.com>
On Sun, Mar 02, 2025 at 05:12:07PM +0800, Jason Chien wrote:
> This commit adds the BDF to the memory attributes for DMA operations.
>
> Signed-off-by: Jason Chien <jason.chien@sifive.com>
> ---
> include/hw/pci/pci_device.h | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/include/hw/pci/pci_device.h b/include/hw/pci/pci_device.h
> index add208edfa..968f1ba3e9 100644
> --- a/include/hw/pci/pci_device.h
> +++ b/include/hw/pci/pci_device.h
> @@ -244,6 +244,8 @@ static inline MemTxResult pci_dma_rw(PCIDevice *dev, dma_addr_t addr,
> void *buf, dma_addr_t len,
> DMADirection dir, MemTxAttrs attrs)
> {
> + attrs.unspecified = 0;
> + attrs.requester_id = pci_requester_id(dev);
> return dma_memory_rw(pci_get_address_space(dev), addr, buf, len,
> dir, attrs);
> }
> @@ -292,6 +294,8 @@ static inline MemTxResult pci_dma_write(PCIDevice *dev, dma_addr_t addr,
> uint##_bits##_t *val, \
> MemTxAttrs attrs) \
> { \
> + attrs.unspecified = 0; \
> + attrs.requester_id = pci_requester_id(dev); \
> return ld##_l##_dma(pci_get_address_space(dev), addr, val, attrs); \
> } \
> static inline MemTxResult st##_s##_pci_dma(PCIDevice *dev, \
> @@ -299,6 +303,8 @@ static inline MemTxResult pci_dma_write(PCIDevice *dev, dma_addr_t addr,
> uint##_bits##_t val, \
> MemTxAttrs attrs) \
> { \
> + attrs.unspecified = 0; \
> + attrs.requester_id = pci_requester_id(dev); \
> return st##_s##_dma(pci_get_address_space(dev), addr, val, attrs); \
> }
>
> @@ -327,8 +333,8 @@ PCI_DMA_DEFINE_LDST(q_be, q_be, 64);
> static inline void *pci_dma_map(PCIDevice *dev, dma_addr_t addr,
> dma_addr_t *plen, DMADirection dir)
> {
> - return dma_memory_map(pci_get_address_space(dev), addr, plen, dir,
> - MEMTXATTRS_UNSPECIFIED);
> + MemTxAttrs attrs = {.requester_id = pci_requester_id(dev)};
> + return dma_memory_map(pci_get_address_space(dev), addr, plen, dir, attrs);
> }
Map is the only issue - bdf can technically change between map and
unmap.
The use in hw/net/net_tx_pkt.c is fine as it's under BQL.
I don't know about the use in megasas though.
I think it is probably fine as it seems to deal with commands
and I think any driver would flush these if changing BDF.
Cc megasas maintainers just to make sure though.
Also, adding a code comment here can't hurt.
> static inline void pci_dma_unmap(PCIDevice *dev, void *buffer, dma_addr_t len,
> --
> 2.43.2
next prev parent reply other threads:[~2025-04-14 15:29 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-02 9:12 [PATCH 0/3] Enhancing Device Identification in RISC-V IOMMU Using Memory Attributes Jason Chien
2025-03-02 9:12 ` [PATCH 1/3] include/hw/pci: Attach BDF to " Jason Chien
2025-03-07 12:39 ` Daniel Henrique Barboza
2025-03-12 16:59 ` Jason Chien
2025-03-19 16:40 ` Jason Chien
2025-04-14 15:10 ` Jason Chien
2025-04-14 15:28 ` Michael S. Tsirkin [this message]
2025-04-24 7:57 ` Jason Chien
2025-03-02 9:12 ` [PATCH 2/3] hw/riscv/riscv-iommu: Obtain Device IDs from " Jason Chien
2025-03-07 12:35 ` Daniel Henrique Barboza
2025-03-02 9:12 ` [PATCH 3/3] hw/riscv/riscv_iommu: Remove the "bus" property Jason Chien
2025-03-07 12:36 ` Daniel Henrique Barboza
2025-04-04 1:43 ` Alistair Francis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250414112346-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=alistair.francis@wdc.com \
--cc=dbarboza@ventanamicro.com \
--cc=fam@euphon.net \
--cc=hare@suse.com \
--cc=jason.chien@sifive.com \
--cc=liwei1518@gmail.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=palmer@dabbelt.com \
--cc=pbonzini@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-riscv@nongnu.org \
--cc=zhiwei_liu@linux.alibaba.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.