xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: George Dunlap <george.dunlap@citrix.com>
To: Julien Grall <julien.grall@arm.com>,
	Jan Beulich <JBeulich@suse.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Tim Deegan <tim@xen.org>, Wei Liu <wei.liu2@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [PATCH 03/14] xen/x86: Make mfn_to_gfn typesafe
Date: Tue, 28 May 2019 18:29:22 +0100	[thread overview]
Message-ID: <c168a492-8762-5604-0f80-83be4740089e@citrix.com> (raw)
In-Reply-To: <423c2750-ca33-501f-cdc2-988bb58038b6@arm.com>

On 5/20/19 4:13 PM, Julien Grall wrote:
> Hi,
> 
> On 10/05/2019 14:25, Julien Grall wrote:
>>
>>
>> On 10/05/2019 14:24, Jan Beulich wrote:
>>>>>> On 10.05.19 at 15:02, <julien.grall@arm.com> wrote:
>>>
>>>>
>>>> On 10/05/2019 12:35, Jan Beulich wrote:
>>>>>>>> On 07.05.19 at 17:14, <julien.grall@arm.com> wrote:
>>>>>> --- a/xen/arch/x86/mm/shadow/common.c
>>>>>> +++ b/xen/arch/x86/mm/shadow/common.c
>>>>>> @@ -474,7 +474,8 @@ static inline void trace_resync(int event,
>>>>>> mfn_t gmfn)
>>>>>>        if ( tb_init_done )
>>>>>>        {
>>>>>>            /* Convert gmfn to gfn */
>>>>>> -        unsigned long gfn = mfn_to_gfn(current->domain, gmfn);
>>>>>> +        unsigned long gfn = gfn_x(mfn_to_gfn(current->domain,
>>>>>> gmfn));
>>>>>> +
>>>>>>            __trace_var(event, 0/*!tsc*/, sizeof(gfn), &gfn);
>>>>>>        }
>>>>>
>>>>> Can't you use gfn_t here, and hence avoid the gfn_x()? Same again
>>>>> further
>>>>> down.
>>>> Because __trace_var will export the value to the guest. I wasn't sure
>>>> whether we
>>>> can safely consider that gfn_t is exactly the same as unsigned long in
>>>> debug-build.
>>>
>>> Hmm, well - see the definition of gfn_t. George, what do you think?
>>
>> I know what's the current definition. My point is we never made that
>> assumption before. In all honesty, sure assumption would definitely
>> help in a few places, but I think we ought to safeguard with
>> BUILD_BUG(...).
> 
> George, do you have any opinions?

Sorry, not sure how I missed this question earlier.

The __trace_var() call here is designed to be generic: whatever type or
size gfn is, it will copy the whole thing.  Tracing is explicitly not
meant to be a stable interface -- the toolstack needs to track the
hypervisor in terms of what it's going to kick out.

So, having gfn be a gfn_t in this case should be fine; in fact it should
be _better_ than unsigned long, since if gfn_t ever does change size,
the trace record will change size appropriately.  If that happens,
xenalyze will need to be modified to understand how to deal with the new
size, but that's expected.

All that to say: it looks like Jan's suggestion of having gfn_t here
would be better.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

WARNING: multiple messages have this Message-ID (diff)
From: George Dunlap <george.dunlap@citrix.com>
To: Julien Grall <julien.grall@arm.com>,
	Jan Beulich <JBeulich@suse.com>,
	George Dunlap <George.Dunlap@eu.citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	Tim Deegan <tim@xen.org>, Wei Liu <wei.liu2@citrix.com>,
	xen-devel <xen-devel@lists.xenproject.org>,
	Roger Pau Monne <roger.pau@citrix.com>
Subject: Re: [Xen-devel] [PATCH 03/14] xen/x86: Make mfn_to_gfn typesafe
Date: Tue, 28 May 2019 18:29:22 +0100	[thread overview]
Message-ID: <c168a492-8762-5604-0f80-83be4740089e@citrix.com> (raw)
Message-ID: <20190528172922.DtDVF02Up7GOddX4CfAM-7IRHDSXWArUl2wKYXyu_oM@z> (raw)
In-Reply-To: <423c2750-ca33-501f-cdc2-988bb58038b6@arm.com>

