All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Michael Neuling <mikey@neuling.org>
Cc: vda.linux@googlemail.com,
	Nishanth Aravamudan <nacc@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org, Steve Munroe <sjmunroe@us.ibm.com>,
	paulus@samba.org, viro@zeniv.linux.org.uk,
	akpm@linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
	Ryan Arnold <ryanarn@us.ibm.com>
Subject: Re: [PATCH] powerpc: Add HWCAP2 aux entry
Date: Tue, 23 Apr 2013 10:41:42 +1000	[thread overview]
Message-ID: <1366677702.2886.9.camel@pasglop> (raw)
In-Reply-To: <32253.1366256478@ale.ozlabs.ibm.com>

On Thu, 2013-04-18 at 13:41 +1000, Michael Neuling wrote:
> akpm,
> 
> If you're happy with this, is it something you can take in your tree?

Andrew ? Or give me an ack ? :-) I'm happy to carry this, we need that
rather urgently and we have the glibc folks on board.

Cheers,
Ben.

> Mikey
> 
> Michael Neuling <mikey@neuling.org> wrote:
> > We are currently out of free bits in AT_HWCAP. With POWER8, we have
> > several hardware features that we need to advertise. 
> > 
> > Tested on POWER and x86.
> > 
> > Signed-off-by: Michael Neuling <michael@neuling.org>
> > Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
> > ---
> > 
> > > Wouldn't it be safer to not emit AT_HWCAP2 unless it is defined by the arch?
> > > 
> > > That way the change would only impact powerpc.
> > 
> > Should be addressed with this version.
> > 
> > Mikey
> > 
> > diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
> > index fb3245e..ccadad6 100644
> > --- a/arch/powerpc/include/asm/cputable.h
> > +++ b/arch/powerpc/include/asm/cputable.h
> > @@ -52,6 +52,7 @@ struct cpu_spec {
> >  	char		*cpu_name;
> >  	unsigned long	cpu_features;		/* Kernel features */
> >  	unsigned int	cpu_user_features;	/* Userland features */
> > +	unsigned int	cpu_user_features2;	/* Userland features v2 */
> >  	unsigned int	mmu_features;		/* MMU features */
> >  
> >  	/* cache line sizes */
> > diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
> > index ac9790f..cc0655a 100644
> > --- a/arch/powerpc/include/asm/elf.h
> > +++ b/arch/powerpc/include/asm/elf.h
> > @@ -61,6 +61,7 @@ typedef elf_vrregset_t elf_fpxregset_t;
> >     instruction set this cpu supports.  This could be done in userspace,
> >     but it's not easy, and we've already done it here.  */
> >  # define ELF_HWCAP	(cur_cpu_spec->cpu_user_features)
> > +# define ELF_HWCAP2	(cur_cpu_spec->cpu_user_features2)
> >  
> >  /* This yields a string that ld.so will use to load implementation
> >     specific libraries for optimization.  This is more specific in
> > diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
> > index 3939829..1f8b5d5 100644
> > --- a/fs/binfmt_elf.c
> > +++ b/fs/binfmt_elf.c
> > @@ -240,6 +240,9 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
> >  	NEW_AUX_ENT(AT_EGID, from_kgid_munged(cred->user_ns, cred->egid));
> >   	NEW_AUX_ENT(AT_SECURE, security_bprm_secureexec(bprm));
> >  	NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes);
> > +#ifdef ELF_HWCAP2
> > +	NEW_AUX_ENT(AT_HWCAP2, ELF_HWCAP2);
> > +#endif
> >  	NEW_AUX_ENT(AT_EXECFN, bprm->exec);
> >  	if (k_platform) {
> >  		NEW_AUX_ENT(AT_PLATFORM,
> > diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
> > index 9c13e02..bf2381d 100644
> > --- a/fs/binfmt_elf_fdpic.c
> > +++ b/fs/binfmt_elf_fdpic.c
> > @@ -483,7 +483,6 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  	size_t platform_len = 0, len;
> >  	char *k_platform, *k_base_platform;
> >  	char __user *u_platform, *u_base_platform, *p;
> > -	long hwcap;
> >  	int loop;
> >  	int nr;	/* reset for each csp adjustment */
> >  
> > @@ -502,8 +501,6 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  		return -EFAULT;
> >  #endif
> >  
> > -	hwcap = ELF_HWCAP;
> > -
> >  	/*
> >  	 * If this architecture has a platform capability string, copy it
> >  	 * to userspace.  In some cases (Sparc), this info is impossible
> > @@ -617,7 +614,10 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  
> >  	nr = 0;
> >  	csp -= DLINFO_ITEMS * 2 * sizeof(unsigned long);
> > -	NEW_AUX_ENT(AT_HWCAP,	hwcap);
> > +	NEW_AUX_ENT(AT_HWCAP,	ELF_HWCAP);
> > +#ifdef ELF_HWCAP2
> > +	NEW_AUX_ENT(AT_HWCAP2,	ELF_HWCAP2);
> > +#endif
> >  	NEW_AUX_ENT(AT_PAGESZ,	PAGE_SIZE);
> >  	NEW_AUX_ENT(AT_CLKTCK,	CLOCKS_PER_SEC);
> >  	NEW_AUX_ENT(AT_PHDR,	exec_params->ph_addr);
> > diff --git a/include/uapi/linux/auxvec.h b/include/uapi/linux/auxvec.h
> > index 61594d5..835c065 100644
> > --- a/include/uapi/linux/auxvec.h
> > +++ b/include/uapi/linux/auxvec.h
> > @@ -28,6 +28,7 @@
> >  #define AT_BASE_PLATFORM 24	/* string identifying real platform, may
> >  				 * differ from AT_PLATFORM. */
> >  #define AT_RANDOM 25	/* address of 16 random bytes */
> > +#define AT_HWCAP2 26	/* extension of AT_HWCAP */
> >  
> >  #define AT_EXECFN  31	/* filename of program */
> >  
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-dev
> > 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev

WARNING: multiple messages have this Message-ID (diff)
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Michael Neuling <mikey@neuling.org>
Cc: akpm@linux-foundation.org, vda.linux@googlemail.com,
	Nishanth Aravamudan <nacc@linux.vnet.ibm.com>,
	Steve Munroe <sjmunroe@us.ibm.com>,
	linux-kernel@vger.kernel.org, paulus@samba.org,
	viro@zeniv.linux.org.uk, Ryan Arnold <ryanarn@us.ibm.com>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH] powerpc: Add HWCAP2 aux entry
Date: Tue, 23 Apr 2013 10:41:42 +1000	[thread overview]
Message-ID: <1366677702.2886.9.camel@pasglop> (raw)
In-Reply-To: <32253.1366256478@ale.ozlabs.ibm.com>

On Thu, 2013-04-18 at 13:41 +1000, Michael Neuling wrote:
> akpm,
> 
> If you're happy with this, is it something you can take in your tree?

Andrew ? Or give me an ack ? :-) I'm happy to carry this, we need that
rather urgently and we have the glibc folks on board.

Cheers,
Ben.

> Mikey
> 
> Michael Neuling <mikey@neuling.org> wrote:
> > We are currently out of free bits in AT_HWCAP. With POWER8, we have
> > several hardware features that we need to advertise. 
> > 
> > Tested on POWER and x86.
> > 
> > Signed-off-by: Michael Neuling <michael@neuling.org>
> > Signed-off-by: Nishanth Aravamudan <nacc@linux.vnet.ibm.com>
> > ---
> > 
> > > Wouldn't it be safer to not emit AT_HWCAP2 unless it is defined by the arch?
> > > 
> > > That way the change would only impact powerpc.
> > 
> > Should be addressed with this version.
> > 
> > Mikey
> > 
> > diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
> > index fb3245e..ccadad6 100644
> > --- a/arch/powerpc/include/asm/cputable.h
> > +++ b/arch/powerpc/include/asm/cputable.h
> > @@ -52,6 +52,7 @@ struct cpu_spec {
> >  	char		*cpu_name;
> >  	unsigned long	cpu_features;		/* Kernel features */
> >  	unsigned int	cpu_user_features;	/* Userland features */
> > +	unsigned int	cpu_user_features2;	/* Userland features v2 */
> >  	unsigned int	mmu_features;		/* MMU features */
> >  
> >  	/* cache line sizes */
> > diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h
> > index ac9790f..cc0655a 100644
> > --- a/arch/powerpc/include/asm/elf.h
> > +++ b/arch/powerpc/include/asm/elf.h
> > @@ -61,6 +61,7 @@ typedef elf_vrregset_t elf_fpxregset_t;
> >     instruction set this cpu supports.  This could be done in userspace,
> >     but it's not easy, and we've already done it here.  */
> >  # define ELF_HWCAP	(cur_cpu_spec->cpu_user_features)
> > +# define ELF_HWCAP2	(cur_cpu_spec->cpu_user_features2)
> >  
> >  /* This yields a string that ld.so will use to load implementation
> >     specific libraries for optimization.  This is more specific in
> > diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
> > index 3939829..1f8b5d5 100644
> > --- a/fs/binfmt_elf.c
> > +++ b/fs/binfmt_elf.c
> > @@ -240,6 +240,9 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec,
> >  	NEW_AUX_ENT(AT_EGID, from_kgid_munged(cred->user_ns, cred->egid));
> >   	NEW_AUX_ENT(AT_SECURE, security_bprm_secureexec(bprm));
> >  	NEW_AUX_ENT(AT_RANDOM, (elf_addr_t)(unsigned long)u_rand_bytes);
> > +#ifdef ELF_HWCAP2
> > +	NEW_AUX_ENT(AT_HWCAP2, ELF_HWCAP2);
> > +#endif
> >  	NEW_AUX_ENT(AT_EXECFN, bprm->exec);
> >  	if (k_platform) {
> >  		NEW_AUX_ENT(AT_PLATFORM,
> > diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
> > index 9c13e02..bf2381d 100644
> > --- a/fs/binfmt_elf_fdpic.c
> > +++ b/fs/binfmt_elf_fdpic.c
> > @@ -483,7 +483,6 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  	size_t platform_len = 0, len;
> >  	char *k_platform, *k_base_platform;
> >  	char __user *u_platform, *u_base_platform, *p;
> > -	long hwcap;
> >  	int loop;
> >  	int nr;	/* reset for each csp adjustment */
> >  
> > @@ -502,8 +501,6 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  		return -EFAULT;
> >  #endif
> >  
> > -	hwcap = ELF_HWCAP;
> > -
> >  	/*
> >  	 * If this architecture has a platform capability string, copy it
> >  	 * to userspace.  In some cases (Sparc), this info is impossible
> > @@ -617,7 +614,10 @@ static int create_elf_fdpic_tables(struct linux_binprm *bprm,
> >  
> >  	nr = 0;
> >  	csp -= DLINFO_ITEMS * 2 * sizeof(unsigned long);
> > -	NEW_AUX_ENT(AT_HWCAP,	hwcap);
> > +	NEW_AUX_ENT(AT_HWCAP,	ELF_HWCAP);
> > +#ifdef ELF_HWCAP2
> > +	NEW_AUX_ENT(AT_HWCAP2,	ELF_HWCAP2);
> > +#endif
> >  	NEW_AUX_ENT(AT_PAGESZ,	PAGE_SIZE);
> >  	NEW_AUX_ENT(AT_CLKTCK,	CLOCKS_PER_SEC);
> >  	NEW_AUX_ENT(AT_PHDR,	exec_params->ph_addr);
> > diff --git a/include/uapi/linux/auxvec.h b/include/uapi/linux/auxvec.h
> > index 61594d5..835c065 100644
> > --- a/include/uapi/linux/auxvec.h
> > +++ b/include/uapi/linux/auxvec.h
> > @@ -28,6 +28,7 @@
> >  #define AT_BASE_PLATFORM 24	/* string identifying real platform, may
> >  				 * differ from AT_PLATFORM. */
> >  #define AT_RANDOM 25	/* address of 16 random bytes */
> > +#define AT_HWCAP2 26	/* extension of AT_HWCAP */
> >  
> >  #define AT_EXECFN  31	/* filename of program */
> >  
> > _______________________________________________
> > Linuxppc-dev mailing list
> > Linuxppc-dev@lists.ozlabs.org
> > https://lists.ozlabs.org/listinfo/linuxppc-dev
> > 
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev



  reply	other threads:[~2013-04-23  0:42 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-02 21:22 [PATCH] powerpc: Add HWCAP2 aux entry Nishanth Aravamudan
2013-04-02 21:22 ` Nishanth Aravamudan
2013-04-05  7:06 ` Michael Ellerman
2013-04-05  7:06   ` Michael Ellerman
     [not found]   ` <27144.1366001074@ale.ozlabs.ibm.com>
2013-04-18  3:33     ` Michael Neuling
2013-04-18  3:41       ` Michael Neuling
2013-04-18  3:41         ` Michael Neuling
2013-04-23  0:41         ` Benjamin Herrenschmidt [this message]
2013-04-23  0:41           ` Benjamin Herrenschmidt
2013-04-24 19:36           ` Andrew Morton
2013-04-24 19:36             ` Andrew Morton

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=1366677702.2886.9.camel@pasglop \
    --to=benh@kernel.crashing.org \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mikey@neuling.org \
    --cc=nacc@linux.vnet.ibm.com \
    --cc=paulus@samba.org \
    --cc=ryanarn@us.ibm.com \
    --cc=sjmunroe@us.ibm.com \
    --cc=vda.linux@googlemail.com \
    --cc=viro@zeniv.linux.org.uk \
    /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.