From mboxrd@z Thu Jan 1 00:00:00 1970 From: ZhenHua Subject: Re: [PATCH 1/1] x86/iommu: use bit structures for context_entry Date: Fri, 24 May 2013 08:43:04 +0800 Message-ID: <519EB798.2080904@hp.com> References: <1369354931-19373-1-git-send-email-zhen-hual@hp.com> <1369355784.2080.5.camel@joe-AO722> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1369355784.2080.5.camel@joe-AO722> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Joe Perches Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, David Woodhouse , linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: iommu@lists.linux-foundation.org Use lo and hi for clear, may run faster than memset. But it is not a big problem. Never mind. Thanks ZhenHua On 05/24/2013 08:36 AM, Joe Perches wrote: > On Fri, 2013-05-24 at 08:22 +0800, Li, Zhen-Hua wrote: >> There is a structure named context_entry used by intel iommu, and there >> are some bit operations on it. Use bit structure may make these operations >> easy. > [] >> diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > [] >> @@ -221,55 +221,28 @@ get_context_addr_from_root(struct root_entry *root) >> * 8-23: domain id >> */ >> struct context_entry { >> - u64 lo; >> - u64 hi; >> + union { >> + struct { >> + u64 present:1, > why use struct and union at all? > > Why not just: > > struct context_entry { > u64 present:1, > fpd:1, > translation_type:2, > reserved_l:8, > asr:52; > u64 aw:3, > avail:4, > reserved_h1:1, > did:16, > reserved_h2:40; > }; > >> @@ -743,7 +716,8 @@ static void clear_context_table(struct intel_iommu *iommu, u8 bus, u8 devfn) > [] >> if (context) { >> - context_clear_entry(&context[devfn]); >> + context[devfn].lo = 0; >> + context[devfn].hi = 0; > memset(&context[devfn], 0, sizeof(...)) > >