On 13/11/2015 16:26, Thomas Gleixner wrote: > On Fri, 13 Nov 2015, Marc Gonzalez wrote: >> On 13/11/2015 15:16, Daniel Lezcano wrote: >>> For example: >>> >>> struct clockcommon { >>> u32 mult; >>> u32 shift; >>> int rating; >>> void __iomem *base; >>> char *name; >>> int irq; >>> }; >>> >>> struct clocksource { >>> struct clockcommon common; /* MUST be the first field */ >>> cycle_t (*read)(struct clocksource *cs); >>> cycle_t mask; >>> ... >>> }; >> >> According to my notes, commit 369db4c952 grouped hot-path data >> into a single cache line (hence ____cacheline_aligned). >> >> (AFAIR, ARMv7 ARCH_MULTIPLATFORM assumes CACHE_LINE=64) >> >> Not sure how to make the two concepts (common base struct and >> grouping hot data) play nicely, without wasting a lot of space >> on padding. > > It wont play well. We are not going to change the layout of struct > clocksource because it will hurt the sane use cases for no reason.
You are referring to Daniel's proposed reorg, right? What about my proposal? I inserted reg after maxadj, but it may be inserted anywhere in the struct. diff --git a/include/linux/clocksource.h b/include/linux/clocksource.h index 278dd279a7a8..03807ca0d54e 100644 --- a/include/linux/clocksource.h +++ b/include/linux/clocksource.h @@ -74,6 +74,9 @@ struct clocksource { u32 shift; u64 max_idle_ns; u32 maxadj; +#ifdef CONFIG_CLKSRC_MMIO + void __iomem *reg; +#endif #ifdef CONFIG_ARCH_CLOCKSOURCE_DATA struct arch_clocksource_data archdata; #endif -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/