linux-um archives
 help / color / mirror / Atom feed
From: Blaisorblade <blaisorblade@yahoo.it>
To: user-mode-linux-devel@lists.sourceforge.net
Cc: Jeff Dike <jdike@addtoit.com>,
	Bodo Stroesser <bstroesser@fujitsu-siemens.com>
Subject: Re: [uml-devel] Removing call to function pointer in inner loop of copy_from_user()
Date: Mon, 16 May 2005 19:04:13 +0200	[thread overview]
Message-ID: <200505161904.14197.blaisorblade@yahoo.it> (raw)
In-Reply-To: <20050516150055.GA4977@ccure.user-mode-linux.org>

On Monday 16 May 2005 17:00, Jeff Dike wrote:
> On Sun, May 15, 2005 at 08:44:44PM +0200, Blaisorblade wrote:
> > copy_from_user() loops, in SKAS mode, calls do_op inside the inner loop;
> > do_op acts on 4k at once, so with modern pipelines, the potential cost of
> > the function call can be very big.

> > Beyond that, we also call setjmp_wrapper, which simply puts a sigjmp_buf
> > on the stack.

> > Wouldn't the code be cleaner if we rip that out, together with the
> > va_arg() calls, and do everything inside do_buffer_op? Doh, those are
> > from userspace headers. However it looks they would be includable from
> > kernel code (no reference to kernel headers), by adding them at the end
> > of the include search path.

> > What's your opinion? I'm ready to work on this.

> I was unhappy about adding the setjmp there, but it turns out that the
> kernel data might not be present and so can segfault.  So, when that
> happens, we need to get out of there and return an error, and the way
> that's done is by the page fault handler longjmping back out.

Yes, I remember it, I worked with you on diagnosing the /dev/kmem crash.

> If you can think of a better way to do it, go ahead.

I could move maybe move sigsetjmp to kernelspace code; however, another 
possibility would be to use the exception handler tables we've always 
supported without using them (only drawback is that the code *must* be 
inlined, and possibly the need for some assembler code, which however is 
probably avoidable).
-- 
Paolo Giarrusso, aka Blaisorblade
Skype user "PaoloGiarrusso"
Linux registered user n. 292729
http://www.user-mode-linux.org/~blaisorblade




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

  reply	other threads:[~2005-05-16 17:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-15 18:44 [uml-devel] Removing call to function pointer in inner loop of copy_from_user() Blaisorblade
2005-05-16 15:00 ` Jeff Dike
2005-05-16 17:04   ` Blaisorblade [this message]
2005-05-16 18:48     ` Jeff Dike
2005-05-16 21:27       ` Blaisorblade

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=200505161904.14197.blaisorblade@yahoo.it \
    --to=blaisorblade@yahoo.it \
    --cc=bstroesser@fujitsu-siemens.com \
    --cc=jdike@addtoit.com \
    --cc=user-mode-linux-devel@lists.sourceforge.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox