From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 04/15] KVM: x86 emulator: Add check_perm callback Date: Sun, 03 Apr 2011 15:35:28 +0300 Message-ID: <4D986990.1090604@redhat.com> References: <1301667024-29420-1-git-send-email-joerg.roedel@amd.com> <1301667024-29420-5-git-send-email-joerg.roedel@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcelo Tosatti , kvm@vger.kernel.org To: Joerg Roedel Return-path: Received: from mx1.redhat.com ([209.132.183.28]:12626 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752275Ab1DCMff (ORCPT ); Sun, 3 Apr 2011 08:35:35 -0400 In-Reply-To: <1301667024-29420-5-git-send-email-joerg.roedel@amd.com> Sender: kvm-owner@vger.kernel.org List-ID: On 04/01/2011 05:10 PM, Joerg Roedel wrote: > This patch adds a check_perm callback for each opcode into > the instruction emulator. This will be used to do all > necessary permission checks on instructions before checking > whether they are intercepted or not. > > > @@ -216,6 +216,7 @@ struct decode_cache { > u8 seg_override; > unsigned int d; > int (*execute)(struct x86_emulate_ctxt *ctxt); > + int (*check_perm)(struct x86_emulate_ctxt *ctxt); I originally mean to use a group-like structure to have check_perm only when needed, but I guess this is a premature optimization. #define D(_y) { .flags = (_y) } > #define DI(_y, _i) { .flags = (_y), .intercept = x86_intercept_##_i } > +#define DIP(_y, _i) { .flags = (_y), .intercept = x86_intercept_##_i, \ > + .check_perm = em_check_perm_##_i } Sorry, this (and all the #defines which follow) are just obfuscating. I set a bad example here, but the following patches show there is nothing gained by the ## games. Please use the full function name. -- error compiling committee.c: too many arguments to function