hw/char/goldfish_tty.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
Rather than using address_space_rw(..., 0 or 1),
use the simpler DMA memory API which expand to
the same code. This allows removing a cast on
the 'buf' variable which is really const. Since
'buf' is only used in the CMD_READ_BUFFER case,
we can reduce its scope.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/char/goldfish_tty.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/hw/char/goldfish_tty.c b/hw/char/goldfish_tty.c
index f8ff043c396..cdff46bc13b 100644
--- a/hw/char/goldfish_tty.c
+++ b/hw/char/goldfish_tty.c
@@ -16,6 +16,7 @@
#include "qemu/log.h"
#include "trace.h"
#include "exec/address-spaces.h"
+#include "sysemu/dma.h"
#include "hw/char/goldfish_tty.h"
#define GOLDFISH_TTY_VERSION 1
@@ -69,7 +70,6 @@ static uint64_t goldfish_tty_read(void *opaque, hwaddr addr,
static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
{
uint32_t to_copy;
- uint8_t *buf;
uint8_t data_out[GOLFISH_TTY_BUFFER_SIZE];
int len;
uint64_t ptr;
@@ -97,8 +97,8 @@ static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
while (len) {
to_copy = MIN(GOLFISH_TTY_BUFFER_SIZE, len);
- address_space_rw(&address_space_memory, ptr,
- MEMTXATTRS_UNSPECIFIED, data_out, to_copy, 0);
+ dma_memory_read_relaxed(&address_space_memory, ptr,
+ data_out, to_copy);
qemu_chr_fe_write_all(&s->chr, data_out, to_copy);
len -= to_copy;
@@ -109,9 +109,9 @@ static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
len = s->data_len;
ptr = s->data_ptr;
while (len && !fifo8_is_empty(&s->rx_fifo)) {
- buf = (uint8_t *)fifo8_pop_buf(&s->rx_fifo, len, &to_copy);
- address_space_rw(&address_space_memory, ptr,
- MEMTXATTRS_UNSPECIFIED, buf, to_copy, 1);
+ const uint8_t *buf = fifo8_pop_buf(&s->rx_fifo, len, &to_copy);
+
+ dma_memory_write_relaxed(&address_space_memory, ptr, buf, to_copy);
len -= to_copy;
ptr += to_copy;
--
2.41.0
On 23/7/24 20:18, Philippe Mathieu-Daudé wrote: > Rather than using address_space_rw(..., 0 or 1), > use the simpler DMA memory API which expand to > the same code. This allows removing a cast on > the 'buf' variable which is really const. Since > 'buf' is only used in the CMD_READ_BUFFER case, > we can reduce its scope. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > hw/char/goldfish_tty.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) Thanks for the quick reviews, patch queued.
On 7/23/24 11:18, Philippe Mathieu-Daudé wrote:
> Rather than using address_space_rw(..., 0 or 1),
> use the simpler DMA memory API which expand to
> the same code. This allows removing a cast on
> the 'buf' variable which is really const. Since
> 'buf' is only used in the CMD_READ_BUFFER case,
> we can reduce its scope.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> hw/char/goldfish_tty.c | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/hw/char/goldfish_tty.c b/hw/char/goldfish_tty.c
> index f8ff043c396..cdff46bc13b 100644
> --- a/hw/char/goldfish_tty.c
> +++ b/hw/char/goldfish_tty.c
> @@ -16,6 +16,7 @@
> #include "qemu/log.h"
> #include "trace.h"
> #include "exec/address-spaces.h"
> +#include "sysemu/dma.h"
> #include "hw/char/goldfish_tty.h"
>
> #define GOLDFISH_TTY_VERSION 1
> @@ -69,7 +70,6 @@ static uint64_t goldfish_tty_read(void *opaque, hwaddr addr,
> static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
> {
> uint32_t to_copy;
> - uint8_t *buf;
> uint8_t data_out[GOLFISH_TTY_BUFFER_SIZE];
> int len;
> uint64_t ptr;
> @@ -97,8 +97,8 @@ static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
> while (len) {
> to_copy = MIN(GOLFISH_TTY_BUFFER_SIZE, len);
>
> - address_space_rw(&address_space_memory, ptr,
> - MEMTXATTRS_UNSPECIFIED, data_out, to_copy, 0);
> + dma_memory_read_relaxed(&address_space_memory, ptr,
> + data_out, to_copy);
> qemu_chr_fe_write_all(&s->chr, data_out, to_copy);
>
> len -= to_copy;
> @@ -109,9 +109,9 @@ static void goldfish_tty_cmd(GoldfishTTYState *s, uint32_t cmd)
> len = s->data_len;
> ptr = s->data_ptr;
> while (len && !fifo8_is_empty(&s->rx_fifo)) {
> - buf = (uint8_t *)fifo8_pop_buf(&s->rx_fifo, len, &to_copy);
> - address_space_rw(&address_space_memory, ptr,
> - MEMTXATTRS_UNSPECIFIED, buf, to_copy, 1);
> + const uint8_t *buf = fifo8_pop_buf(&s->rx_fifo, len, &to_copy);
> +
> + dma_memory_write_relaxed(&address_space_memory, ptr, buf, to_copy);
>
> len -= to_copy;
> ptr += to_copy;
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
On Tue, Jul 23, 2024 at 08:18:50PM +0200, Philippe Mathieu-Daudé wrote: > Rather than using address_space_rw(..., 0 or 1), > use the simpler DMA memory API which expand to > the same code. This allows removing a cast on > the 'buf' variable which is really const. Since > 'buf' is only used in the CMD_READ_BUFFER case, > we can reduce its scope. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Peter Xu <peterx@redhat.com> -- Peter Xu
© 2016 - 2026 Red Hat, Inc.