From: Chuck Ebbert <cebbert.lkml@gmail.com>
To: David Daney <ddaney@caviumnetworks.com>
Cc: Ralf Baechle <ralf@linux-mips.org>, Rich Felker <dalias@libc.org>,
David Daney <ddaney.cavm@gmail.com>, <libc-alpha@sourceware.org>,
<linux-kernel@vger.kernel.org>, <linux-mips@linux-mips.org>,
David Daney <david.daney@cavium.com>
Subject: Re: [PATCH resend] MIPS: Allow FPU emulator to use non-stack area.
Date: Tue, 7 Oct 2014 19:18:33 -0500 [thread overview]
Message-ID: <20141007191833.4d625472@as> (raw)
In-Reply-To: <54347E47.1080809@caviumnetworks.com>
On Tue, 7 Oct 2014 16:59:03 -0700
David Daney <ddaney@caviumnetworks.com> wrote:
> On 10/07/2014 04:20 PM, Ralf Baechle wrote:
> > On Mon, Oct 06, 2014 at 02:18:19PM -0700, David Daney wrote:
> >
> >>> As an alternative, if the space of possible instruction with a delay
> >>> slot is sufficiently small, all such instructions could be mapped as
> >>> immutable code in a shared mapping, each at a fixed offset in the
> >>> mapping. I suspect this would be borderline-impractical (multiple
> >>> megabytes?), but it is the cleanest solution otherwise.
> >>>
> >>
> >> Yes, there are 2^32 possible instructions. Each one is 4 bytes, plus you
> >> need a way to exit after the instruction has executed, which would require
> >> another instruction. So you would need 32GB of memory to hold all those
> >> instructions, larger than the 32-bit virtual address space.
> >
> > Plus errata support for some older CPUs requires no other instructions
> > that might cause an exception to be present in the same cache line inflating
> > the size to 32 bytes per instruction.
> >
> > I've contemplated a full emulation - but that would require an emulator that
> > is capable of most of the instruction set. With all the random ASEs around
> > that would be hard to implement while the FPU emulator trampoline as currently
> > used has the advantage of automatically supporting ASEs, known and unknown.
> > So it's a huge bonus for maintenance.
> >
>
> Unfortunatly it breaks when our friends at Imgtec introduce their PC
> relative instructions in mipsr6, so an emulator may be unavoidable.
>
The x86 kprobes code deals with executing relocated insns with
PC-relative offsets by adjusting the offset in a relocated instruction
before executing it.
See arch/x86/kernel/kprobes/core.c::__copy_instruction()
WARNING: multiple messages have this Message-ID (diff)
From: Chuck Ebbert <cebbert.lkml@gmail.com>
To: David Daney <ddaney@caviumnetworks.com>
Cc: Ralf Baechle <ralf@linux-mips.org>, Rich Felker <dalias@libc.org>,
David Daney <ddaney.cavm@gmail.com>,
libc-alpha@sourceware.org, linux-kernel@vger.kernel.org,
linux-mips@linux-mips.org, David Daney <david.daney@cavium.com>
Subject: Re: [PATCH resend] MIPS: Allow FPU emulator to use non-stack area.
Date: Tue, 7 Oct 2014 19:18:33 -0500 [thread overview]
Message-ID: <20141007191833.4d625472@as> (raw)
Message-ID: <20141008001833.VK_Vl63rbrPsLNy5IMmtQARnECwkW0yBlOnTUOPC1VE@z> (raw)
In-Reply-To: <54347E47.1080809@caviumnetworks.com>
On Tue, 7 Oct 2014 16:59:03 -0700
David Daney <ddaney@caviumnetworks.com> wrote:
> On 10/07/2014 04:20 PM, Ralf Baechle wrote:
> > On Mon, Oct 06, 2014 at 02:18:19PM -0700, David Daney wrote:
> >
> >>> As an alternative, if the space of possible instruction with a delay
> >>> slot is sufficiently small, all such instructions could be mapped as
> >>> immutable code in a shared mapping, each at a fixed offset in the
> >>> mapping. I suspect this would be borderline-impractical (multiple
> >>> megabytes?), but it is the cleanest solution otherwise.
> >>>
> >>
> >> Yes, there are 2^32 possible instructions. Each one is 4 bytes, plus you
> >> need a way to exit after the instruction has executed, which would require
> >> another instruction. So you would need 32GB of memory to hold all those
> >> instructions, larger than the 32-bit virtual address space.
> >
> > Plus errata support for some older CPUs requires no other instructions
> > that might cause an exception to be present in the same cache line inflating
> > the size to 32 bytes per instruction.
> >
> > I've contemplated a full emulation - but that would require an emulator that
> > is capable of most of the instruction set. With all the random ASEs around
> > that would be hard to implement while the FPU emulator trampoline as currently
> > used has the advantage of automatically supporting ASEs, known and unknown.
> > So it's a huge bonus for maintenance.
> >
>
> Unfortunatly it breaks when our friends at Imgtec introduce their PC
> relative instructions in mipsr6, so an emulator may be unavoidable.
>
The x86 kprobes code deals with executing relocated insns with
PC-relative offsets by adjusting the offset in a relocated instruction
before executing it.
See arch/x86/kernel/kprobes/core.c::__copy_instruction()
next prev parent reply other threads:[~2014-10-08 0:18 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-06 20:23 [PATCH resend] MIPS: Allow FPU emulator to use non-stack area David Daney
2014-10-06 20:54 ` Rich Felker
2014-10-06 21:18 ` David Daney
2014-10-06 21:18 ` David Daney
2014-10-06 21:31 ` Rich Felker
2014-10-06 21:45 ` David Daney
2014-10-06 21:45 ` David Daney
2014-10-06 21:58 ` Rich Felker
2014-10-06 22:17 ` David Daney
2014-10-06 22:17 ` David Daney
2014-10-06 23:08 ` Rich Felker
2014-10-06 23:38 ` Andy Lutomirski
2014-10-06 23:48 ` David Daney
2014-10-06 23:48 ` David Daney
2014-10-06 23:54 ` Andy Lutomirski
2014-10-07 0:05 ` Rich Felker
2014-10-07 0:11 ` Andrew Pinski
2014-10-07 0:21 ` Rich Felker
2014-10-07 0:28 ` Andrew Pinski
2014-10-07 0:29 ` Andy Lutomirski
2014-10-07 0:32 ` David Daney
2014-10-07 0:33 ` David Daney
2014-10-07 0:33 ` David Daney
2014-10-07 0:48 ` Andy Lutomirski
2014-10-07 0:49 ` Rich Felker
2014-10-07 4:50 ` David Daney
2014-10-07 9:13 ` Matthew Fortune
2014-10-07 9:13 ` Matthew Fortune
2014-10-07 9:13 ` Matthew Fortune
2014-10-07 10:52 ` James Hogan
2014-10-07 11:19 ` Rich Felker
2014-10-07 16:04 ` David Daney
2014-10-07 18:32 ` Leonid Yegoshin
2014-10-07 18:43 ` David Daney
2014-10-07 19:13 ` Leonid Yegoshin
2014-10-07 18:44 ` Andy Lutomirski
2014-10-07 18:50 ` David Daney
2014-10-07 19:09 ` Rich Felker
2014-10-07 19:16 ` Leonid Yegoshin
2014-10-07 19:21 ` Rich Felker
2014-10-07 19:27 ` Leonid Yegoshin
2014-10-07 19:28 ` Andy Lutomirski
2014-10-07 20:03 ` David Daney
2014-10-08 0:22 ` Andy Lutomirski
2014-10-07 19:40 ` Matthew Fortune
2014-10-07 19:40 ` Matthew Fortune
2014-10-07 11:11 ` Rich Felker
2014-10-07 16:08 ` David Daney
2014-10-07 16:08 ` David Daney
2014-10-07 18:16 ` Andy Lutomirski
2014-10-07 23:20 ` Ralf Baechle
2014-10-07 23:59 ` David Daney
2014-10-07 23:59 ` David Daney
2014-10-08 0:18 ` Chuck Ebbert [this message]
2014-10-08 0:18 ` Chuck Ebbert
2014-10-08 2:37 ` Rich Felker
2014-10-08 10:31 ` Paul Burton
2014-10-08 10:31 ` Paul Burton
2014-10-07 1:02 ` Kevin D. Kissell
2014-10-07 1:38 ` Rich Felker
2014-10-07 4:32 ` David Daney
2014-10-07 11:53 ` James Hogan
2014-10-07 11:53 ` James Hogan
2014-10-07 12:22 ` James Hogan
2014-10-07 12:22 ` 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=20141007191833.4d625472@as \
--to=cebbert.lkml@gmail.com \
--cc=dalias@libc.org \
--cc=david.daney@cavium.com \
--cc=ddaney.cavm@gmail.com \
--cc=ddaney@caviumnetworks.com \
--cc=libc-alpha@sourceware.org \
--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.