Re: [Qemu-devel] [PATCH] qtest: Use cpu address space instead of system memory

2018-07-02 Thread Paolo Bonzini
On 02/07/2018 08:52, Julia Suvorova wrote:
> Some devices (like nvic in armv7m) are not accessable through
> address_space_memory, therefore can not be tested with qtest.
> 
> Signed-off-by: Julia Suvorova 
> ---
>  qtest.c | 39 ++-
>  1 file changed, 26 insertions(+), 13 deletions(-)
> 
> diff --git a/qtest.c b/qtest.c
> index cbbfb71114..69b9e9962b 100644
> --- a/qtest.c
> +++ b/qtest.c
> @@ -387,19 +387,23 @@ static void qtest_process_command(CharBackend *chr, 
> gchar **words)
>  
>  if (words[0][5] == 'b') {
>  uint8_t data = value;
> -cpu_physical_memory_write(addr, , 1);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + , 1, true);
>  } else if (words[0][5] == 'w') {
>  uint16_t data = value;
>  tswap16s();
> -cpu_physical_memory_write(addr, , 2);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 2, true);
>  } else if (words[0][5] == 'l') {
>  uint32_t data = value;
>  tswap32s();
> -cpu_physical_memory_write(addr, , 4);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 4, true);
>  } else if (words[0][5] == 'q') {
>  uint64_t data = value;
>  tswap64s();
> -cpu_physical_memory_write(addr, , 8);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 8, true);
>  }
>  qtest_send_prefix(chr);
>  qtest_send(chr, "OK\n");
> @@ -417,18 +421,22 @@ static void qtest_process_command(CharBackend *chr, 
> gchar **words)
>  
>  if (words[0][4] == 'b') {
>  uint8_t data;
> -cpu_physical_memory_read(addr, , 1);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + , 1, false);
>  value = data;
>  } else if (words[0][4] == 'w') {
>  uint16_t data;
> -cpu_physical_memory_read(addr, , 2);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 2, false);
>  value = tswap16(data);
>  } else if (words[0][4] == 'l') {
>  uint32_t data;
> -cpu_physical_memory_read(addr, , 4);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 4, false);
>  value = tswap32(data);
>  } else if (words[0][4] == 'q') {
> -cpu_physical_memory_read(addr, , 8);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + (uint8_t *) , 8, false);
>  tswap64s();
>  }
>  qtest_send_prefix(chr);
> @@ -448,7 +456,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
> **words)
>  g_assert(len);
>  
>  data = g_malloc(len);
> -cpu_physical_memory_read(addr, data, len);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + data, len, false);
>  
>  enc = g_malloc(2 * len + 1);
>  for (i = 0; i < len; i++) {
> @@ -473,7 +482,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
> **words)
>  g_assert(ret == 0);
>  
>  data = g_malloc(len);
> -cpu_physical_memory_read(addr, data, len);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + data, len, false);
>  b64_data = g_base64_encode(data, len);
>  qtest_send_prefix(chr);
>  qtest_sendf(chr, "OK %s\n", b64_data);
> @@ -507,7 +517,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
> **words)
>  data[i] = 0;
>  }
>  }
> -cpu_physical_memory_write(addr, data, len);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + data, len, true);
>  g_free(data);
>  
>  qtest_send_prefix(chr);
> @@ -529,7 +540,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
> **words)
>  if (len) {
>  data = g_malloc(len);
>  memset(data, pattern, len);
> -cpu_physical_memory_write(addr, data, len);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + data, len, true);
>  g_free(data);
>  }
>  
> @@ -562,7 +574,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
> **words)
>  out_len = MIN(out_len, len);
>  }
>  
> -cpu_physical_memory_write(addr, data, out_len);
> +address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
> + 

Re: [Qemu-devel] [PATCH] qtest: Use cpu address space instead of system memory

