[PATCH-for-9.2] hw/avr/arduino: Check for CPU types in machine_run_board_init()

Philippe Mathieu-Daudé posted 1 patch 5 days, 2 hours ago
hw/avr/arduino.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
[PATCH-for-9.2] hw/avr/arduino: Check for CPU types in machine_run_board_init()
Posted by Philippe Mathieu-Daudé 5 days, 2 hours ago
Leverage the common code introduced in commit c9cf636d48 ("machine:
Add a valid_cpu_types property") to check for the single valid CPU
type. This allows reporting an error for invalid CPUs:

  $ qemu-system-avr -M 2009 -cpu avr51-avr-cpu
  qemu-system-avr: Invalid CPU model: avr51
  The only valid type is: avr5

Reported-by: Iris Artin <iris@artins.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/avr/arduino.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/hw/avr/arduino.c b/hw/avr/arduino.c
index 48ef478346..a8da2728f0 100644
--- a/hw/avr/arduino.c
+++ b/hw/avr/arduino.c
@@ -71,6 +71,10 @@ static void arduino_machine_class_init(ObjectClass *oc, void *data)
 
 static void arduino_duemilanove_class_init(ObjectClass *oc, void *data)
 {
+    static const char * const valid_cpu_types[] = {
+        AVR_CPU_TYPE_NAME("avr5"),
+        NULL
+    };
     MachineClass *mc = MACHINE_CLASS(oc);
     ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc);
 
@@ -80,12 +84,17 @@ static void arduino_duemilanove_class_init(ObjectClass *oc, void *data)
      */
     mc->desc        = "Arduino Duemilanove (ATmega168)",
     mc->alias       = "2009";
+    mc->valid_cpu_types = valid_cpu_types;
     amc->mcu_type   = TYPE_ATMEGA168_MCU;
     amc->xtal_hz    = 16 * 1000 * 1000;
 };
 
 static void arduino_uno_class_init(ObjectClass *oc, void *data)
 {
+    static const char * const valid_cpu_types[] = {
+        AVR_CPU_TYPE_NAME("avr5"),
+        NULL
+    };
     MachineClass *mc = MACHINE_CLASS(oc);
     ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc);
 
@@ -95,12 +104,17 @@ static void arduino_uno_class_init(ObjectClass *oc, void *data)
      */
     mc->desc        = "Arduino UNO (ATmega328P)";
     mc->alias       = "uno";
+    mc->valid_cpu_types = valid_cpu_types;
     amc->mcu_type   = TYPE_ATMEGA328_MCU;
     amc->xtal_hz    = 16 * 1000 * 1000;
 };
 
 static void arduino_mega_class_init(ObjectClass *oc, void *data)
 {
+    static const char * const valid_cpu_types[] = {
+        AVR_CPU_TYPE_NAME("avr51"),
+        NULL
+    };
     MachineClass *mc = MACHINE_CLASS(oc);
     ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc);
 
@@ -110,12 +124,17 @@ static void arduino_mega_class_init(ObjectClass *oc, void *data)
      */
     mc->desc        = "Arduino Mega (ATmega1280)";
     mc->alias       = "mega";
+    mc->valid_cpu_types = valid_cpu_types;
     amc->mcu_type   = TYPE_ATMEGA1280_MCU;
     amc->xtal_hz    = 16 * 1000 * 1000;
 };
 
 static void arduino_mega2560_class_init(ObjectClass *oc, void *data)
 {
+    static const char * const valid_cpu_types[] = {
+        AVR_CPU_TYPE_NAME("avr6"),
+        NULL
+    };
     MachineClass *mc = MACHINE_CLASS(oc);
     ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc);
 
@@ -125,6 +144,7 @@ static void arduino_mega2560_class_init(ObjectClass *oc, void *data)
      */
     mc->desc        = "Arduino Mega 2560 (ATmega2560)";
     mc->alias       = "mega2560";
+    mc->valid_cpu_types = valid_cpu_types;
     amc->mcu_type   = TYPE_ATMEGA2560_MCU;
     amc->xtal_hz    = 16 * 1000 * 1000; /* CSTCE16M0V53-R0 */
 };
-- 
2.45.2


Re: [PATCH-for-9.2] hw/avr/arduino: Check for CPU types in machine_run_board_init()
Posted by Peter Maydell 5 days, 2 hours ago
On Mon, 18 Nov 2024 at 13:02, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>
> Leverage the common code introduced in commit c9cf636d48 ("machine:
> Add a valid_cpu_types property") to check for the single valid CPU
> type. This allows reporting an error for invalid CPUs:
>
>   $ qemu-system-avr -M 2009 -cpu avr51-avr-cpu
>   qemu-system-avr: Invalid CPU model: avr51
>   The only valid type is: avr5

This is a nice user-convenience feature, but why for 9.2?
We haven't bothered to error-check the user specified CPU
before, and we still don't on many (non-avr) board types.

thanks
-- PMM
Re: [PATCH-for-9.2] hw/avr/arduino: Check for CPU types in machine_run_board_init()
Posted by Philippe Mathieu-Daudé 5 days ago
On 18/11/24 13:07, Peter Maydell wrote:
> On Mon, 18 Nov 2024 at 13:02, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>>
>> Leverage the common code introduced in commit c9cf636d48 ("machine:
>> Add a valid_cpu_types property") to check for the single valid CPU
>> type. This allows reporting an error for invalid CPUs:
>>
>>    $ qemu-system-avr -M 2009 -cpu avr51-avr-cpu
>>    qemu-system-avr: Invalid CPU model: avr51
>>    The only valid type is: avr5
> 
> This is a nice user-convenience feature, but why for 9.2?
> We haven't bothered to error-check the user specified CPU
> before, and we still don't on many (non-avr) board types.

OK to postpone for 10.0 then.