[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [RFC PATCH v3 02/24] spapr: Add DRC dt entries for CPUs
From: |
David Gibson |
Subject: |
Re: [Qemu-ppc] [RFC PATCH v3 02/24] spapr: Add DRC dt entries for CPUs |
Date: |
Mon, 4 May 2015 21:46:00 +1000 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Fri, Apr 24, 2015 at 12:17:24PM +0530, Bharata B Rao wrote:
> Advertise CPU DR-capability to the guest via device tree.
>
> Signed-off-by: Bharata B Rao <address@hidden>
> Signed-off-by: Michael Roth <address@hidden>
> [spapr_drc_reset implementation]
> ---
> hw/ppc/spapr.c | 29 +++++++++++++++++++++++++++++
> 1 file changed, 29 insertions(+)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 981814d..9ea3a38 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -807,6 +807,15 @@ static void spapr_finalize_fdt(sPAPREnvironment *spapr,
> spapr_populate_chosen_stdout(fdt, spapr->vio_bus);
> }
>
> + if (spapr->dr_cpu_enabled) {
> + int offset = fdt_path_offset(fdt, "/cpus");
> + ret = spapr_drc_populate_dt(fdt, offset, NULL,
> + SPAPR_DR_CONNECTOR_TYPE_CPU);
> + if (ret < 0) {
> + fprintf(stderr, "Couldn't set up CPU DR device tree
> properties\n");
> + }
> + }
> +
> _FDT((fdt_pack(fdt)));
>
> if (fdt_totalsize(fdt) > FDT_MAX_SIZE) {
> @@ -1393,6 +1402,16 @@ static SaveVMHandlers savevm_htab_handlers = {
> .load_state = htab_load,
> };
>
> +static void spapr_drc_reset(void *opaque)
> +{
> + sPAPRDRConnector *drc = opaque;
> + DeviceState *d = DEVICE(drc);
> +
> + if (d) {
> + device_reset(d);
> + }
> +}
Why do these need an explicit reset, rather than having their reset
hook automatically called by the qdev infrastructure?
I'm guessing it's something to do with how these are linked into the
qdev tree, but it could do with a comment clarifying this.
> /* pSeries LPAR / sPAPR hardware init */
> static void ppc_spapr_init(MachineState *machine)
> {
> @@ -1418,6 +1437,7 @@ static void ppc_spapr_init(MachineState *machine)
> long load_limit, fw_size;
> bool kernel_le = false;
> char *filename;
> + int smt = kvmppc_smt_threads();
>
> msi_supported = true;
>
> @@ -1482,6 +1502,15 @@ static void ppc_spapr_init(MachineState *machine)
> spapr->dr_cpu_enabled = smc->dr_cpu_enabled;
> spapr->dr_lmb_enabled = smc->dr_lmb_enabled;
>
> + if (spapr->dr_cpu_enabled) {
> + for (i = 0; i < max_cpus/smp_threads; i++) {
> + sPAPRDRConnector *drc =
> + spapr_dr_connector_new(OBJECT(machine),
> + SPAPR_DR_CONNECTOR_TYPE_CPU, i * smt);
> + qemu_register_reset(spapr_drc_reset, drc);
> + }
> + }
> +
> /* init CPUs */
> if (cpu_model == NULL) {
> cpu_model = kvm_enabled() ? "host" : "POWER7";
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
pgp6YKE5baQRF.pgp
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-ppc] [RFC PATCH v3 02/24] spapr: Add DRC dt entries for CPUs,
David Gibson <=