Hi David, On 4/23/19 3:20 AM, David Gibson wrote: > On Mon, Apr 22, 2019 at 09:50:18PM +0200, Philippe Mathieu-Daudé wrote: >> Implement fw_cfg_arch_key_name(), which returns the name of a >> ppc-specific key. >> >> Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> > > What ppc machines actually use fw_cfg? I know pseries and powernv > don't.
I see: - 40p - g3beige (newworld) - mac99 (oldworld) I guess it is because they use OpenBIOS. >> --- >> hw/ppc/Makefile.objs | 2 +- >> hw/ppc/fw_cfg.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ >> 2 files changed, 46 insertions(+), 1 deletion(-) >> create mode 100644 hw/ppc/fw_cfg.c >> >> diff --git a/hw/ppc/Makefile.objs b/hw/ppc/Makefile.objs >> index 1111b218a04..ae940981553 100644 >> --- a/hw/ppc/Makefile.objs >> +++ b/hw/ppc/Makefile.objs >> @@ -1,5 +1,5 @@ >> # shared objects >> -obj-y += ppc.o ppc_booke.o fdt.o >> +obj-y += ppc.o ppc_booke.o fdt.o fw_cfg.o >> # IBM pSeries (sPAPR) >> obj-$(CONFIG_PSERIES) += spapr.o spapr_caps.o spapr_vio.o spapr_events.o >> obj-$(CONFIG_PSERIES) += spapr_hcall.o spapr_iommu.o spapr_rtas.o >> diff --git a/hw/ppc/fw_cfg.c b/hw/ppc/fw_cfg.c >> new file mode 100644 >> index 00000000000..a88b5c4bde2 >> --- /dev/null >> +++ b/hw/ppc/fw_cfg.c >> @@ -0,0 +1,45 @@ >> +/* >> + * fw_cfg helpers (PPC specific) >> + * >> + * Copyright (c) 2019 Red Hat, Inc. >> + * >> + * Author: >> + * Philippe Mathieu-Daudé <phi...@redhat.com> >> + * >> + * SPDX-License-Identifier: GPL-2.0-or-later >> + * >> + * This work is licensed under the terms of the GNU GPL, version 2 or later. >> + * See the COPYING file in the top-level directory. >> + */ >> + >> +#include "qemu/osdep.h" >> +#include "hw/ppc/ppc.h" >> +#include "hw/nvram/fw_cfg.h" >> + >> +const char *fw_cfg_arch_key_name(uint16_t key) >> +{ >> + static const struct { >> + uint16_t key; >> + const char *name; >> + } fw_cfg_arch_wellknown_keys[] = { >> + {FW_CFG_PPC_WIDTH, "width"}, >> + {FW_CFG_PPC_HEIGHT, "height"}, >> + {FW_CFG_PPC_DEPTH, "depth"}, >> + {FW_CFG_PPC_TBFREQ, "tbfreq"}, >> + {FW_CFG_PPC_CLOCKFREQ, "clockfreq"}, >> + {FW_CFG_PPC_IS_KVM, "is_kvm"}, >> + {FW_CFG_PPC_KVM_HC, "kvm_hc"}, >> + {FW_CFG_PPC_KVM_PID, "pid"}, >> + {FW_CFG_PPC_NVRAM_ADDR, "nvram_addr"}, >> + {FW_CFG_PPC_BUSFREQ, "busfreq"}, >> + {FW_CFG_PPC_NVRAM_FLAT, "nvram_flat"}, >> + {FW_CFG_PPC_VIACONFIG, "viaconfig"}, >> + }; >> + >> + for (size_t i = 0; i < ARRAY_SIZE(fw_cfg_arch_wellknown_keys); i++) { >> + if (fw_cfg_arch_wellknown_keys[i].key == key) { >> + return fw_cfg_arch_wellknown_keys[i].name; >> + } >> + } >> + return NULL; >> +} >