diff mbox series

[v2,08/11] hw/hppa: Export machine name, BTLBs, power-button address via fw_cfg

Message ID 20231017154645.95844-9-deller@kernel.org (mailing list archive)
State New, archived
Headers show
Series target/hppa: Add emulation of a C3700 HP-PARISC workstation | expand

Commit Message

Helge Deller Oct. 17, 2023, 3:46 p.m. UTC
From: Helge Deller <deller@gmx.de>

Provide necessary info to SeaBIOS-hppa.

Signed-off-by: Helge Deller <deller@gmx.de>
---
 hw/hppa/machine.c | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

Comments

BALATON Zoltan Oct. 17, 2023, 4:33 p.m. UTC | #1
On Tue, 17 Oct 2023, deller@kernel.org wrote:
> From: Helge Deller <deller@gmx.de>
>
> Provide necessary info to SeaBIOS-hppa.

If this is needed by the updated SeaBIOS in patch 1 shouldn't this come 
before that?

Regards,
BALATON Zoltan

> Signed-off-by: Helge Deller <deller@gmx.de>
> ---
> hw/hppa/machine.c | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
> index c6d8deffcf..de925259ea 100644
> --- a/hw/hppa/machine.c
> +++ b/hw/hppa/machine.c
> @@ -118,11 +118,13 @@ static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
> }
>
> -static FWCfgState *create_fw_cfg(MachineState *ms)
> +static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus)
> {
>     FWCfgState *fw_cfg;
>     uint64_t val;
>     const char qemu_version[] = QEMU_VERSION;
> +    MachineClass *mc = MACHINE_GET_CLASS(ms);
> +    int len;
>
>     fw_cfg = fw_cfg_init_mem(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4);
>     fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus);
> @@ -137,8 +139,20 @@ static FWCfgState *create_fw_cfg(MachineState *ms)
>     fw_cfg_add_file(fw_cfg, "/etc/cpu/tlb_entries",
>                     g_memdup(&val, sizeof(val)), sizeof(val));
>
> +    val = cpu_to_le64(HPPA_BTLB_ENTRIES);
> +    fw_cfg_add_file(fw_cfg, "/etc/cpu/btlb_entries",
> +                    g_memdup(&val, sizeof(val)), sizeof(val));
> +
> +    len = strlen(mc->name) + 1;
> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/machine",
> +                    g_memdup(mc->name, len), len);
> +
>     val = cpu_to_le64(HPA_POWER_BUTTON);
> -    fw_cfg_add_file(fw_cfg, "/etc/power-button-addr",
> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr",
> +                    g_memdup(&val, sizeof(val)), sizeof(val));
> +
> +    val = cpu_to_le64(CPU_HPA + 24);
> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/DebugOutputPort",
>                     g_memdup(&val, sizeof(val)), sizeof(val));
>
>     fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]);
> @@ -148,6 +162,8 @@ static FWCfgState *create_fw_cfg(MachineState *ms)
>                     g_memdup(qemu_version, sizeof(qemu_version)),
>                     sizeof(qemu_version));
>
> +    fw_cfg_add_extra_pci_roots(pci_bus, fw_cfg);
> +
>     return fw_cfg;
> }
>
> @@ -250,7 +266,7 @@ static void machine_hppa_init(MachineState *machine)
>                      parallel_hds[0]);
>
>     /* fw_cfg configuration interface */
> -    create_fw_cfg(machine);
> +    create_fw_cfg(machine, pci_bus);
>
>     /* SCSI disk setup. */
>     dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a"));
>
Helge Deller Oct. 17, 2023, 6:11 p.m. UTC | #2
On 10/17/23 18:33, BALATON Zoltan wrote:
> On Tue, 17 Oct 2023, deller@kernel.org wrote:
>> From: Helge Deller <deller@gmx.de>
>>
>> Provide necessary info to SeaBIOS-hppa.
>
> If this is needed by the updated SeaBIOS in patch 1 shouldn't this come before that?

SeaBIOS has default values, so it's not dependend on the changed values here.

Helge


