xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Tamas K Lengyel <tamas.lengyel@zentific.com>
To: Ian Campbell <ian.campbell@citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH for-4.5 v6 13/17] xen/arm: Data abort exception (R/W) mem_events.
Date: Tue, 16 Sep 2014 12:07:11 +0200	[thread overview]
Message-ID: <CAErYnsgs0TQ-GjQCA7z+=WUAE1-w2tkDE9CoO5OwrQCBnBbOOQ@mail.gmail.com> (raw)
In-Reply-To: <CAErYnshu0vJJMxWwu4eo2MZf=q_g2H123p6VUk_4a9f12vYLjg@mail.gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 3737 bytes --]

Dropped xen-devel by accident on my previous msg.

On Tue, Sep 16, 2014 at 12:53 AM, Ian Campbell <ian.campbell@citrix.com>
> wrote:
>
>> On Mon, 2014-09-15 at 16:02 +0200, Tamas K Lengyel wrote:
>> > This patch enables to store, set, check and deliver LPAE R/W mem_events.
>> > As the LPAE PTE's lack enough available software programmable bits,
>> > we store the permissions in a Radix tree, where the key is the pfn
>> > of a 4k page. Only settings other than p2m_access_rwx are saved
>> > in the Radix tree.
>>
>> It is here that it is absolutely essential to consider the overhead for
>> the non-xenaccess use case, and I think it should be written here in the
>> commit message.
>>
>> I'm worried because I'm not seeing the obvious "xenaccess is disabled,
>> skip all this stuff" path I was hoping for.
>>
>> I think the overhead of p2m modifications and on fault needs separate
>> consideration.
>>
>> For cases where xenaccess isn't enabled IMHO we need to be talking about
>> overhead in the ballpark of a pointer deref, compare, conditional jump.
>> Certainly not any kind of radix tree lookup etc.
>>
>
> In the trap handlers only permission faults are checked against the
> mem_access radix tree, so that already cuts down overhead to a conditional.
> In my experiments I haven't seen a single instance of a permission fault
> happening which I didn't cause myself. In p2m modifications as long as the
> default mem_access is rwx, the code path is the same as before for large
> pages. For 4k pages when adding them with rwx permission it does have an
> extra radix tree lookup to clean any potential setting in the radix tree
> for that page, but that is really just a safety check on my part and if
> overhead with it is a problem it can be removed. IMHO in the default case
> the radix tree is empty, so that lookup is essentially just another
> conditional.
>
> Do you see any other paths that are a cause for concern?
>
>
>>
>> > @@ -149,6 +152,74 @@ static lpae_t *p2m_map_first(struct p2m_domain
>> *p2m, paddr_t addr)
>> >      return __map_domain_page(page);
>> >  }
>> >
>> > +static void p2m_set_permission(lpae_t *e, p2m_type_t t, p2m_access_t a)
>> > +{
>>
>> It would have been good to refactor this, and probably p2m_shatter_page
>> in precursor patches to reduce the size of this aleady pretty big patch.
>>
>
> Ack, that would make sense.
>
>
>>
>> > @@ -1159,6 +1329,236 @@ err:
>> >      return page;
>> >  }
>> >
>> > +bool_t p2m_mem_access_check(paddr_t gpa, vaddr_t gla, const struct
>> npfec npfec)
>>
>> Can a bunch of this function not be common code? i.e. the inject an
>> event into a ring bits? Or even the automatic conversion of rx2rw etc.
>>
>
> I'll look into it, some bits might be.
>

While the code logic is in theory the same, unfortunately there are
significant differences between handling locks, which makes it not possible
to have this code in common. There are also some style differences, like
ARM doesn't have set_entry/get_entry pointers in the p2m_domain, as on ARM
we don't need to dynamically support different types for those functions
(no need to abstract them). The parts that could be in common are only a
couple lines here and there which don't really justify having them in
common as separate functions.


