From: "Stephen C. Tweedie" <sct@redhat.com>
To: James Simmons <jsimmons@edgeglobal.com>
Cc: "Benjamin C.R. LaHaise" <blah@kvack.org>,
Linux MM <linux-mm@kvack.org>, Stephen Tweedie <sct@redhat.com>
Subject: Re: MMIO regions
Date: Mon, 4 Oct 1999 20:19:52 +0100 (BST) [thread overview]
Message-ID: <14328.64984.364562.947945@dukat.scot.redhat.com> (raw)
In-Reply-To: <Pine.LNX.4.10.9910041308080.8295-100000@imperial.edgeglobal.com>
Hi,
On Mon, 4 Oct 1999 13:27:43 -0400 (EDT), James Simmons
<jsimmons@edgeglobal.com> said:
> On Mon, 4 Oct 1999, Benjamin C.R. LaHaise wrote:
>> On Mon, 4 Oct 1999, James Simmons wrote:
>>
>> > And if the process holding the locks dies then no other process can access
>> > this resource. Also if the program forgets to release the lock you end up
>> > with other process never being able to access this piece of hardware.
>>
>> Eh? That's simply not true -- it's easy enough to handle via a couple of
>> different means: in the release fop or munmap which both get called on
>> termination of a task.
> Which means only one application can ever have access to the MMIO. If
> another process wanted it then this application would have to tell the
> other appilcation hey I want it so unmap. Then the application demanding
> it would then have to mmap it.
Look, we've already been over this --- if you have multiple accessors,
you have all the locking problems we talked about before. The kernel
doesn't do anything automatically for you. Any locking you want to do
can be done in the driver.
The problem is, what locking do you want to do? We've talked about this
--- the fact is, if the hardware sucks badly enough that multiple
accessors can crash the bus but you need multiple accessors to access
certain functionality, then what do you want to do about it? Sorry, you
can't just shrug this off as an O/S implementation problem --- the
hardware in this case doesn't give the software any clean way out. The
*only* solutions are either slow in the general case, enforcing access
control via expensive VM operations; or they are best-effort, relying on
cooperative locking but allowing good performance.
>> or if you're really paranoid, you can save the pid in an owner field
>> in the lock and periodically check that the process is still there.
> How would you use this method?
Look at http://www.precisioninsight.com/dr/locking.html for a
description of the cooperative lightweight locking used in the DRI in
2.3 kernels to solve this problem. Basically you have a shared memory
segment which processes can mmap allowing them to determine if they
still hold the lock via a simple locked memory operation, and a kernel
syscall which lets processes which don't have the lock arbitrate for
access.
--Stephen
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://humbolt.geo.uu.nl/Linux-MM/
next prev parent reply other threads:[~1999-10-04 19:19 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-10-04 14:38 James Simmons
1999-10-04 15:31 ` Stephen C. Tweedie
1999-10-04 15:52 ` James Simmons
1999-10-04 16:02 ` Benjamin C.R. LaHaise
1999-10-04 17:27 ` James Simmons
1999-10-04 17:56 ` Benjamin C.R. LaHaise
1999-10-04 18:26 ` James Simmons
1999-10-04 19:19 ` Stephen C. Tweedie [this message]
1999-10-06 20:15 ` James Simmons
1999-10-11 17:09 ` Stephen C. Tweedie
1999-10-11 17:26 ` Jeff Garzik
1999-10-11 23:14 ` James Simmons
1999-10-11 17:57 ` James Simmons
1999-10-04 16:11 ` Stephen C. Tweedie
1999-10-04 18:29 ` James Simmons
1999-10-04 19:35 ` Stephen C. Tweedie
1999-10-07 19:40 ` James Simmons
1999-10-10 11:24 ` Rik Faith
1999-10-10 14:03 ` Eric W. Biederman
1999-10-10 18:46 ` Rik Faith
1999-10-11 0:21 ` James Simmons
1999-10-11 10:59 ` Rik Faith
1999-10-11 3:38 ` Eric W. Biederman
1999-10-10 14:21 ` James Simmons
1999-10-11 17:22 ` Stephen C. Tweedie
1999-10-04 16:58 ` Marcus Sundberg
1999-10-04 18:27 ` James Simmons
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=14328.64984.364562.947945@dukat.scot.redhat.com \
--to=sct@redhat.com \
--cc=blah@kvack.org \
--cc=jsimmons@edgeglobal.com \
--cc=linux-mm@kvack.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox