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 |
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")); >
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 --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"));