2018-07-02 Thread Stefan Hajnoczi
On Mon, Jul 02, 2018 at 09:52:37AM +0300, Julia Suvorova via Qemu-devel wrote:
> Some devices (like nvic in armv7m) are not accessable through
> address_space_memory, therefore can not be tested with qtest.
> 
> Signed-off-by: Julia Suvorova 
> ---
>  qtest.c | 39 ++-
>  1 file changed, 26 insertions(+), 13 deletions(-)

Reviewed-by: Stefan Hajnoczi 


signature.asc
Description: PGP signature


[Qemu-devel] [PATCH] qtest: Use cpu address space instead of system memory

2018-07-02 Thread Julia Suvorova via Qemu-devel
Some devices (like nvic in armv7m) are not accessable through
address_space_memory, therefore can not be tested with qtest.

Signed-off-by: Julia Suvorova 
---
 qtest.c | 39 ++-
 1 file changed, 26 insertions(+), 13 deletions(-)

diff --git a/qtest.c b/qtest.c
index cbbfb71114..69b9e9962b 100644
--- a/qtest.c
+++ b/qtest.c
@@ -387,19 +387,23 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 
 if (words[0][5] == 'b') {
 uint8_t data = value;
-cpu_physical_memory_write(addr, , 1);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ , 1, true);
 } else if (words[0][5] == 'w') {
 uint16_t data = value;
 tswap16s();
-cpu_physical_memory_write(addr, , 2);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 2, true);
 } else if (words[0][5] == 'l') {
 uint32_t data = value;
 tswap32s();
-cpu_physical_memory_write(addr, , 4);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 4, true);
 } else if (words[0][5] == 'q') {
 uint64_t data = value;
 tswap64s();
-cpu_physical_memory_write(addr, , 8);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 8, true);
 }
 qtest_send_prefix(chr);
 qtest_send(chr, "OK\n");
@@ -417,18 +421,22 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 
 if (words[0][4] == 'b') {
 uint8_t data;
-cpu_physical_memory_read(addr, , 1);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ , 1, false);
 value = data;
 } else if (words[0][4] == 'w') {
 uint16_t data;
-cpu_physical_memory_read(addr, , 2);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 2, false);
 value = tswap16(data);
 } else if (words[0][4] == 'l') {
 uint32_t data;
-cpu_physical_memory_read(addr, , 4);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 4, false);
 value = tswap32(data);
 } else if (words[0][4] == 'q') {
-cpu_physical_memory_read(addr, , 8);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ (uint8_t *) , 8, false);
 tswap64s();
 }
 qtest_send_prefix(chr);
@@ -448,7 +456,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 g_assert(len);
 
 data = g_malloc(len);
-cpu_physical_memory_read(addr, data, len);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ data, len, false);
 
 enc = g_malloc(2 * len + 1);
 for (i = 0; i < len; i++) {
@@ -473,7 +482,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 g_assert(ret == 0);
 
 data = g_malloc(len);
-cpu_physical_memory_read(addr, data, len);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ data, len, false);
 b64_data = g_base64_encode(data, len);
 qtest_send_prefix(chr);
 qtest_sendf(chr, "OK %s\n", b64_data);
@@ -507,7 +517,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 data[i] = 0;
 }
 }
-cpu_physical_memory_write(addr, data, len);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ data, len, true);
 g_free(data);
 
 qtest_send_prefix(chr);
@@ -529,7 +540,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 if (len) {
 data = g_malloc(len);
 memset(data, pattern, len);
-cpu_physical_memory_write(addr, data, len);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ data, len, true);
 g_free(data);
 }
 
@@ -562,7 +574,8 @@ static void qtest_process_command(CharBackend *chr, gchar 
**words)
 out_len = MIN(out_len, len);
 }
 
-cpu_physical_memory_write(addr, data, out_len);
+address_space_rw(first_cpu->as, addr, MEMTXATTRS_UNSPECIFIED,
+ data, len, true);
 
 qtest_send_prefix(chr);
 qtest_send(chr, "OK\n");
-- 
2.17.1