From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VvPzn-0000Dv-Ma for qemu-devel@nongnu.org; Tue, 24 Dec 2013 06:18:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VvPzi-00086r-Bk for qemu-devel@nongnu.org; Tue, 24 Dec 2013 06:17:55 -0500 Received: from mail-ea0-x236.google.com ([2a00:1450:4013:c01::236]:48346) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VvPzi-00086i-4z for qemu-devel@nongnu.org; Tue, 24 Dec 2013 06:17:50 -0500 Received: by mail-ea0-f182.google.com with SMTP id a15so2831112eae.41 for ; Tue, 24 Dec 2013 03:17:49 -0800 (PST) Sender: Paolo Bonzini Message-ID: <52B96D55.50703@redhat.com> Date: Tue, 24 Dec 2013 12:17:41 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1387576494-20466-1-git-send-email-pbonzini@redhat.com> <52B8D2F1.70908@suse.de> In-Reply-To: <52B8D2F1.70908@suse.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v2] qom: fix inherited interfaces List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-15?Q?Andreas_F=E4rber?= Cc: Igor Mammedov , peter.crosthwaite@xilinx.com, qemu-devel@nongnu.org Il 24/12/2013 01:18, Andreas Färber ha scritto: > Thanks, I have squashed it, but I would appreciate if someone more > familiar with interfaces could take a quick look at my commit message > before I send a PULL tomorrow. Should I drop Reported-by during squash? > > https://github.com/afaerber/qemu-cpu/commits/qom-next I think it can be left in because the subclass::superclass::interface bug was pre-existing. Here is a better wording: qom: Do not register interface "types" in the type table and fix names There should be no need to look them up nor enumerate the interface "types", whose "classes" are really just vtables. Just create the types and add them to the interface list of the parent type. Interfaces not registering their type anymore means that accessing superclass::interface by type name will fail when initializing subclass::interface. Thus, we need to pre-initialize the subclass's parent_type field before calling type_initialize. Apart from this, the interface "types" should never be used and thus it is harmless to leave them out of the hashtable. Further, the interface types had a bug with interfaces that are inherited from a superclass: The implementation type name was wrong (for example it was subclass::superclass::interface rather than just subclass::interface). This patch fixes this as well. Reported-by: Igor Mammedov Tested-by: Igor Mammedov Signed-off-by: Paolo Bonzini