Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758226AbbKSKeJ (ORCPT ); Thu, 19 Nov 2015 05:34:09 -0500 Received: from pandora.arm.linux.org.uk ([78.32.30.218]:39732 "EHLO pandora.arm.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756459AbbKSKeH (ORCPT ); Thu, 19 Nov 2015 05:34:07 -0500 Date: Thu, 19 Nov 2015 10:33:54 +0000 From: Russell King - ARM Linux To: Marc Gonzalez Cc: Thomas Gleixner , Daniel Lezcano , LKML , Mans Rullgard , Viresh Kumar , Nicolas Pitre , Tony Lindgren , Sebastian Frias Subject: Re: [PATCH] clocksource: Store reg field within struct clocksource Message-ID: <20151119103354.GU8644@n2100.arm.linux.org.uk> References: <564C8086.80804@sigmadesigns.com> <20151118172114.GS8644@n2100.arm.linux.org.uk> <564D9605.4010207@sigmadesigns.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <564D9605.4010207@sigmadesigns.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1820 Lines: 43 On Thu, Nov 19, 2015 at 10:27:33AM +0100, Marc Gonzalez wrote: > On 18/11/2015 18:21, Russell King - ARM Linux wrote: > > On Wed, Nov 18, 2015 at 02:43:34PM +0100, Marc Gonzalez wrote: > > > >> Since 'struct clocksource' is ____cacheline_aligned, gcc must insert > >> a lot of padding between reg and clksrc in 'struct clocksource_mmio' > >> (for example, L1_CACHE_BYTES = 64 on ARMv7). > >> > >> Storing reg within 'struct clocksource' removes unnecessary padding, > >> and reg can then be grouped with other hot data. A nice side-effect > >> of this patch is making container_of() unnecessary, which makes the > >> code a bit simpler. > >> > >> On 32-bit platforms, reg fits in the padding between read and mask, > >> meaning no downside from storing it there. > > > > Just swap the order of 'reg' and 'clksrc'. > > You already suggested that the last time (April 1st). > What problem is this supposed to solve? > Swapping the fields does not change the amount of padding required, > and does not place reg close to the hot data. > > On a 32-bit platform, with L1_CACHE_BYTES = 64 > > sizeof(struct unaligned_clocksource) = 80 > sizeof(struct clocksource) = 128 > sizeof(struct clocksource_mmio) = 192, reg at +0, clksrc at +64 > sizeof(struct clocksource_mmio2) = 192, reg at +128, clksrc at +0 > > Same amount of padding. Maybe the ____cacheline_aligned is inappropriate then, because it means any wrapping of struct clocksource has exactly the same problem. -- FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up according to speedtest.net. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/