> Regards,
> BALATON Zoltan
>
>> Signed-off-by: Helge Deller <deller@gmx.de>
>> ---
>> hw/hppa/machine.c | 22 +++++++++++++++++++---
>> 1 file changed, 19 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
>> index c6d8deffcf..de925259ea 100644
>> --- a/hw/hppa/machine.c
>> +++ b/hw/hppa/machine.c
>> @@ -118,11 +118,13 @@ static void fw_cfg_boot_set(void *opaque, const char *boot_device,
>>     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
>> }
>>
>> -static FWCfgState *create_fw_cfg(MachineState *ms)
>> +static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus)
>> {
>>     FWCfgState *fw_cfg;
>>     uint64_t val;
>>     const char qemu_version[] = QEMU_VERSION;
>> +    MachineClass *mc = MACHINE_GET_CLASS(ms);
>> +    int len;
>>
>>     fw_cfg = fw_cfg_init_mem(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4);
>>     fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus);
>> @@ -137,8 +139,20 @@ static FWCfgState *create_fw_cfg(MachineState *ms)
>>     fw_cfg_add_file(fw_cfg, "/etc/cpu/tlb_entries",
>>                     g_memdup(&val, sizeof(val)), sizeof(val));
>>
>> +    val = cpu_to_le64(HPPA_BTLB_ENTRIES);
>> +    fw_cfg_add_file(fw_cfg, "/etc/cpu/btlb_entries",
>> +                    g_memdup(&val, sizeof(val)), sizeof(val));
>> +
>> +    len = strlen(mc->name) + 1;
>> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/machine",
>> +                    g_memdup(mc->name, len), len);
>> +
>>     val = cpu_to_le64(HPA_POWER_BUTTON);
>> -    fw_cfg_add_file(fw_cfg, "/etc/power-button-addr",
>> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr",
>> +                    g_memdup(&val, sizeof(val)), sizeof(val));
>> +
>> +    val = cpu_to_le64(CPU_HPA + 24);
>> +    fw_cfg_add_file(fw_cfg, "/etc/hppa/DebugOutputPort",
>>                     g_memdup(&val, sizeof(val)), sizeof(val));
>>
>>     fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]);
>> @@ -148,6 +162,8 @@ static FWCfgState *create_fw_cfg(MachineState *ms)
>>                     g_memdup(qemu_version, sizeof(qemu_version)),
>>                     sizeof(qemu_version));
>>
>> +    fw_cfg_add_extra_pci_roots(pci_bus, fw_cfg);
>> +
>>     return fw_cfg;
>> }
>>
>> @@ -250,7 +266,7 @@ static void machine_hppa_init(MachineState *machine)
>>                      parallel_hds[0]);
>>
>>     /* fw_cfg configuration interface */
>> -    create_fw_cfg(machine);
>> +    create_fw_cfg(machine, pci_bus);
>>
>>     /* SCSI disk setup. */
>>     dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a"));
>>
diff mbox series

Patch

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index c6d8deffcf..de925259ea 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -118,11 +118,13 @@  static void fw_cfg_boot_set(void *opaque, const char *boot_device,
     fw_cfg_modify_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]);
 }
 
-static FWCfgState *create_fw_cfg(MachineState *ms)
+static FWCfgState *create_fw_cfg(MachineState *ms, PCIBus *pci_bus)
 {
     FWCfgState *fw_cfg;
     uint64_t val;
     const char qemu_version[] = QEMU_VERSION;
+    MachineClass *mc = MACHINE_GET_CLASS(ms);
+    int len;
 
     fw_cfg = fw_cfg_init_mem(FW_CFG_IO_BASE, FW_CFG_IO_BASE + 4);
     fw_cfg_add_i16(fw_cfg, FW_CFG_NB_CPUS, ms->smp.cpus);
@@ -137,8 +139,20 @@  static FWCfgState *create_fw_cfg(MachineState *ms)
     fw_cfg_add_file(fw_cfg, "/etc/cpu/tlb_entries",
                     g_memdup(&val, sizeof(val)), sizeof(val));
 
+    val = cpu_to_le64(HPPA_BTLB_ENTRIES);
+    fw_cfg_add_file(fw_cfg, "/etc/cpu/btlb_entries",
+                    g_memdup(&val, sizeof(val)), sizeof(val));
+
+    len = strlen(mc->name) + 1;
+    fw_cfg_add_file(fw_cfg, "/etc/hppa/machine",
+                    g_memdup(mc->name, len), len);
+
     val = cpu_to_le64(HPA_POWER_BUTTON);
-    fw_cfg_add_file(fw_cfg, "/etc/power-button-addr",
+    fw_cfg_add_file(fw_cfg, "/etc/hppa/power-button-addr",
+                    g_memdup(&val, sizeof(val)), sizeof(val));
+
+    val = cpu_to_le64(CPU_HPA + 24);
+    fw_cfg_add_file(fw_cfg, "/etc/hppa/DebugOutputPort",
                     g_memdup(&val, sizeof(val)), sizeof(val));
 
     fw_cfg_add_i16(fw_cfg, FW_CFG_BOOT_DEVICE, ms->boot_config.order[0]);
@@ -148,6 +162,8 @@  static FWCfgState *create_fw_cfg(MachineState *ms)
                     g_memdup(qemu_version, sizeof(qemu_version)),
                     sizeof(qemu_version));
 
+    fw_cfg_add_extra_pci_roots(pci_bus, fw_cfg);
+
     return fw_cfg;
 }
 
@@ -250,7 +266,7 @@  static void machine_hppa_init(MachineState *machine)
                      parallel_hds[0]);
 
     /* fw_cfg configuration interface */
-    create_fw_cfg(machine);
+    create_fw_cfg(machine, pci_bus);
 
     /* SCSI disk setup. */
     dev = DEVICE(pci_create_simple(pci_bus, -1, "lsi53c895a"));