From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752932AbdEPW3B (ORCPT ); Tue, 16 May 2017 18:29:01 -0400 Received: from bh-25.webhostbox.net ([208.91.199.152]:34797 "EHLO bh-25.webhostbox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750784AbdEPW3A (ORCPT ); Tue, 16 May 2017 18:29:00 -0400 Date: Tue, 16 May 2017 15:28:57 -0700 From: Guenter Roeck To: Matthias Kaehlcke Cc: David Howells , Andrew Morton , Sudip Mukherjee , linux-kernel@vger.kernel.org Subject: Re: [PATCH] frv: Declare jiffies to be located in the .data section Message-ID: <20170516222857.GA9588@roeck-us.net> References: <20170516221333.177280-1-mka@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170516221333.177280-1-mka@chromium.org> User-Agent: Mutt/1.5.24 (2015-08-30) X-Authenticated_sender: guenter@roeck-us.net X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - bh-25.webhostbox.net X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - roeck-us.net X-Get-Message-Sender-Via: bh-25.webhostbox.net: authenticated_id: guenter@roeck-us.net X-Authenticated-Sender: bh-25.webhostbox.net: guenter@roeck-us.net X-Source: X-Source-Args: X-Source-Dir: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, May 16, 2017 at 03:13:33PM -0700, Matthias Kaehlcke wrote: > Commit 7c30f352c852 ("jiffies.h: declare jiffies and jiffies_64 with > ____cacheline_aligned_in_smp") removed a section specification from the > jiffies declaration that caused conflicts on some platforms. Unfortunately > this change broke the build for frv: > > kernel/built-in.o: In function `__do_softirq': > (.text+0x6460): relocation truncated to fit: R_FRV_GPREL12 against symbol > `jiffies' defined in *ABS* section in .tmp_vmlinux1 > kernel/built-in.o: In function `__do_softirq': > (.text+0x6574): relocation truncated to fit: R_FRV_GPREL12 against symbol > `jiffies' defined in *ABS* section in .tmp_vmlinux1 > kernel/built-in.o: In function `pwq_activate_delayed_work': > workqueue.c:(.text+0x15b9c): relocation truncated to fit: R_FRV_GPREL12 against > symbol `jiffies' defined in *ABS* section in .tmp_vmlinux1 > ... > > Add __jiffy_arch_data to the declaration of jiffies and use it on frv to > include the section specification. For all other platforms __jiffy_arch_data > (currently) has no effect. > > Fixes: 7c30f352c852 ("jiffies.h: declare jiffies and jiffies_64 with > ____cacheline_aligned_in_smp") > Signed-off-by: Matthias Kaehlcke Tested-by: Guenter Roeck [frv:defconfig and x86_64:defconfig] > --- > arch/frv/include/asm/timex.h | 6 ++++++ > include/linux/jiffies.h | 6 +++++- > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/arch/frv/include/asm/timex.h b/arch/frv/include/asm/timex.h > index a89bddefdacf..139093fab326 100644 > --- a/arch/frv/include/asm/timex.h > +++ b/arch/frv/include/asm/timex.h > @@ -16,5 +16,11 @@ static inline cycles_t get_cycles(void) > #define vxtime_lock() do {} while (0) > #define vxtime_unlock() do {} while (0) > > +/* This attribute is used in include/linux/jiffies.h alongside with > + * __cacheline_aligned_in_smp. It is assumed that __cacheline_aligned_in_smp > + * for frv does not contain another section specification. > + */ > +#define __jiffy_arch_data __attribute__((__section__(".data"))) > + > #endif > > diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h > index 36872fbb815d..734377ad42e9 100644 > --- a/include/linux/jiffies.h > +++ b/include/linux/jiffies.h > @@ -64,13 +64,17 @@ extern int register_refined_jiffies(long clock_tick_rate); > /* TICK_USEC is the time between ticks in usec assuming fake USER_HZ */ > #define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ) > > +#ifndef __jiffy_arch_data > +#define __jiffy_arch_data > +#endif > + > /* > * The 64-bit value is not atomic - you MUST NOT read it > * without sampling the sequence number in jiffies_lock. > * get_jiffies_64() will do this for you as appropriate. > */ > extern u64 __cacheline_aligned_in_smp jiffies_64; > -extern unsigned long volatile __cacheline_aligned_in_smp jiffies; > +extern unsigned long volatile __cacheline_aligned_in_smp __jiffy_arch_data jiffies; > > #if (BITS_PER_LONG < 64) > u64 get_jiffies_64(void); > -- > 2.13.0.303.g4ebf302169-goog >