virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
From: Zachary Amsden <zach@vmware.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Chris Wright <chrisw@sous-sol.org>,
	Virtualization Mailing List <virtualization@lists.osdl.org>
Subject: Re: how set_pte_at()'s vaddr and ptep args relate
Date: Tue, 07 Nov 2006 14:19:30 -0800	[thread overview]
Message-ID: <45510672.4000301@vmware.com> (raw)
In-Reply-To: <4550E512.1020706@goop.org>

Jeremy Fitzhardinge wrote:
> Hi Zach,
>
> I'm wondering what the interface requirements of set_pte_at()'s "addr" 
> and "ptep" args are.  I presume that in general the ptep points to the 
> pte entry which corresponds to the vaddr, but is this necessarily the 
> case?

Yes, it must pass a pointer to the PTE in ptep.  The "addr" field must 
match the linear address of the mapping changed by the pte - the address 
you would invlpg if required.

> For example, it is valid to pass a non-highmem page kmap_atomic(), 
> which will simply return a direct pointer to the page.
>
> kunmap_atomic() takes this address, as well as the kmap slot index, 
> and ends up calling:
>
>    set_pte_at(&init_mm, lowmem_vaddr, kmap_ptep, 0);
>
> ie, the vaddr and the ptep bear no relationship to each other.  Is 
> this a bug in kunmap_atomic (it shouldn't try to clear the pte for 
> lowmem addresses), or should set_pte_at's implementation be able to 
> cope with this.

Ok, that is really strange, but it seems harmless.

>
> Certainly at the moment, having mismatched ptep and vaddr makes the 
> interface useless for Xen, since it will use one or the other 
> depending on whether we modifying the current pagetable or not, and it 
> assume they correspond to the same thing.
>
> For now I've changed kunmap_atomic() to only clear the kmap pte for 
> mapped high page addresses, but I'm wondering what other places might 
> use set_pte_at in this way.

None that I'm aware of.  The interface here is supposed to be passing 
the "addr" field as the linear address whose mapping in the current 
address space is changing, and the "ptep" field as a pointer to the PTE.

> Also, it would be useful for Xen to have a set_pte_at_sync, which also 
> does a TLB flush if necessary, since we can do that in a single 
> operation.

We could either add new operators or use a flags field which passes a 
"defer this update and piggyback on the next TLB flush" hint - which is 
how the Xen VMI interface worked.

In any case, the address field and hints / operators here are supposed 
to be liberal enough to accommodate using LA hints to update currently 
mapped PTEs and piggyback the flush, and if they are not, it is a bug or 
an oversight.

I haven't really dealt with the HIGHMEM_PTE case thoroughly yet - do we 
want to bother with that?

Zach

  reply	other threads:[~2006-11-07 22:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-07 19:57 how set_pte_at()'s vaddr and ptep args relate Jeremy Fitzhardinge
2006-11-07 22:19 ` Zachary Amsden [this message]
2006-11-07 22:38   ` Jeremy Fitzhardinge
2006-11-07 23:33     ` Zachary Amsden
2006-11-07 23:42       ` Jeremy Fitzhardinge
2006-11-07 23:59         ` Zachary Amsden
2006-11-08  0:15           ` Jeremy Fitzhardinge
2006-11-08  0:19             ` Zachary Amsden
2006-11-08  8:34             ` Keir Fraser
2006-11-08 19:59               ` Jeremy Fitzhardinge
2006-11-08 20:18                 ` Jeremy Fitzhardinge
2006-11-08 23:17                   ` Keir Fraser
2006-11-08 23:25                     ` Jeremy Fitzhardinge
2006-11-09  8:29                       ` Keir Fraser
2006-11-09  9:15                         ` Zachary Amsden

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=45510672.4000301@vmware.com \
    --to=zach@vmware.com \
    --cc=chrisw@sous-sol.org \
    --cc=jeremy@goop.org \
    --cc=virtualization@lists.osdl.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;
as well as URLs for NNTP newsgroup(s).