From: James Hogan <james.hogan@imgtec.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Ralf Baechle <ralf@linux-mips.org>
Cc: Andrew Bresticker <abrestic@chromium.org>,
<linux-mips@linux-mips.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/9] MIPS: MT: Remove "weak" from vpe_run() declaration
Date: Mon, 13 Jul 2015 11:27:55 +0100 [thread overview]
Message-ID: <55A392AB.9030702@imgtec.com> (raw)
In-Reply-To: <20150712231120.11177.53145.stgit@bhelgaas-glaptop2.roam.corp.google.com>
[-- Attachment #1: Type: text/plain, Size: 3072 bytes --]
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")).
>
> That's not a problem for vpe_run() because Kconfig ensures there's never
> more than one definition:
>
> - vpe_run() is defined in arch/mips/kernel/vpe-mt.c if
> CONFIG_MIPS_VPE_LOADER_MT=y
>
> - vpe_run() is defined in arch/mips/mti-malta/malta-amon.c if
> CONFIG_MIPS_CMP=y
>
> - CONFIG_MIPS_VPE_LOADER_MT cannot be set if CONFIG_MIPS_CMP=y
>
> But it's simpler to verify correctness if we remove "weak" from the picture
> and test the config symbols directly.
>
> Remove "weak" from the vpe_run() declaration and use #if to test whether a
> definition should be present.
>
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
> arch/mips/include/asm/vpe.h | 2 +-
> arch/mips/kernel/vpe.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/mips/include/asm/vpe.h b/arch/mips/include/asm/vpe.h
> index 7849f39..80e70db 100644
> --- a/arch/mips/include/asm/vpe.h
> +++ b/arch/mips/include/asm/vpe.h
> @@ -122,7 +122,7 @@ void release_vpe(struct vpe *v);
> void *alloc_progmem(unsigned long len);
> void release_progmem(void *ptr);
>
> -int __weak vpe_run(struct vpe *v);
> +int vpe_run(struct vpe *v);
> void cleanup_tc(struct tc *tc);
>
> int __init vpe_module_init(void);
> diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
> index 72cae9f..04539d6 100644
> --- a/arch/mips/kernel/vpe.c
> +++ b/arch/mips/kernel/vpe.c
> @@ -817,15 +817,11 @@ static int vpe_open(struct inode *inode, struct file *filp)
>
> static int vpe_release(struct inode *inode, struct file *filp)
> {
> +#if defined(CONFIG_MIPS_VPE_LOADER_MT) || defined(CONFIG_MIPS_CMP)
That should be CONFIG_MIPS_VPE_LOADER_CMP, in which case the error case
in the #else bit is always dead code. This file is built only if
CONFIG_MIPS_VPE_LOADER, and the other ones are defined without prompts:
config MIPS_VPE_LOADER_CMP
bool
default "y"
depends on MIPS_VPE_LOADER && MIPS_CMP
config MIPS_VPE_LOADER_MT
bool
default "y"
depends on MIPS_VPE_LOADER && !MIPS_CMP
I.e. one xor the other must be "y" when MIPS_VPE_LOADER=y.
Maybe its worth just removing the weak and the vpe_run check?
Cheers
James
> struct vpe *v;
> Elf_Ehdr *hdr;
> int ret = 0;
>
> - if (!vpe_run) {
> - pr_warn("VPE loader: ELF load failed.\n");
> - return -ENOEXEC;
> - }
> -
> v = get_vpe(aprp_cpu_index());
> if (v == NULL)
> return -ENODEV;
> @@ -855,6 +851,10 @@ static int vpe_release(struct inode *inode, struct file *filp)
> v->plen = 0;
>
> return ret;
> +#else
> + pr_warn("VPE loader: ELF load failed.\n");
> + return -ENOEXEC;
> +#endif
> }
>
> static ssize_t vpe_write(struct file *file, const char __user *buffer,
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: James Hogan <james.hogan@imgtec.com>
To: Bjorn Helgaas <bhelgaas@google.com>, Ralf Baechle <ralf@linux-mips.org>
Cc: Andrew Bresticker <abrestic@chromium.org>,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/9] MIPS: MT: Remove "weak" from vpe_run() declaration
Date: Mon, 13 Jul 2015 11:27:55 +0100 [thread overview]
Message-ID: <55A392AB.9030702@imgtec.com> (raw)
Message-ID: <20150713102755.7w3KbGr1StB02CtQNBzKswROPELtc8h5JkroU7JVOFU@z> (raw)
In-Reply-To: <20150712231120.11177.53145.stgit@bhelgaas-glaptop2.roam.corp.google.com>
[-- Attachment #1: Type: text/plain, Size: 3072 bytes --]
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")).
>
> That's not a problem for vpe_run() because Kconfig ensures there's never
> more than one definition:
>
> - vpe_run() is defined in arch/mips/kernel/vpe-mt.c if
> CONFIG_MIPS_VPE_LOADER_MT=y
>
> - vpe_run() is defined in arch/mips/mti-malta/malta-amon.c if
> CONFIG_MIPS_CMP=y
>
> - CONFIG_MIPS_VPE_LOADER_MT cannot be set if CONFIG_MIPS_CMP=y
>
> But it's simpler to verify correctness if we remove "weak" from the picture
> and test the config symbols directly.
>
> Remove "weak" from the vpe_run() declaration and use #if to test whether a
> definition should be present.
>
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> ---
> arch/mips/include/asm/vpe.h | 2 +-
> arch/mips/kernel/vpe.c | 10 +++++-----
> 2 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/arch/mips/include/asm/vpe.h b/arch/mips/include/asm/vpe.h
> index 7849f39..80e70db 100644
> --- a/arch/mips/include/asm/vpe.h
> +++ b/arch/mips/include/asm/vpe.h
> @@ -122,7 +122,7 @@ void release_vpe(struct vpe *v);
> void *alloc_progmem(unsigned long len);
> void release_progmem(void *ptr);
>
> -int __weak vpe_run(struct vpe *v);
> +int vpe_run(struct vpe *v);
> void cleanup_tc(struct tc *tc);
>
> int __init vpe_module_init(void);
> diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c
> index 72cae9f..04539d6 100644
> --- a/arch/mips/kernel/vpe.c
> +++ b/arch/mips/kernel/vpe.c
> @@ -817,15 +817,11 @@ static int vpe_open(struct inode *inode, struct file *filp)
>
> static int vpe_release(struct inode *inode, struct file *filp)
> {
> +#if defined(CONFIG_MIPS_VPE_LOADER_MT) || defined(CONFIG_MIPS_CMP)
That should be CONFIG_MIPS_VPE_LOADER_CMP, in which case the error case
in the #else bit is always dead code. This file is built only if
CONFIG_MIPS_VPE_LOADER, and the other ones are defined without prompts:
config MIPS_VPE_LOADER_CMP
bool
default "y"
depends on MIPS_VPE_LOADER && MIPS_CMP
config MIPS_VPE_LOADER_MT
bool
default "y"
depends on MIPS_VPE_LOADER && !MIPS_CMP
I.e. one xor the other must be "y" when MIPS_VPE_LOADER=y.
Maybe its worth just removing the weak and the vpe_run check?
Cheers
James
> struct vpe *v;
> Elf_Ehdr *hdr;
> int ret = 0;
>
> - if (!vpe_run) {
> - pr_warn("VPE loader: ELF load failed.\n");
> - return -ENOEXEC;
> - }
> -
> v = get_vpe(aprp_cpu_index());
> if (v == NULL)
> return -ENODEV;
> @@ -855,6 +851,10 @@ static int vpe_release(struct inode *inode, struct file *filp)
> v->plen = 0;
>
> return ret;
> +#else
> + pr_warn("VPE loader: ELF load failed.\n");
> + return -ENOEXEC;
> +#endif
> }
>
> static ssize_t vpe_write(struct file *file, const char __user *buffer,
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2015-07-13 10:27 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-12 23:10 [PATCH 0/9] MIPS: Remove "weak" usage Bjorn Helgaas
2015-07-12 23:10 ` [PATCH 1/9] MIPS: CPC: Remove "weak" from mips_cpc_phys_base() and make it static Bjorn Helgaas
2015-07-12 23:11 ` [PATCH 2/9] MIPS: Remove "weak" from platform_maar_init() declaration Bjorn Helgaas
2015-07-13 9:46 ` James Hogan
2015-07-13 9:46 ` James Hogan
2015-07-12 23:11 ` [PATCH 3/9] MIPS: VPE: Exit vpe_release() early if vpe_run() isn't defined Bjorn Helgaas
2015-07-12 23:11 ` [PATCH 4/9] MIPS: MT: Remove "weak" from vpe_run() declaration Bjorn Helgaas
2015-07-13 10:27 ` James Hogan [this message]
2015-07-13 10:27 ` James Hogan
2015-07-13 21:35 ` Bjorn Helgaas
2015-07-12 23:11 ` [PATCH 5/9] MIPS: Remove "weak" from get_c0_perfcount_int() declaration Bjorn Helgaas
2015-07-13 9:43 ` James Hogan
2015-07-13 9:43 ` James Hogan
2015-07-13 21:13 ` Bjorn Helgaas
2015-07-12 23:11 ` [PATCH 6/9] MIPS: Remove "weak" from get_c0_compare_int() declaration Bjorn Helgaas
2015-07-13 9:36 ` James Hogan
2015-07-13 9:36 ` James Hogan
2015-07-12 23:11 ` [PATCH 7/9] MIPS: Remove "weak" from get_c0_fdc_int() declaration Bjorn Helgaas
2015-07-13 9:31 ` James Hogan
2015-07-13 9:31 ` James Hogan
2015-07-12 23:11 ` [PATCH 8/9] MIPS: Remove "weak" from mips_cdmm_phys_base() declaration Bjorn Helgaas
2015-07-13 9:20 ` James Hogan
2015-07-13 9:20 ` James Hogan
2015-07-12 23:12 ` [PATCH 9/9] MIPS: Remove "__weak" definition from arch-specific linkage.h Bjorn Helgaas
2015-07-13 10:08 ` James Hogan
2015-07-13 10:08 ` James Hogan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55A392AB.9030702@imgtec.com \
--to=james.hogan@imgtec.com \
--cc=abrestic@chromium.org \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.