>
>
>>
>> > @@ -248,6 +249,23 @@ static inline bool_t
>> p2m_mem_event_sanity_check(struct domain *d)
>> >      return 1;
>> >  }
>> >
>> > +/* Send mem event based on the access (gla is -1ull if not available).
>> Boolean
>>
>> Is a "gla" a "guest linear address"? I don't think we use that term on
>> ARM.
>>
>
> Yea, that's copy-pasta and will clean it up.. on ARM we always have the
> faulting vaddr it seems to me anyway.
>
>
>>
>> Ian
>>
>
> Thanks,
> Tamas
>

[-- Attachment #1.2: Type: text/html, Size: 5506 bytes --]

[-- Attachment #2: Type: text/plain, Size: 126 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

  parent reply	other threads:[~2014-09-16 10:07 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-15 14:02 [PATCH for-4.5 v6 00/17] Mem_event and mem_access for ARM Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 01/17] xen: Relocate mem_access and mem_event into common Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 02/17] xen: Relocate p2m_mem_access_resume to mem_access common Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 03/17] xen: Relocate struct npfec definition into common Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 04/17] xen: Relocate mem_event_op domctl and access_op memop " Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 05/17] x86/p2m: Typo fix for spelling ambiguous Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 06/17] xen/mem_event: Clean out superfluous white-spaces Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 07/17] xen/mem_event: Relax error condition on debug builds Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 08/17] xen/mem_event: Abstract architecture specific sanity checks Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 09/17] xen/mem_access: Abstract architecture specific sanity check Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 10/17] xen/arm: p2m type definitions and changes Tamas K Lengyel
2014-09-15 22:35   ` Ian Campbell
2014-09-16  8:49     ` Tamas K Lengyel
2014-09-16 13:27       ` Ian Campbell
2014-09-16 20:38         ` Julien Grall
2014-09-16 21:52           ` Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 11/17] xen/arm: Add set access required domctl Tamas K Lengyel
2014-09-15 22:37   ` Ian Campbell
2014-09-16  8:37     ` Tamas K Lengyel
2014-09-15 22:38   ` Ian Campbell
2014-09-16  8:33     ` Tamas K Lengyel
2014-09-16 13:25       ` Ian Campbell
2014-09-15 14:02 ` [PATCH for-4.5 v6 12/17] xen/arm: Implement domain_get_maximum_gpfn Tamas K Lengyel
2014-09-15 22:39   ` Ian Campbell
2014-09-16  8:02     ` Tamas K Lengyel
2014-09-16 16:44       ` Ian Campbell
2014-09-16 17:09         ` Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 13/17] xen/arm: Data abort exception (R/W) mem_events Tamas K Lengyel
2014-09-15 22:53   ` Ian Campbell
     [not found]     ` <CAErYnshu0vJJMxWwu4eo2MZf=q_g2H123p6VUk_4a9f12vYLjg@mail.gmail.com>
2014-09-16 10:07       ` Tamas K Lengyel [this message]
2014-09-16 16:50         ` Ian Campbell
2014-09-16 17:08           ` Tamas K Lengyel
2014-09-18 18:54   ` Ian Campbell
2014-09-18 20:09     ` Tamas K Lengyel
2014-09-19  9:05       ` Tamas K Lengyel
2014-09-22  9:11         ` Ian Campbell
2014-09-22 17:18           ` Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 14/17] xen/arm: Instruction prefetch abort (X) mem_event handling Tamas K Lengyel
2014-09-18 18:59   ` Ian Campbell
2014-09-18 20:12     ` Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 15/17] xen/arm: Enable the compilation of mem_access and mem_event on ARM Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 16/17] tools/libxc: Allocate magic page for mem access " Tamas K Lengyel
2014-09-15 14:02 ` [PATCH for-4.5 v6 17/17] tools/tests: Enable xen-access " Tamas K Lengyel
2014-09-18 19:02   ` Ian Campbell
2014-09-22 18:48     ` Tamas K Lengyel
2014-09-23 12:18       ` Ian Campbell
2014-10-01 17:32         ` Aravindh Puthiyaparambil (aravindp)

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='CAErYnsgs0TQ-GjQCA7z+=WUAE1-w2tkDE9CoO5OwrQCBnBbOOQ@mail.gmail.com' \
    --to=tamas.lengyel@zentific.com \
    --cc=ian.campbell@citrix.com \
    --cc=xen-devel@lists.xen.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).