diff mbox series

[RFC] ppc/spapr: Change printf format to %HWADDR_PRId for MIN_RMA_SLOF

Message ID 20240912065207.508808-1-adityag@linux.ibm.com
State New
Headers show
Series [RFC] ppc/spapr: Change printf format to %HWADDR_PRId for MIN_RMA_SLOF | expand

Commit Message

Aditya Gupta Sept. 12, 2024, 6:52 a.m. UTC
Currently starting a pSeries machine, with lesser than 128MiB shows
below error:

    qemu-system-ppc64: pSeries SLOF firmware requires >= 80ldMiB guest RMA (Real Mode Area memory)

Above '80ldMib' is in hex, and it means 0x80 MiB = 128 MiB.

Change format specifier for this value to use 'HWADDR_PRId', instead of
'HWADDR_PRIx' thus showing decimal value instead of hex.

Thus, change the message to below error:

    qemu-system-ppc64: pSeries SLOF firmware requires >= 128MiB guest RMA (Real Mode Area memory)

Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>

---
This is an RFC, as it confused me why does QEMU print that error even with '-m' >80 MB.

This patch can also be considered a personal preference to see it as a decimal value instead of hex.

Or maybe we can have '0x80 MiB' instead ?

Does the 'ldMiB' actually mean that the value is in hexadecimal ? I did not find a reason in git history.
---
---
 hw/ppc/spapr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Philippe Mathieu-Daudé Sept. 12, 2024, 7:04 a.m. UTC | #1
Hi Aditya,

On 12/9/24 08:52, Aditya Gupta wrote:
> Currently starting a pSeries machine, with lesser than 128MiB shows
> below error:
> 
>      qemu-system-ppc64: pSeries SLOF firmware requires >= 80ldMiB guest RMA (Real Mode Area memory)
> 
> Above '80ldMib' is in hex, and it means 0x80 MiB = 128 MiB.
> 
> Change format specifier for this value to use 'HWADDR_PRId', instead of
> 'HWADDR_PRIx' thus showing decimal value instead of hex.
> 
> Thus, change the message to below error:
> 
>      qemu-system-ppc64: pSeries SLOF firmware requires >= 128MiB guest RMA (Real Mode Area memory)
> 
> Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
> 
> ---
> This is an RFC, as it confused me why does QEMU print that error even with '-m' >80 MB.
> 
> This patch can also be considered a personal preference to see it as a decimal value instead of hex.
> 
> Or maybe we can have '0x80 MiB' instead ?

Simply use size_to_str(), see hw/ppc/pnv.c:

     /* allocate RAM */
     if (machine->ram_size < mc->default_ram_size) {
         char *sz = size_to_str(mc->default_ram_size);
         error_report("Invalid RAM size, should be bigger than %s", sz);
         g_free(sz);
         exit(EXIT_FAILURE);
     }

> Does the 'ldMiB' actually mean that the value is in hexadecimal ? I did not find a reason in git history.
> ---
> ---
>   hw/ppc/spapr.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 8aa3ce7449be..b2ddacc6dd01 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -2819,8 +2819,8 @@ static hwaddr spapr_rma_size(SpaprMachineState *spapr, Error **errp)
>   
>       if (rma_size < MIN_RMA_SLOF) {
>           error_setg(errp,
> -                   "pSeries SLOF firmware requires >= %" HWADDR_PRIx
> -                   "ldMiB guest RMA (Real Mode Area memory)",
> +                   "pSeries SLOF firmware requires >= %" HWADDR_PRId
> +                   "MiB guest RMA (Real Mode Area memory)",
>                      MIN_RMA_SLOF / MiB);
>           return 0;
>       }

Amusingly MIN_RMA_SLOF is a constant:

#define MIN_RMA_SLOF            (128 * MiB)

Anyhow it could be changed, so better not hard-code the value in the
error message. Your patch becomes:

      if (rma_size < MIN_RMA_SLOF) {
-        error_setg(errp,
-                   "pSeries SLOF firmware requires >= %" HWADDR_PRIx
-                   "ldMiB guest RMA (Real Mode Area memory)",
-                   MIN_RMA_SLOF / MiB);
+        g_autofree char *min_rma_size_str = size_to_str(MIN_RMA_SLOF);
+
+        error_setg(errp, "pSeries SLOF firmware requires >= %s guest"
+                         "RMA (Real Mode Area memory)", min_rma_size_str);
          return 0;
      }

Regards,

