From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57399) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YRLl0-0007aq-82 for qemu-devel@nongnu.org; Fri, 27 Feb 2015 09:19:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YRLkw-0000Ba-9M for qemu-devel@nongnu.org; Fri, 27 Feb 2015 09:19:10 -0500 Received: from cantor2.suse.de ([195.135.220.15]:54961 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YRLkv-0000BS-O5 for qemu-devel@nongnu.org; Fri, 27 Feb 2015 09:19:06 -0500 Message-ID: <54F07CD8.9010308@suse.de> Date: Fri, 27 Feb 2015 15:19:04 +0100 From: =?windows-1252?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1424894306-26740-1-git-send-email-ehabkost@redhat.com> <1424894306-26740-6-git-send-email-ehabkost@redhat.com> <54EE47F8.3060001@suse.de> <20150226160327.GB3513@thinpad.lan.raisama.net> In-Reply-To: <20150226160327.GB3513@thinpad.lan.raisama.net> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PULL 05/11] target-i386: Eliminate cpu_init() function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eduardo Habkost Cc: Peter Maydell , qemu-devel@nongnu.org, Paolo Bonzini Am 26.02.2015 um 17:03 schrieb Eduardo Habkost: > On Wed, Feb 25, 2015 at 11:08:56PM +0100, Andreas F=E4rber wrote: >> Am 25.02.2015 um 20:58 schrieb Eduardo Habkost: >>> Instead of putting extra logic inside cpu.h, just do everything insid= e >>> cpu_x86_init_user(). >>> >>> Reviewed-by: Paolo Bonzini >>> Signed-off-by: Eduardo Habkost >>> --- >>> target-i386/cpu.c | 6 +++--- >>> target-i386/cpu.h | 12 +++--------- >>> 2 files changed, 6 insertions(+), 12 deletions(-) >>> >>> diff --git a/target-i386/cpu.c b/target-i386/cpu.c >>> index 8f18556..aee4d3e 100644 >>> --- a/target-i386/cpu.c >>> +++ b/target-i386/cpu.c >>> @@ -2135,7 +2135,7 @@ out: >>> return cpu; >>> } >>> =20 >>> -X86CPU *cpu_x86_init_user(const char *cpu_model) >>> +CPUX86State *cpu_x86_init_user(const char *cpu_model) >>> { >>> Error *error =3D NULL; >>> X86CPU *cpu; >>> @@ -2153,10 +2153,10 @@ out: >>> error_free(error); >>> if (cpu !=3D NULL) { >>> object_unref(OBJECT(cpu)); >>> - cpu =3D NULL; >>> } >>> + return NULL; >>> } >>> - return cpu; >>> + return &cpu->env; >>> } >>> =20 >>> static void x86_cpu_cpudef_class_init(ObjectClass *oc, void *data) >>> diff --git a/target-i386/cpu.h b/target-i386/cpu.h >>> index 41d7f0a..d5bd74e 100644 >>> --- a/target-i386/cpu.h >>> +++ b/target-i386/cpu.h >>> @@ -982,7 +982,6 @@ typedef struct CPUX86State { >>> =20 >>> #include "cpu-qom.h" >>> =20 >>> -X86CPU *cpu_x86_init_user(const char *cpu_model); >>> X86CPU *cpu_x86_create(const char *cpu_model, DeviceState *icc_bridg= e, >>> Error **errp); >>> int cpu_x86_exec(CPUX86State *s); >>> @@ -1171,14 +1170,9 @@ uint64_t cpu_get_tsc(CPUX86State *env); >>> # define PHYS_ADDR_MASK 0xfffffffffLL >>> # endif >>> =20 >>> -static inline CPUX86State *cpu_init(const char *cpu_model) >>> -{ >>> - X86CPU *cpu =3D cpu_x86_init_user(cpu_model); >>> - if (cpu =3D=3D NULL) { >>> - return NULL; >>> - } >>> - return &cpu->env; >>> -} >>> +/* CPU creation function for *-user */ >>> +CPUX86State *cpu_x86_init_user(const char *cpu_model); >>> +#define cpu_init cpu_x86_init_user >> >> The very purpose of this lightweight glue code in cpu.h was to let us >> use X86CPU in cpu.c. It seems that you are needlessly reverting my cha= nge? >=20 > I am not sure I understand what you mean by "let us use X86CPU in > cpu.c". I mean, more and more code is supposed to use *CPU, not CPU*State. Like your patch moving the APIC ID is adopting X86CPU, which is the right direction. Replacing X86CPU with CPUX86State however feels wrong to me. Since I changed cpu_x86_init() to return X86CPU, there will have been a non-user caller at the time making use of X86CPU or CPUState. Just as in some ARM use cases I assume that the current cpu_*_init() limitations lead to its code getting inlined. Andreas --=20 SUSE Linux GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Felix Imend=F6rffer, Jane Smithard, Jennifer Guild, Dilip Upmanyu, Graham Norton; HRB 21284 (AG N=FCrnberg)