All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: Tamas K Lengyel <tamas.lengyel@zentific.com>
Cc: Ian Campbell <ian.campbell@citrix.com>, Tim Deegan <tim@xen.org>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	Andres Lagar-Cavilla <andres@lagarcavilla.org>,
	Jan Beulich <jbeulich@suse.com>,
	Daniel De Graaf <dgdegra@tycho.nsa.gov>,
	Tamas K Lengyel <tklengyel@sec.in.tum.de>
Subject: Re: [PATCH v5 09/17] xen/arm: p2m type definitions and changes
Date: Fri, 12 Sep 2014 12:41:00 -0700	[thread overview]
Message-ID: <54134C4C.10806@linaro.org> (raw)
In-Reply-To: <CAErYnsgbPGxRU2h21yRggKctMUpHEOK2DaNQDChso17S1vV+nw@mail.gmail.com>

Hello Tamas,

On 12/09/14 01:31, Tamas K Lengyel wrote:
>
>
> On Thu, Sep 11, 2014 at 10:49 PM, Julien Grall <julien.grall@linaro.org
> <mailto:julien.grall@linaro.org>> wrote:
>
>     Hi Tamas,
>
>     On 10/09/14 06:28, Tamas K Lengyel wrote:
>       >   static lpae_t mfn_to_p2m_entry(unsigned long mfn, unsigned int
>     mattr,
>
>         -                               p2m_type_t t)
>         +                               p2m_type_t t, p2m_access_t a)
>            {
>                paddr_t pa = ((paddr_t) mfn) << PAGE_SHIFT;
>                /* sh, xn and write bit will be defined in the following
>         switches
>         @@ -347,7 +350,7 @@ static int p2m_create_table(struct domain
>         *d, lpae_t *entry,
>                     for ( i=0 ; i < LPAE_ENTRIES; i++ )
>                     {
>                         pte = mfn_to_p2m_entry(base_pfn +
>         (i<<(level_shift-LPAE_SHIFT)),
>         -                                    MATTR_MEM, t);
>         +                                    MATTR_MEM, t,
>         p2m->default_access);
>
>
>     I though I've talked about it in an earlier version. I don't think
>     we should use the default_access to the P2M table.
>
>     Let assume a user decides to set default to another access type than
>     p2m_access_rwx, Xen will receive the same trap forever for the
>     domain because the access is not store in the radix tree (see your
>     patch #12). Therefore the guest will try to access back to the
>     guest, but the page attribute has not changed.
>
>     Also, you can't associate a PFN to this page because the table is
>     internal to Xen.
>
>     IHMO, I would use p2m_access_rwx for the table L1 and L2 tables. For
>     L3, you will have to set the permission in the radix tree.
>
>
> I'm not sure I follow exactly what you are saying. Setting
> default_access only effects pages created after the fact and I see that
> if a large page is created this still causes a problem.. Is that what
> you mean? A better solution would be to only allow creating 4k pages if
> default_access != rwx IMHO and then store the setting in the radix tree
> automatically.

That what I was trying to say.

You can do it easily in the function is_mapping_aligned.

But for the intermediate page table (see the mfn_to_p2m_entry(...,..., 
p2m_invalid), you should not use default_access but directly access_rwx.


>
> I was also contemplating if it would make sense if a setting was not
> found in the radix tree, to check the violation against the
> default_access.

The violation of the page may be different than the default access. I 
think it could be a mess for the guest. The radix tree should containe 
very pte where the access != rwx.


> That way we would not have to store those entries in the
> radix tree that are the same as the default_access (and rwx of course
> would not go in the radix tree either). Might cut down the size of the tree.

The default_access may change after the insertion of the PTE. How will 
you handle this case? IHMO, I don't think there is simple solution.

Regards,

-- 
Julien Grall

  reply	other threads:[~2014-09-12 19:41 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-10 13:28 [PATCH v5 00/17] Mem_event and mem_access for ARM Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 01/17] xen: Relocate mem_access and mem_event into common Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 02/17] xen: Relocate p2m_mem_access_resume to mem_access common Tamas K Lengyel
2014-09-11 20:16   ` Julien Grall
2014-09-12  8:56     ` Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 03/17] xen: Relocate struct npfec definition into common Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 04/17] xen: Relocate mem_event_op domctl and access_op memop " Tamas K Lengyel
2014-09-10 13:44   ` Jan Beulich
2014-09-10 13:28 ` [PATCH v5 05/17] xen/mem_event: Clean out superfluous white-spaces Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 06/17] xen/mem_event: Relax error condition on debug builds Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 07/17] xen/mem_event: Abstract architecture specific sanity checks Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 08/17] xen/mem_access: Abstract architecture specific sanity check Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 09/17] xen/arm: p2m type definitions and changes Tamas K Lengyel
2014-09-11 20:25   ` Julien Grall
2014-09-12  8:15     ` Tamas K Lengyel
2014-09-12 19:23       ` Julien Grall
2014-09-12 20:25         ` Tamas K Lengyel
2014-09-11 20:49   ` Julien Grall
2014-09-12  8:31     ` Tamas K Lengyel
2014-09-12 19:41       ` Julien Grall [this message]
2014-09-12 20:20         ` Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 10/17] xen/arm: Add set access required domctl Tamas K Lengyel
2014-09-11 20:26   ` Julien Grall
2014-09-10 13:28 ` [PATCH v5 11/17] xen/arm: Implement domain_get_maximum_gpfn Tamas K Lengyel
2014-09-11 20:28   ` Julien Grall
2014-09-12  8:58     ` Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 12/17] xen/arm: Data abort exception (R/W) mem_events Tamas K Lengyel
2014-09-11 21:19   ` Julien Grall
2014-09-12  8:46     ` Tamas K Lengyel
2014-09-12 20:35       ` Julien Grall
2014-09-12 20:48         ` Tamas K Lengyel
2014-09-12 21:04           ` Julien Grall
2014-09-10 13:28 ` [PATCH v5 13/17] xen/arm: Instruction prefetch abort (X) mem_event handling Tamas K Lengyel
2014-09-11 21:23   ` Julien Grall
2014-09-12  8:34     ` Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 14/17] xen/arm: Enable the compilation of mem_access and mem_event on ARM Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 15/17] xen: Extend getdomaininfo to return the domain's max_gpfn Tamas K Lengyel
2014-09-10 13:48   ` Jan Beulich
2014-09-10 13:55     ` Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 16/17] tools/libxc: Allocate magic page for mem access on ARM Tamas K Lengyel
2014-09-10 13:28 ` [PATCH v5 17/17] tools/tests: Enable xen-access " Tamas K Lengyel
2014-09-11 21:29   ` Julien Grall
2014-09-12  8:50     ` Tamas K Lengyel
2014-09-12  9:01     ` Tamas K Lengyel
2014-09-10 13:51 ` [PATCH v5 00/17] Mem_event and mem_access for ARM Jan Beulich
2014-09-10 14:01   ` Tamas K Lengyel
2014-09-15 22:26     ` Ian Campbell
2014-09-16  8:00       ` Jan Beulich

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=54134C4C.10806@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=andres@lagarcavilla.org \
    --cc=dgdegra@tycho.nsa.gov \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=jbeulich@suse.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=tamas.lengyel@zentific.com \
    --cc=tim@xen.org \
    --cc=tklengyel@sec.in.tum.de \
    --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 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.