[PATCH] Shrink thread_info a bit

Will Deacon will.deacon at arm.com
Wed Oct 26 03:11:59 EDT 2011


Hi Dave,

On Tue, Oct 25, 2011 at 03:41:11PM +0100, Dave Martin wrote:
> On Mon, Oct 24, 2011 at 02:18:53PM +0100, Will Deacon wrote:
> > 
> > Can we also shrink the contents of fp_state when AEABI && !OABI_COMPAT?
> 
> Is this the right config combination to indicate that the FPA ABI will
> not be supported?  I'm assuming so, since that's the condition which
> currently disallows CONFIG_NWFPE.
> 
> I'm not saying it's not ... I'm just unsure.

Well, we basically just want to check whether or not we might have OABI
executables in userspace so I think this is the right way of doing that.
I toyed with doing something like !CONFIG_VFP but that doesn't help with the
compat stuff.

> Note that the FPA state (35 words) is not that much smaller than the
> iwmmxt state (38 words), so not much space would be saved by shrinking
> that union.

Right, but the IWMMXT part of the union is already predicated on
CONFIG_IWMMXT so the goal is to have an empty union for the common case
(EABI and no IWMMXT).

> I wonder whether fpstate can go away completely on platforms which have
> neither fpa nor iwmmxt however.  That would be a more significant saving.
> Is it used for anything else?

That's kind of the idea, but I was just going to leave it empty.

> > It's slightly more involved as ptrace and core-dumping would need some
> > similar treatment. We probably need to keep the union kicking around
> > though, since the iwmmxt state is held in there.
> 
> We would need some sensible error return from the ptrace calls to access
> the FPA registers.  PTRACE_GETREGSET (not currently working on ARM since
> the relevant generic code is #ifdef'd on CONFIG_HAVE_ARCH_TRACEHOOK for
> some reason) returns -EINVAL when requesting a regset that isn't there.
> 
> Fixing coredumps should be relatively easy -- I think we just need to
> change arm_regsets[] in arch/arm/kernel/ptrace.c appropriately.

Russell also pointed out that we need to hack some assembly code for this to
work, but I can't say I've looked into it yet.

Will



More information about the linux-arm-kernel mailing list