From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753508AbbCXCcO (ORCPT ); Mon, 23 Mar 2015 22:32:14 -0400 Received: from mga11.intel.com ([192.55.52.93]:48006 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752281AbbCXCcK convert rfc822-to-8bit (ORCPT ); Mon, 23 Mar 2015 22:32:10 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.11,455,1422950400"; d="scan'208";a="545293305" From: "Wu, Feng" To: Joerg Roedel CC: "dwmw2@infradead.org" , "jiang.liu@linux.intel.com" , "iommu@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "Wu, Feng" Subject: RE: [v4 2/8] iommu, x86: Define new irte structure for VT-d Posted-Interrupts Thread-Topic: [v4 2/8] iommu, x86: Define new irte structure for VT-d Posted-Interrupts Thread-Index: AQHQZWCdnu6WQSAurk6Pc1/Smb8Rmp0q5PRw Date: Tue, 24 Mar 2015 02:32:01 +0000 Message-ID: References: <1422864424-19411-1-git-send-email-feng.wu@intel.com> <1422864424-19411-3-git-send-email-feng.wu@intel.com> <20150323115754.GN4441@8bytes.org> In-Reply-To: <20150323115754.GN4441@8bytes.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > -----Original Message----- > From: Joerg Roedel [mailto:joro@8bytes.org] > Sent: Monday, March 23, 2015 7:58 PM > To: Wu, Feng > Cc: dwmw2@infradead.org; jiang.liu@linux.intel.com; > iommu@lists.linux-foundation.org; linux-kernel@vger.kernel.org > Subject: Re: [v4 2/8] iommu, x86: Define new irte structure for VT-d > Posted-Interrupts > > Hi Feng, > > On Mon, Feb 02, 2015 at 04:06:58PM +0800, Feng Wu wrote: > > Add a new irte_pi structure for VT-d Posted-Interrupts. > > > > Signed-off-by: Feng Wu > > Reviewed-by: Jiang Liu > > Acked-by: David Woodhouse > > --- > > include/linux/dmar.h | 32 ++++++++++++++++++++++++++++++++ > > 1 files changed, 32 insertions(+), 0 deletions(-) > > > > diff --git a/include/linux/dmar.h b/include/linux/dmar.h > > index 8473756..c7f9cda 100644 > > --- a/include/linux/dmar.h > > +++ b/include/linux/dmar.h > > @@ -212,6 +212,38 @@ struct irte { > > }; > > }; > > > > +struct irte_pi { > > I think it is better to put this as a union into struct irte. It saves > memory and unnecessary casting in later patches. Thanks for the comments! Do you mean doing it like the following? struct irte { union { struct { __u64 present : 1, fpd : 1, dst_mode : 1, redir_hint : 1, trigger_mode : 1, dlvry_mode : 3, avail : 4, __reserved_1 : 4, vector : 8, __reserved_2 : 8, dest_id : 32; }; struct { __u64 present : 1, fpd : 1, __reserved_1 : 6, avail : 4, __reserved_2 : 2, urg : 1, pst : 1, vector : 8, __reserved_3 : 14, pda_l : 26; }; __u64 low; }; union { struct { __u64 sid : 16, sq : 2, svt : 2, __reserved_3 : 44; }; struct { __u64 sid : 16, sq : 2, svt : 2, __reserved_4 : 12, pda_h : 32; }; __u64 high; }; }; In fact, I also intended to make these two defines as one, however, this code will get build error ("duplicated member") with new version of GCC, such as, gcc 4.9.1. I cannot find a good way to handle this gracefully, since I don't want to impact the existing usage of this structure . Do you have any ideas about this? Thanks a lot! Thanks, Feng > > > Joerg