From: Paolo Bonzini <pbonzini@redhat.com>
To: "Jason J. Herne" <jjherne@us.ibm.com>,
afaerber@suse.de, borntraeger@de.ibm.com, agraf@suse.de,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 1/1] s390-cpu: qom interface for S390 cpu states array
Date: Fri, 07 Mar 2014 18:03:08 +0100 [thread overview]
Message-ID: <5319FBCC.102@redhat.com> (raw)
In-Reply-To: <1394209746-30824-2-git-send-email-jjherne@us.ibm.com>
Il 07/03/2014 17:29, Jason J. Herne ha scritto:
> From: "Jason J. Herne" <jjherne@us.ibm.com>
>
> Rename the S390 ipi_states array to cpu_states to better reflect its contents.
>
> Create machine/cpu[cpu_addr] links within the qom tree when creating a new cpu.
>
> Encapsulate the qom tree linking process and the management of the cpu_states
> array into helper functions.
>
> Signed-off-by: Jason J. Herne <jjherne@us.ibm.com>
> ---
> hw/s390x/s390-virtio.c | 30 ++++++++++++++++++++++++------
> target-s390x/cpu.h | 1 +
> 2 files changed, 25 insertions(+), 6 deletions(-)
>
> diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
> index 9eeda97..82411e7 100644
> --- a/hw/s390x/s390-virtio.c
> +++ b/hw/s390x/s390-virtio.c
> @@ -52,15 +52,33 @@
> #define ZIPL_FILENAME "s390-zipl.rom"
>
> static VirtIOS390Bus *s390_bus;
> -static S390CPU **ipi_states;
> +static S390CPU **cpu_states;
>
> S390CPU *s390_cpu_addr2state(uint16_t cpu_addr)
> {
> + gchar *name;
> + Object *cpu;
> +
> if (cpu_addr >= smp_cpus) {
> return NULL;
> }
>
> - return ipi_states[cpu_addr];
> + name = g_strdup_printf("cpu[%i]", cpu_addr);
> + cpu = object_property_get_link(qdev_get_machine(), name, NULL);
> +
> + g_free(name);
> + return S390_CPU(cpu);
> +}
QOM is too slow to be used in the data path.
I don't think you want a malloc + a linear scan of an array in
css_inject_io_interrupt, so you should keep using cpu_states here.
Paolo
> +void s390_cpu_set_cpustate(uint16_t cpu_addr, S390CPU *state)
> +{
> + gchar *name;
> +
> + cpu_states[cpu_addr] = state;
> + name = g_strdup_printf("cpu[%i]", cpu_addr);
> + object_property_add_link(qdev_get_machine(), name, TYPE_S390_CPU,
> + (Object **) &cpu_states[cpu_addr], NULL);
> + g_free(name);
> }
>
> static int s390_virtio_hcall_notify(const uint64_t *args)
> @@ -184,16 +202,16 @@ void s390_init_cpus(const char *cpu_model, uint8_t *storage_keys)
> cpu_model = "host";
> }
>
> - ipi_states = g_malloc(sizeof(S390CPU *) * smp_cpus);
> + cpu_states = g_malloc(sizeof(S390CPU *) * smp_cpus);
>
> for (i = 0; i < smp_cpus; i++) {
> - S390CPU *cpu;
> + S390CPU* cpu;
> CPUState *cs;
>
> cpu = cpu_s390x_init(cpu_model);
> - cs = CPU(cpu);
> + s390_cpu_set_cpustate(i, cpu);
>
> - ipi_states[i] = cpu;
> + cs = CPU(cpu_states[i]);
> cs->halted = 1;
> cpu->env.exception_index = EXCP_HLT;
> cpu->env.storage_keys = storage_keys;
> diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
> index 96c2b4a..6ce3b64 100644
> --- a/target-s390x/cpu.h
> +++ b/target-s390x/cpu.h
> @@ -370,6 +370,7 @@ static inline void kvm_s390_interrupt_internal(S390CPU *cpu, int type,
> }
> #endif
> S390CPU *s390_cpu_addr2state(uint16_t cpu_addr);
> +void s390_cpu_set_cpustate(uint16_t cpu_addr, S390CPU *state);
> void s390_add_running_cpu(S390CPU *cpu);
> unsigned s390_del_running_cpu(S390CPU *cpu);
>
>
next prev parent reply other threads:[~2014-03-07 17:03 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-07 16:29 [Qemu-devel] [PATCH 0/1] s390-cpu: qom interface for S390 cpu states array Jason J. Herne
2014-03-07 16:29 ` [Qemu-devel] [PATCH 1/1] " Jason J. Herne
2014-03-07 17:03 ` Paolo Bonzini [this message]
2014-03-11 12:51 ` Jason J. Herne
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5319FBCC.102@redhat.com \
--to=pbonzini@redhat.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=borntraeger@de.ibm.com \
--cc=jjherne@us.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.