From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=54924 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Pwy3o-0004KO-Rd for qemu-devel@nongnu.org; Tue, 08 Mar 2011 09:38:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Pwy3m-0006St-LA for qemu-devel@nongnu.org; Tue, 08 Mar 2011 09:38:52 -0500 Received: from mail-iw0-f173.google.com ([209.85.214.173]:34927) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Pwy3m-0006SV-7H for qemu-devel@nongnu.org; Tue, 08 Mar 2011 09:38:50 -0500 Received: by iwl42 with SMTP id 42so5973353iwl.4 for ; Tue, 08 Mar 2011 06:38:49 -0800 (PST) Message-ID: <4D763F76.2020003@codemonkey.ws> Date: Tue, 08 Mar 2011 08:38:46 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 00/22] QAPI Round 1 References: <1299460984-15849-1-git-send-email-aliguori@us.ibm.com> <4D7500C8.1080101@codemonkey.ws> <4D760F2B.7030004@redhat.com> <4D7630BA.4010609@us.ibm.com> <4D763311.5030905@redhat.com> <4D763525.2030700@codemonkey.ws> <4D763674.8000600@redhat.com> <4D7638BE.60808@codemonkey.ws> <4D763A61.2020809@redhat.com> In-Reply-To: <4D763A61.2020809@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Avi Kivity Cc: Stefan Hajnoczi , qemu-devel@nongnu.org, Markus Armbruster , Michael D Roth , Adam Litke , Luiz Capitulino On 03/08/2011 08:17 AM, Avi Kivity wrote: >> No, I'm in the process of writing up my latest proposal. >> >> The idea is pretty simple. QAPI generates code for libqmp that takes >> native arguments for a command and generates a QObject. It also >> generates code for QEMU that takes a QObject and generates native >> arguments to pass to a function. >> >> For guest commands, we combine the two such that we unmarshal the >> incoming QObject to native arguments, then pass it to another >> function that marshals the arguments to a QObject. The QObject is >> then passed to the guest-agent which uses the same generated code as >> QEMU to unmarshal the qobject to native arguments and dispatch to a >> function. >> >> That means the only new code we need for the guest agent is the >> JSON-over-virtio-serial transport. To implement guest commands, we >> just add the command to the schema, implement the native arguments >> version in guest-agent, and that's it. >> >> QEMU will buffer all input and output to the guest acting as a first >> line of defence from a security PoV. That means that the guest >> doesn't get to talk directly to the management tools which removes >> that as a direct attack surface. >> >> The nature of QEMU is such that if we do tagging correctly, we can >> also support live migration transparently to the guest too. > http://wiki.qemu.org/Features/QAPI/GuestAgent Regards, Anthony Liguori