From: Fabrice Bellard <fabrice@bellard.org>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] linux-user EFAULT implementation
Date: Tue, 10 Jul 2007 22:45:16 +0200 [thread overview]
Message-ID: <4693EFDC.3080604@bellard.org> (raw)
In-Reply-To: <200707101338.44885.paul@codesourcery.com>
Paul Brook wrote:
(...]
> Using g2h directly is bad. g2h is an implementation detail of one particular
> memory model.
>
> The whole point of the lock_user abstraction (or a similar copy_from_user
> abstraction) is that almost none of the code cares how "user" memory is
> accessed. One of the long-term goals of this abstraction is to allow the
> softmmu code to be used with userspace emulation. In this case a region may
> be split across multiple discontiguous host pages.
I confirm that I expected g2h() to be completely removed in case the
Linux user access API is used.
> The reason I used a locking paradigm rather than a copying one is that it
> allows a zero-copy implementation in the common case. I've no strong
> objections to a copying interface, however it must be implementation
> agnostic.
Since you agree for the copying interface, I suggest to convert all the
code to it. The exact implementation of access_ok(), copy_to_user(),
copy_from_user()... will be easily modifiable if one day softmmu user
mode is needed.
In the only specific case of potentially big unbounded memory areas
(such as read/write buffers), a different API must be used where it is
possible to get a pointer to user pages (e.g. ptr = lock_user_page(addr,
rw_mode); if (!ptr) return -EFAULT; unlock_user_page(ptr)), so that no
copy is performed while being able to handle any user page remapping.
Regards,
Fabrice.
next prev parent reply other threads:[~2007-07-10 20:45 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-06 15:15 [Qemu-devel] [PATCH] linux-user EFAULT implementation Stuart Anderson
2007-07-06 16:08 ` Fabrice Bellard
2007-07-06 16:55 ` Stuart Anderson
2007-07-06 18:45 ` Stuart Anderson
2007-07-09 11:41 ` Stuart Anderson
2007-07-09 12:02 ` Stuart Anderson
2007-07-09 21:15 ` Fabrice Bellard
2007-07-10 2:22 ` Stuart Anderson
2007-07-10 12:38 ` Paul Brook
2007-07-10 20:45 ` Fabrice Bellard [this message]
2007-07-10 21:09 ` Stuart Anderson
2007-07-13 17:55 ` Stuart Anderson
2007-07-20 20:16 ` Stuart Anderson
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=4693EFDC.3080604@bellard.org \
--to=fabrice@bellard.org \
--cc=qemu-devel@nongnu.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.