On 5/20/19 4:13 PM, Julien Grall wrote:
> Hi,
> 
> On 10/05/2019 14:25, Julien Grall wrote:
>>
>>
>> On 10/05/2019 14:24, Jan Beulich wrote:
>>>>>> On 10.05.19 at 15:02, <julien.grall@arm.com> wrote:
>>>
>>>>
>>>> On 10/05/2019 12:35, Jan Beulich wrote:
>>>>>>>> On 07.05.19 at 17:14, <julien.grall@arm.com> wrote:
>>>>>> --- a/xen/arch/x86/mm/shadow/common.c
>>>>>> +++ b/xen/arch/x86/mm/shadow/common.c
>>>>>> @@ -474,7 +474,8 @@ static inline void trace_resync(int event,
>>>>>> mfn_t gmfn)
>>>>>>        if ( tb_init_done )
>>>>>>        {
>>>>>>            /* Convert gmfn to gfn */
>>>>>> -        unsigned long gfn = mfn_to_gfn(current->domain, gmfn);
>>>>>> +        unsigned long gfn = gfn_x(mfn_to_gfn(current->domain,
>>>>>> gmfn));
>>>>>> +
>>>>>>            __trace_var(event, 0/*!tsc*/, sizeof(gfn), &gfn);
>>>>>>        }
>>>>>
>>>>> Can't you use gfn_t here, and hence avoid the gfn_x()? Same again
>>>>> further
>>>>> down.
>>>> Because __trace_var will export the value to the guest. I wasn't sure
>>>> whether we
>>>> can safely consider that gfn_t is exactly the same as unsigned long in
>>>> debug-build.
>>>
>>> Hmm, well - see the definition of gfn_t. George, what do you think?
>>
>> I know what's the current definition. My point is we never made that
>> assumption before. In all honesty, sure assumption would definitely
>> help in a few places, but I think we ought to safeguard with
>> BUILD_BUG(...).
> 
> George, do you have any opinions?

Sorry, not sure how I missed this question earlier.

The __trace_var() call here is designed to be generic: whatever type or
size gfn is, it will copy the whole thing.  Tracing is explicitly not
meant to be a stable interface -- the toolstack needs to track the
hypervisor in terms of what it's going to kick out.

So, having gfn be a gfn_t in this case should be fine; in fact it should
be _better_ than unsigned long, since if gfn_t ever does change size,
the trace record will change size appropriately.  If that happens,
xenalyze will need to be modified to understand how to deal with the new
size, but that's expected.

All that to say: it looks like Jan's suggestion of having gfn_t here
would be better.

 -George

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  parent reply	other threads:[~2019-05-28 17:29 UTC|newest]

Thread overview: 154+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-07 15:14 [PATCH 00/14] xen/arm: Properly disable M2P on Arm Julien Grall
2019-05-07 15:14 ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 01/14] xen/arm: Use mfn_to_pdx instead of pfn_to_pdx when possible Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-09 17:50   ` Stefano Stabellini
2019-05-09 17:50     ` [Xen-devel] " Stefano Stabellini
2019-05-07 15:14 ` [PATCH 02/14] xen/x86: Constify the parameter "d" in mfn_to_gfn Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 03/14] xen/x86: Make mfn_to_gfn typesafe Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-10 11:35   ` Jan Beulich
2019-05-10 11:35     ` [Xen-devel] " Jan Beulich
2019-05-10 13:02     ` Julien Grall
2019-05-10 13:02       ` [Xen-devel] " Julien Grall
2019-05-10 13:24       ` Jan Beulich
2019-05-10 13:24         ` [Xen-devel] " Jan Beulich
2019-05-10 13:25         ` Julien Grall
2019-05-10 13:25           ` [Xen-devel] " Julien Grall
2019-05-20 15:13           ` Julien Grall
2019-05-20 15:13             ` [Xen-devel] " Julien Grall
2019-05-28 17:29             ` George Dunlap [this message]
2019-05-28 17:29               ` George Dunlap
2019-05-29 11:39               ` Julien Grall
2019-05-29 11:39                 ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 04/14] xen/x86: Use mfn_to_gfn rather than mfn_to_gmfn Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-10 12:15   ` Jan Beulich
2019-05-10 12:15     ` [Xen-devel] " Jan Beulich
2019-05-10 13:07     ` Julien Grall
2019-05-10 13:07       ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 05/14] xen/grant-table: Make arch specific macros typesafe Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-09 17:54   ` Stefano Stabellini
2019-05-09 17:54     ` [Xen-devel] " Stefano Stabellini
2019-05-07 15:14 ` [PATCH 06/14] xen: Convert hotplug page function to use typesafe MFN Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-09 18:01   ` Stefano Stabellini
2019-05-09 18:01     ` [Xen-devel] " Stefano Stabellini
2019-05-09 18:10     ` Julien Grall
2019-05-09 18:10       ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 07/14] xen: Convert is_xen_fixed_mfn " Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-24 15:16   ` George Dunlap
2019-05-24 15:16     ` [Xen-devel] " George Dunlap
2019-05-07 15:14 ` [PATCH 08/14] xen: Convert is_xen_heap_mfn " Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-24 15:15   ` George Dunlap
2019-05-24 15:15     ` [Xen-devel] " George Dunlap
2019-05-07 15:14 ` [PATCH 09/14] xen: Introduce HAS_M2P config and use to protect mfn_to_gmfn call Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-09 18:06   ` Stefano Stabellini
2019-05-09 18:06     ` [Xen-devel] " Stefano Stabellini
2019-05-09 18:12     ` Julien Grall
2019-05-09 18:12       ` [Xen-devel] " Julien Grall
2019-05-09 18:16       ` Stefano Stabellini
2019-05-09 18:16         ` [Xen-devel] " Stefano Stabellini
2019-05-09 18:29         ` Julien Grall
2019-05-09 18:29           ` [Xen-devel] " Julien Grall
2019-05-09 19:49           ` Stefano Stabellini
2019-05-09 19:49             ` [Xen-devel] " Stefano Stabellini
2019-05-10 12:31   ` Jan Beulich
2019-05-10 12:31     ` [Xen-devel] " Jan Beulich
2019-05-10 13:22     ` Julien Grall
2019-05-10 13:22       ` [Xen-devel] " Julien Grall
2019-05-10 13:32       ` Jan Beulich
2019-05-10 13:32         ` [Xen-devel] " Jan Beulich
2019-05-10 13:41         ` Julien Grall
2019-05-10 13:41           ` [Xen-devel] " Julien Grall
2019-05-10 13:45           ` Jan Beulich
2019-05-10 13:45             ` [Xen-devel] " Jan Beulich
2019-05-10 14:04             ` Julien Grall
2019-05-10 14:04               ` [Xen-devel] " Julien Grall
2019-05-10 14:19               ` Jan Beulich
2019-05-10 14:19                 ` [Xen-devel] " Jan Beulich
2019-05-10 14:34                 ` Julien Grall
2019-05-10 14:34                   ` [Xen-devel] " Julien Grall
2019-05-22 16:03                   ` Julien Grall
2019-05-22 16:03                     ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 10/14] xen: Remove mfn_to_gmfn macro Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 11/14] xen/x86: mm: Re-implement set_gpfn_from_mfn() as a static inline function Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-10 12:43   ` Jan Beulich
2019-05-10 12:43     ` [Xen-devel] " Jan Beulich
2019-05-10 13:27     ` Julien Grall
2019-05-10 13:27       ` [Xen-devel] " Julien Grall
2019-05-10 13:35       ` Jan Beulich
2019-05-10 13:35         ` [Xen-devel] " Jan Beulich
2019-05-10 13:41         ` Julien Grall
2019-05-10 13:41           ` [Xen-devel] " Julien Grall
2019-05-10 13:48           ` Jan Beulich
2019-05-10 13:48             ` [Xen-devel] " Jan Beulich
2019-05-10 14:05             ` Julien Grall
2019-05-10 14:05               ` [Xen-devel] " Julien Grall
2019-05-10 14:21               ` Jan Beulich
2019-05-10 14:21                 ` [Xen-devel] " Jan Beulich
2019-05-10 14:48                 ` Julien Grall
2019-05-10 14:48                   ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 12/14] xen/x86: pv: Convert update_intpte() to use typesafe MFN Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-10 12:54   ` Jan Beulich
2019-05-10 12:54     ` [Xen-devel] " Jan Beulich
2019-05-10 13:28     ` Julien Grall
2019-05-10 13:28       ` [Xen-devel] " Julien Grall
2019-05-07 15:14 ` [PATCH 13/14] xen/mm: Convert {s, g}et_gpfn_from_mfn() " Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-07 20:27   ` Tamas K Lengyel
2019-05-07 20:27     ` [Xen-devel] " Tamas K Lengyel
2019-05-09 18:19   ` Stefano Stabellini
2019-05-09 18:19     ` [Xen-devel] " Stefano Stabellini
2019-05-10 13:21   ` Jan Beulich
2019-05-10 13:21     ` [Xen-devel] " Jan Beulich
2019-05-10 13:27     ` Andrew Cooper
2019-05-10 13:27       ` [Xen-devel] " Andrew Cooper
2019-05-10 13:34     ` Julien Grall
2019-05-10 13:34       ` [Xen-devel] " Julien Grall
2019-05-10 13:41       ` Jan Beulich
2019-05-10 13:41         ` [Xen-devel] " Jan Beulich
2019-05-10 13:46         ` Julien Grall
2019-05-10 13:46           ` [Xen-devel] " Julien Grall
2019-05-10 14:02           ` Jan Beulich
2019-05-10 14:02             ` [Xen-devel] " Jan Beulich
2019-05-10 14:05             ` Andrew Cooper
2019-05-10 14:05               ` [Xen-devel] " Andrew Cooper
2019-05-10 14:08               ` Julien Grall
2019-05-10 14:08                 ` [Xen-devel] " Julien Grall
2019-05-10 14:09                 ` Andrew Cooper
2019-05-10 14:09                   ` [Xen-devel] " Andrew Cooper
2019-05-10 14:14               ` Jan Beulich
2019-05-10 14:14                 ` [Xen-devel] " Jan Beulich
2019-05-10 14:27                 ` Andrew Cooper
2019-05-10 14:27                   ` [Xen-devel] " Andrew Cooper
2019-05-24 16:24     ` George Dunlap
2019-05-24 16:24       ` [Xen-devel] " George Dunlap
2019-05-29 16:27       ` Julien Grall
2019-05-29 16:27         ` [Xen-devel] " Julien Grall
2019-05-29 16:29         ` George Dunlap
2019-05-29 16:29           ` [Xen-devel] " George Dunlap
2019-05-24 16:35   ` George Dunlap
2019-05-24 16:35     ` [Xen-devel] " George Dunlap
2019-05-07 15:14 ` [PATCH 14/14] xen/mm: Provide dummy M2P-related helpers when !CONFIG_HAVE_M2P Julien Grall
2019-05-07 15:14   ` [Xen-devel] " Julien Grall
2019-05-09 18:20   ` Stefano Stabellini
2019-05-09 18:20     ` [Xen-devel] " Stefano Stabellini
2019-05-10 13:28   ` Jan Beulich
2019-05-10 13:28     ` [Xen-devel] " Jan Beulich
2019-05-10 13:29     ` Julien Grall
2019-05-10 13:29       ` [Xen-devel] " Julien Grall
2019-05-10 13:37       ` Jan Beulich
2019-05-10 13:37         ` [Xen-devel] " Jan Beulich
2019-05-10 13:38         ` Julien Grall
2019-05-10 13:38           ` [Xen-devel] " Julien Grall
2019-05-24 16:51   ` George Dunlap
2019-05-24 16:51     ` [Xen-devel] " George Dunlap

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=c168a492-8762-5604-0f80-83be4740089e@citrix.com \
    --to=george.dunlap@citrix.com \
    --cc=George.Dunlap@eu.citrix.com \
    --cc=JBeulich@suse.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=julien.grall@arm.com \
    --cc=roger.pau@citrix.com \
    --cc=tim@xen.org \
    --cc=wei.liu2@citrix.com \
    --cc=xen-devel@lists.xenproject.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).