All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manfred Spraul <manfred@colorfullife.com>
To: Jamie Lokier <lk@tantalophile.demon.co.uk>,
	Linus Torvalds <torvalds@transmeta.com>,
	linux-kernel@vger.kernel.org
Subject: Re: x86 ptep_get_and_clear question
Date: Fri, 16 Feb 2001 17:23:40 +0100	[thread overview]
Message-ID: <3A8D540C.92C66398@colorfullife.com> (raw)
In-Reply-To: <3A8C499A.E0370F63@colorfullife.com> <Pine.LNX.4.10.10102151702320.12656-100000@penguin.transmeta.com> <20010216151839.A3989@pcep-jamie.cern.ch> <3A8D4045.F8F27782@colorfullife.com> <20010216162741.A4284@pcep-jamie.cern.ch> <3A8D4D43.CF589FA0@colorfullife.com> <20010216170029.A4450@pcep-jamie.cern.ch>

Jamie Lokier wrote:
> 
> And how does that lose a dirty bit?
> 
> For the other processor to not write a dirty bit, it must have a dirty
                            ^^^^^^^^^^^
> TLB entry already which, along with the locked cycle in
> ptep_get_and_clear, means that `entry' will have _PAGE_DIRTY set.  The
> dirty bit is not lost.
> 
The other cpu writes the dirty bit - we just overwrite it ;-)
After the ptep_get_and_clear(), before the set_pte().

The current assumption about the page dirty logic is:
A cpu that has a writable, non-dirty pte cached in its tlb it may
unconditionally set the dirty bit - without honoring present or write
protected bits.

--> set_pte() can either loose a dirty bit or a 'pte_none() entry' could
suddenly become a swap entry unless it's guaranteed that no cpus has a
cached valid tlb entry.

Linus, does the proposed pte gather code handle the second part?
pte_none() suddenly becomes 0x0040.

Back to the current mprotect.c code:

pte is writable, not-dirty.

cpu1:
has a writable, non-dirty pte in it's tlb.
		cpu 2: in mprotect.c
	        entry = ptep_get_and_clear(pte);
		* pte now clear.
		* entry contains the pte value without
		  the dirty bit
cpu decodes a write instruction, and dirties the pte.
lock; orl DIRTY_BIT, *pte
	        set_pte(pte, pte_modify(entry, newprot));
		* pte overwritten with entry.

--> dirty bit lost.

--
	Manfred

  reply	other threads:[~2001-02-16 16:23 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-15  1:50 x86 ptep_get_and_clear question Kanoj Sarcar
2001-02-15  2:13 ` Ben LaHaise
2001-02-15  2:37   ` Kanoj Sarcar
2001-02-15 10:55   ` Jamie Lokier
2001-02-15 16:06     ` Ben LaHaise
2001-02-15 16:35       ` Jamie Lokier
2001-02-15 17:23         ` Kanoj Sarcar
2001-02-15 17:27           ` Ben LaHaise
2001-02-15 17:38             ` Kanoj Sarcar
2001-02-15 17:46               ` Ben LaHaise
2001-02-15 17:47           ` Jamie Lokier
2001-02-15 17:47             ` Jamie Lokier
2001-02-15 18:05             ` Kanoj Sarcar
2001-02-15 18:05               ` Kanoj Sarcar
2001-02-15 18:23             ` Kanoj Sarcar
2001-02-15 18:23               ` Kanoj Sarcar
2001-02-15 18:42               ` Jamie Lokier
2001-02-15 18:42                 ` Jamie Lokier
2001-02-15 18:57                 ` Kanoj Sarcar
2001-02-15 18:57                   ` Kanoj Sarcar
2001-02-15 19:06                   ` Ben LaHaise
2001-02-15 19:06                     ` Ben LaHaise
2001-02-15 19:19                     ` Kanoj Sarcar
2001-02-15 19:19                       ` Kanoj Sarcar
2001-02-15 20:16                       ` Linus Torvalds
2001-02-15 18:51               ` Manfred Spraul
2001-02-15 18:51                 ` Manfred Spraul
2001-02-15 19:05                 ` Kanoj Sarcar
2001-02-15 19:05                   ` Kanoj Sarcar
2001-02-15 19:19                   ` Jamie Lokier
2001-02-15 19:19                     ` Jamie Lokier
2001-02-15 20:31                     ` Linus Torvalds
2001-02-15 21:26                       ` Manfred Spraul
2001-02-15 21:29                         ` Manfred Spraul
2001-02-16  1:21                         ` Linus Torvalds
2001-02-16 14:18                           ` Jamie Lokier
2001-02-16 14:59                             ` Manfred Spraul
2001-02-16 15:27                               ` Jamie Lokier
2001-02-16 15:54                                 ` Manfred Spraul
2001-02-16 16:00                                   ` Jamie Lokier
2001-02-16 16:23                                     ` Manfred Spraul [this message]
2001-02-16 16:43                                       ` Jamie Lokier
2001-02-16 17:12                                         ` Manfred Spraul
2001-02-16 17:20                                           ` Jamie Lokier
2001-02-16 17:36                                             ` Linus Torvalds
2001-02-16 18:49                                               ` Manfred Spraul
2001-02-16 19:00                                                 ` Linus Torvalds
2001-02-16 19:02                                                 ` Ben LaHaise
2001-02-16 19:32                                                   ` Linus Torvalds
2001-02-16 19:42                                                     ` Ben LaHaise
2001-02-16 17:37                                           ` Jamie Lokier
2001-02-16 18:04                                             ` Manfred Spraul
2001-02-16 18:09                                               ` Jamie Lokier
2001-02-16 18:36                                             ` Hugh Dickins
2001-02-16 17:29                                         ` Ben LaHaise
2001-02-16 17:38                                           ` Linus Torvalds
2001-02-16 17:44                                             ` Ben LaHaise
2001-02-16 17:59                               ` Linus Torvalds
2001-02-15 23:57                       ` Jamie Lokier
2001-02-16  0:55                         ` Linus Torvalds
2001-02-15 19:07                 ` Jamie Lokier
2001-02-15 19:07                   ` Jamie Lokier

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=3A8D540C.92C66398@colorfullife.com \
    --to=manfred@colorfullife.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lk@tantalophile.demon.co.uk \
    --cc=torvalds@transmeta.com \
    /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.