Phil.
Aditya Gupta Sept. 23, 2024, 6:59 a.m. UTC | #2
Hi Philippe,


Sorry for the late reply.


On 12/09/24 12:34, Philippe Mathieu-Daudé wrote:
> Hi Aditya,
>
> On 12/9/24 08:52, Aditya Gupta wrote:
>> Currently starting a pSeries machine, with lesser than 128MiB shows
>> below error:
>>
>>      qemu-system-ppc64: pSeries SLOF firmware requires >= 80ldMiB 
>> guest RMA (Real Mode Area memory)
>>
>> Above '80ldMib' is in hex, and it means 0x80 MiB = 128 MiB.
>>
>> Change format specifier for this value to use 'HWADDR_PRId', instead of
>> 'HWADDR_PRIx' thus showing decimal value instead of hex.
>>
>> Thus, change the message to below error:
>>
>>      qemu-system-ppc64: pSeries SLOF firmware requires >= 128MiB 
>> guest RMA (Real Mode Area memory)
>>
>> Signed-off-by: Aditya Gupta <adityag@linux.ibm.com>
>>
>> ---
>> This is an RFC, as it confused me why does QEMU print that error even 
>> with '-m' >80 MB.
>>
>> This patch can also be considered a personal preference to see it as 
>> a decimal value instead of hex.
>>
>> Or maybe we can have '0x80 MiB' instead ?
>
> Simply use size_to_str(), see hw/ppc/pnv.c:
>
>     /* allocate RAM */
>     if (machine->ram_size < mc->default_ram_size) {
>         char *sz = size_to_str(mc->default_ram_size);
>         error_report("Invalid RAM size, should be bigger than %s", sz);
>         g_free(sz);
>         exit(EXIT_FAILURE);
>     }
>
I would prefer the existing printf approach, as it seems simple to me, 
but can change to use 'size_to_str' if that's the generally accepted 
approach. What do you say ?


Thanks,

Aditya Gupta

>> Does the 'ldMiB' actually mean that the value is in hexadecimal ? I 
>> did not find a reason in git history.
>> ---
>> ---
>>   hw/ppc/spapr.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
>> index 8aa3ce7449be..b2ddacc6dd01 100644
>> --- a/hw/ppc/spapr.c
>> +++ b/hw/ppc/spapr.c
>> @@ -2819,8 +2819,8 @@ static hwaddr spapr_rma_size(SpaprMachineState 
>> *spapr, Error **errp)
>>         if (rma_size < MIN_RMA_SLOF) {
>>           error_setg(errp,
>> -                   "pSeries SLOF firmware requires >= %" HWADDR_PRIx
>> -                   "ldMiB guest RMA (Real Mode Area memory)",
>> +                   "pSeries SLOF firmware requires >= %" HWADDR_PRId
>> +                   "MiB guest RMA (Real Mode Area memory)",
>>                      MIN_RMA_SLOF / MiB);
>>           return 0;
>>       }
>
> Amusingly MIN_RMA_SLOF is a constant:
>
> #define MIN_RMA_SLOF            (128 * MiB)
>
> Anyhow it could be changed, so better not hard-code the value in the
> error message. Your patch becomes:
>
>      if (rma_size < MIN_RMA_SLOF) {
> -        error_setg(errp,
> -                   "pSeries SLOF firmware requires >= %" HWADDR_PRIx
> -                   "ldMiB guest RMA (Real Mode Area memory)",
> -                   MIN_RMA_SLOF / MiB);
> +        g_autofree char *min_rma_size_str = size_to_str(MIN_RMA_SLOF);
> +
> +        error_setg(errp, "pSeries SLOF firmware requires >= %s guest"
> +                         "RMA (Real Mode Area memory)", 
> min_rma_size_str);
>          return 0;
>      }
>
> Regards,
>
> Phil.
diff mbox series

Patch

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 8aa3ce7449be..b2ddacc6dd01 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2819,8 +2819,8 @@  static hwaddr spapr_rma_size(SpaprMachineState *spapr, Error **errp)
 
     if (rma_size < MIN_RMA_SLOF) {
         error_setg(errp,
-                   "pSeries SLOF firmware requires >= %" HWADDR_PRIx
-                   "ldMiB guest RMA (Real Mode Area memory)",
+                   "pSeries SLOF firmware requires >= %" HWADDR_PRId
+                   "MiB guest RMA (Real Mode Area memory)",
                    MIN_RMA_SLOF / MiB);
         return 0;
     }