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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).