[PATCH v42 05/98] hw/sd/sdcard: Trace requested address computed by sd_req_get_address()

Philippe Mathieu-Daudé posted 98 patches 6 months ago
There is a newer version of this series
[PATCH v42 05/98] hw/sd/sdcard: Trace requested address computed by sd_req_get_address()
Posted by Philippe Mathieu-Daudé 6 months ago
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/sd/sd.c         | 9 +++++++--
 hw/sd/trace-events | 1 +
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 090a6fdcdb..464576751a 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -608,10 +608,15 @@ static void sd_response_r7_make(SDState *sd, uint8_t *response)
 
 static uint64_t sd_req_get_address(SDState *sd, SDRequest req)
 {
+    uint64_t addr;
+
     if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) {
-        return (uint64_t) req.arg << HWBLOCK_SHIFT;
+        addr = (uint64_t) req.arg << HWBLOCK_SHIFT;
+    } else {
+        addr = req.arg;
     }
-    return req.arg;
+    trace_sdcard_req_addr(req.arg, addr);
+    return addr;
 }
 
 static inline uint64_t sd_addr_to_wpnum(uint64_t addr)
diff --git a/hw/sd/trace-events b/hw/sd/trace-events
index 0eee98a646..43eaeba149 100644
--- a/hw/sd/trace-events
+++ b/hw/sd/trace-events
@@ -50,6 +50,7 @@ sdcard_ejected(void) ""
 sdcard_erase(uint32_t first, uint32_t last) "addr first 0x%" PRIx32" last 0x%" PRIx32
 sdcard_lock(void) ""
 sdcard_unlock(void) ""
+sdcard_req_addr(uint32_t req_arg, uint64_t addr) "req 0x%" PRIx32 " addr 0x%" PRIx64
 sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
 sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
 sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint8_t value) "%s %20s/ CMD%02d ofs %"PRIu32" value 0x%02x"
-- 
2.41.0


Re: [PATCH v42 05/98] hw/sd/sdcard: Trace requested address computed by sd_req_get_address()
Posted by Luc Michel 6 months ago
On 09:00 Fri 28 Jun     , Philippe Mathieu-Daudé wrote:
> Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
> 
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>

Reviewed-by: Luc Michel <luc.michel@amd.com>

> ---
>  hw/sd/sd.c         | 9 +++++++--
>  hw/sd/trace-events | 1 +
>  2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 090a6fdcdb..464576751a 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -608,10 +608,15 @@ static void sd_response_r7_make(SDState *sd, uint8_t *response)
> 
>  static uint64_t sd_req_get_address(SDState *sd, SDRequest req)
>  {
> +    uint64_t addr;
> +
>      if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) {
> -        return (uint64_t) req.arg << HWBLOCK_SHIFT;
> +        addr = (uint64_t) req.arg << HWBLOCK_SHIFT;
> +    } else {
> +        addr = req.arg;
>      }
> -    return req.arg;
> +    trace_sdcard_req_addr(req.arg, addr);
> +    return addr;
>  }
> 
>  static inline uint64_t sd_addr_to_wpnum(uint64_t addr)
> diff --git a/hw/sd/trace-events b/hw/sd/trace-events
> index 0eee98a646..43eaeba149 100644
> --- a/hw/sd/trace-events
> +++ b/hw/sd/trace-events
> @@ -50,6 +50,7 @@ sdcard_ejected(void) ""
>  sdcard_erase(uint32_t first, uint32_t last) "addr first 0x%" PRIx32" last 0x%" PRIx32
>  sdcard_lock(void) ""
>  sdcard_unlock(void) ""
> +sdcard_req_addr(uint32_t req_arg, uint64_t addr) "req 0x%" PRIx32 " addr 0x%" PRIx64
>  sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
>  sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
>  sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint8_t value) "%s %20s/ CMD%02d ofs %"PRIu32" value 0x%02x"
> --
> 2.41.0
> 
> 

-- 

Re: [PATCH v42 05/98] hw/sd/sdcard: Trace requested address computed by sd_req_get_address()
Posted by Cédric Le Goater 6 months ago
On 6/28/24 9:00 AM, Philippe Mathieu-Daudé wrote:
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.


> ---
>   hw/sd/sd.c         | 9 +++++++--
>   hw/sd/trace-events | 1 +
>   2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 090a6fdcdb..464576751a 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -608,10 +608,15 @@ static void sd_response_r7_make(SDState *sd, uint8_t *response)
>   
>   static uint64_t sd_req_get_address(SDState *sd, SDRequest req)
>   {
> +    uint64_t addr;
> +
>       if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) {
> -        return (uint64_t) req.arg << HWBLOCK_SHIFT;
> +        addr = (uint64_t) req.arg << HWBLOCK_SHIFT;
> +    } else {
> +        addr = req.arg;
>       }
> -    return req.arg;
> +    trace_sdcard_req_addr(req.arg, addr);
> +    return addr;
>   }
>   
>   static inline uint64_t sd_addr_to_wpnum(uint64_t addr)
> diff --git a/hw/sd/trace-events b/hw/sd/trace-events
> index 0eee98a646..43eaeba149 100644
> --- a/hw/sd/trace-events
> +++ b/hw/sd/trace-events
> @@ -50,6 +50,7 @@ sdcard_ejected(void) ""
>   sdcard_erase(uint32_t first, uint32_t last) "addr first 0x%" PRIx32" last 0x%" PRIx32
>   sdcard_lock(void) ""
>   sdcard_unlock(void) ""
> +sdcard_req_addr(uint32_t req_arg, uint64_t addr) "req 0x%" PRIx32 " addr 0x%" PRIx64
>   sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
>   sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x%x"
>   sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, uint32_t offset, uint8_t value) "%s %20s/ CMD%02d ofs %"PRIu32" value 0x%02x"