[PATCH 10/24] timekeeping: Define a struct type for tk_core to make it reusable

Anna-Maria Behnsen posted 24 patches 2 months, 2 weeks ago
There is a newer version of this series
[PATCH 10/24] timekeeping: Define a struct type for tk_core to make it reusable
Posted by Anna-Maria Behnsen 2 months, 2 weeks ago
The struct tk_core uses is not reusable. As long as there is only a single
timekeeper, this is not a problem. But when the timekeeper infrastructure
will be reused for per ptp clock timekeepers, an explicit struct type is
required.

Define struct tk_data as explicit struct type for tk_core.

Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
---
 kernel/time/timekeeping.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index f8ffab5bb790..be939ce3bcfc 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -45,12 +45,14 @@ enum timekeeping_adv_mode {
  * The most important data for readout fits into a single 64 byte
  * cache line.
  */
-static struct {
+struct tk_data {
 	seqcount_raw_spinlock_t	seq;
 	struct timekeeper	timekeeper;
 	struct timekeeper	shadow_timekeeper;
 	raw_spinlock_t		lock;
-} tk_core ____cacheline_aligned;
+} ____cacheline_aligned;
+
+static struct tk_data tk_core;
 
 /* flag for if timekeeping is suspended */
 int __read_mostly timekeeping_suspended;

-- 
2.39.2
Re: [PATCH 10/24] timekeeping: Define a struct type for tk_core to make it reusable
Posted by Simon Horman 2 months, 2 weeks ago
On Wed, Sep 11, 2024 at 03:29:54PM +0200, Anna-Maria Behnsen wrote:
> The struct tk_core uses is not reusable. As long as there is only a single
> timekeeper, this is not a problem. But when the timekeeper infrastructure
> will be reused for per ptp clock timekeepers, an explicit struct type is
> required.
> 
> Define struct tk_data as explicit struct type for tk_core.
> 
> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>

...

Hi Anna-Maria,

I wonder if the order of this and the previous patch should
be reversed, or the two patches should be squashed together.

I am seeing a build failure with only patches 01-09/24 of this series
applied, which seem to be resolved by applying this patch.

.../timekeeping.c:1735:43: warning: declaration of 'struct tk_data' will not be visible outside of this function [-Wvisibility]
 1735 | static __init void tkd_basic_setup(struct tk_data *tkd)
...
Re: [PATCH 10/24] timekeeping: Define a struct type for tk_core to make it reusable
Posted by Anna-Maria Behnsen 2 months, 2 weeks ago
Simon Horman <horms@kernel.org> writes:

> On Wed, Sep 11, 2024 at 03:29:54PM +0200, Anna-Maria Behnsen wrote:
>> The struct tk_core uses is not reusable. As long as there is only a single
>> timekeeper, this is not a problem. But when the timekeeper infrastructure
>> will be reused for per ptp clock timekeepers, an explicit struct type is
>> required.
>> 
>> Define struct tk_data as explicit struct type for tk_core.
>> 
>> Signed-off-by: Anna-Maria Behnsen <anna-maria@linutronix.de>
>
> ...
>
> Hi Anna-Maria,
>
> I wonder if the order of this and the previous patch should
> be reversed, or the two patches should be squashed together.
>
> I am seeing a build failure with only patches 01-09/24 of this series
> applied, which seem to be resolved by applying this patch.
>
> .../timekeeping.c:1735:43: warning: declaration of 'struct tk_data' will not be visible outside of this function [-Wvisibility]
>  1735 | static __init void tkd_basic_setup(struct tk_data *tkd)
> ...

Oh, I'm sorry. I mixed something up. Thanks for letting me know, I'll
have a look at it and fix it!

	Anna-Maria