hw/mips/loongson3: Propagate cpu_count to init_loongson_params()
Propagate the %cpu_count from the machine file, allowing to remove the "hw/boards.h" dependency (which is machine specific) from loongson3_bootp. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20250115232952.31166-7-philmd@linaro.org>
This commit is contained in:
parent
ce6768965b
commit
61f6e494e3
@ -24,10 +24,10 @@
|
|||||||
#include "qemu/bswap.h"
|
#include "qemu/bswap.h"
|
||||||
#include "exec/hwaddr.h"
|
#include "exec/hwaddr.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
#include "hw/boards.h"
|
|
||||||
#include "hw/mips/loongson3_bootp.h"
|
#include "hw/mips/loongson3_bootp.h"
|
||||||
|
|
||||||
static void init_cpu_info(void *g_cpuinfo, uint64_t cpu_freq)
|
static void init_cpu_info(void *g_cpuinfo, uint32_t cpu_count,
|
||||||
|
uint64_t cpu_freq)
|
||||||
{
|
{
|
||||||
struct efi_cpuinfo_loongson *c = g_cpuinfo;
|
struct efi_cpuinfo_loongson *c = g_cpuinfo;
|
||||||
|
|
||||||
@ -40,8 +40,8 @@ static void init_cpu_info(void *g_cpuinfo, uint64_t cpu_freq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
c->cpu_startup_core_id = cpu_to_le16(0);
|
c->cpu_startup_core_id = cpu_to_le16(0);
|
||||||
c->nr_cpus = cpu_to_le32(current_machine->smp.cpus);
|
c->nr_cpus = cpu_to_le32(cpu_count);
|
||||||
c->total_node = cpu_to_le32(DIV_ROUND_UP(current_machine->smp.cpus,
|
c->total_node = cpu_to_le32(DIV_ROUND_UP(cpu_count,
|
||||||
LOONGSON3_CORE_PER_NODE));
|
LOONGSON3_CORE_PER_NODE));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,9 +112,10 @@ static void init_special_info(void *g_special)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void init_loongson_params(struct loongson_params *lp, void *p,
|
void init_loongson_params(struct loongson_params *lp, void *p,
|
||||||
|
uint32_t cpu_count,
|
||||||
uint64_t cpu_freq, uint64_t ram_size)
|
uint64_t cpu_freq, uint64_t ram_size)
|
||||||
{
|
{
|
||||||
init_cpu_info(p, cpu_freq);
|
init_cpu_info(p, cpu_count, cpu_freq);
|
||||||
lp->cpu_offset = cpu_to_le64((uintptr_t)p - (uintptr_t)lp);
|
lp->cpu_offset = cpu_to_le64((uintptr_t)p - (uintptr_t)lp);
|
||||||
p += ROUND_UP(sizeof(struct efi_cpuinfo_loongson), 64);
|
p += ROUND_UP(sizeof(struct efi_cpuinfo_loongson), 64);
|
||||||
|
|
||||||
|
@ -233,6 +233,7 @@ enum {
|
|||||||
|
|
||||||
extern const MemMapEntry virt_memmap[];
|
extern const MemMapEntry virt_memmap[];
|
||||||
void init_loongson_params(struct loongson_params *lp, void *p,
|
void init_loongson_params(struct loongson_params *lp, void *p,
|
||||||
|
uint32_t cpu_count,
|
||||||
uint64_t cpu_freq, uint64_t ram_size);
|
uint64_t cpu_freq, uint64_t ram_size);
|
||||||
void init_reset_system(struct efi_reset_system_t *reset);
|
void init_reset_system(struct efi_reset_system_t *reset);
|
||||||
|
|
||||||
|
@ -185,6 +185,7 @@ static void init_boot_param(void)
|
|||||||
init_reset_system(&(bp->reset_system));
|
init_reset_system(&(bp->reset_system));
|
||||||
p += ROUND_UP(sizeof(struct boot_params), 64);
|
p += ROUND_UP(sizeof(struct boot_params), 64);
|
||||||
init_loongson_params(&(bp->efi.smbios.lp), p,
|
init_loongson_params(&(bp->efi.smbios.lp), p,
|
||||||
|
current_machine->smp.cpus,
|
||||||
loaderparams.cpu_freq, loaderparams.ram_size);
|
loaderparams.cpu_freq, loaderparams.ram_size);
|
||||||
|
|
||||||
rom_add_blob_fixed("params_rom", bp,
|
rom_add_blob_fixed("params_rom", bp,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user