Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1182636
| From | James Hogan <james.hogan@imgtec.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 6/9] MIPS: Remove "weak" from get_c0_compare_int() declaration |
| Date | 2015-07-13 11:40 +0200 |
| Message-ID | <pLIno-3kU-1@gated-at.bofh.it> (permalink) |
| References | <pLyHn-5YP-3@gated-at.bofh.it> <pLyHn-5YP-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
[Multipart message — attachments visible in raw view] - view raw
On 13/07/15 00:11, Bjorn Helgaas wrote:
> Weak header file declarations are error-prone because they make every
> definition weak, and the linker chooses one based on link order (see
> 10629d711ed7 ("PCI: Remove __weak annotation from pcibios_get_phb_of_node
> decl")).
>
> get_c0_compare_int() is defined in several files. Each definition is weak,
> so I assume Kconfig prevents two or more from being included. The caller
> contains default code used when get_c0_compare_int() isn't defined at all.
>
> Add a weak get_c0_compare_int() definition with the default code and remove
> the weak annotation from the declaration.
>
> Then the platform implementations will be strong and will override the weak
> default. If multiple platforms are ever configured in, we'll get a link
> error instead of calling a random platform's implementation.
>
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: James Hogan <james.hogan@imgtec.com>
Cheers
James
> ---
> arch/mips/include/asm/time.h | 2 +-
> arch/mips/kernel/cevt-r4k.c | 11 +++++++----
> 2 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/arch/mips/include/asm/time.h b/arch/mips/include/asm/time.h
> index ce6a7d5..44a9c3a 100644
> --- a/arch/mips/include/asm/time.h
> +++ b/arch/mips/include/asm/time.h
> @@ -51,7 +51,7 @@ extern int get_c0_perfcount_int(void);
> /*
> * Initialize the calling CPU's compare interrupt as clockevent device
> */
> -extern unsigned int __weak get_c0_compare_int(void);
> +extern unsigned int get_c0_compare_int(void);
> extern int r4k_clockevent_init(void);
>
> static inline int mips_clockevent_init(void)
> diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
> index d70c4d8..cc7cc46 100644
> --- a/arch/mips/kernel/cevt-r4k.c
> +++ b/arch/mips/kernel/cevt-r4k.c
> @@ -174,6 +174,11 @@ int c0_compare_int_usable(void)
> return 1;
> }
>
> +unsigned int __weak get_c0_compare_int(void)
> +{
> + return MIPS_CPU_IRQ_BASE + cp0_compare_irq;
> +}
> +
> int r4k_clockevent_init(void)
> {
> unsigned int cpu = smp_processor_id();
> @@ -189,11 +194,9 @@ int r4k_clockevent_init(void)
> /*
> * With vectored interrupts things are getting platform specific.
> * get_c0_compare_int is a hook to allow a platform to return the
> - * interrupt number of it's liking.
> + * interrupt number of its liking.
> */
> - irq = MIPS_CPU_IRQ_BASE + cp0_compare_irq;
> - if (get_c0_compare_int)
> - irq = get_c0_compare_int();
> + irq = get_c0_compare_int();
>
> cd = &per_cpu(mips_clockevent_device, cpu);
>
>
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH 6/9] MIPS: Remove "weak" from get_c0_compare_int() declaration Bjorn Helgaas <bhelgaas@google.com> - 2015-07-13 01:20 +0200 Re: [PATCH 6/9] MIPS: Remove "weak" from get_c0_compare_int() declaration James Hogan <james.hogan@imgtec.com> - 2015-07-13 11:40 +0200
csiph-web