mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 09:43:56 -06:00
dma: Let dma_memory_read/write() take MemTxAttrs argument
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 <richard.henderson@linaro.org> Reviewed-by: Li Qiang <liq3ea@gmail.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20211223115554.3155328-6-philmd@redhat.com>
This commit is contained in:
parent
23faf5694f
commit
ba06fe8add
30 changed files with 241 additions and 150 deletions
|
@ -715,7 +715,8 @@ static bool pnv_phb3_resolve_pe(PnvPhb3DMASpace *ds)
|
|||
bus_num = pci_bus_num(ds->bus);
|
||||
addr = rtt & PHB_RTT_BASE_ADDRESS_MASK;
|
||||
addr += 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 = 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;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,8 @@ static bool phb3_msi_read_ive(PnvPHB3 *phb, int srcno, uint64_t *out_ive)
|
|||
return false;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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_addr);
|
||||
}
|
||||
|
@ -89,7 +91,8 @@ static void phb3_msi_set_q(Phb3MsiState *msi, int srcno)
|
|||
return;
|
||||
}
|
||||
|
||||
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_addr);
|
||||
}
|
||||
|
|
|
@ -891,7 +891,8 @@ static bool pnv_phb4_resolve_pe(PnvPhb4DMASpace *ds)
|
|||
bus_num = pci_bus_num(ds->bus);
|
||||
addr = rtt & PHB_RTT_BASE_ADDRESS_MASK;
|
||||
addr += 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 = 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, taddr);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue