All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH for-next 1/9] xen/arm: Use mfn_to_pdx instead of pfn_to_pdx when possible
Date: Mon, 15 Apr 2019 23:03:47 +0100	[thread overview]
Message-ID: <b92d3ffc-0dd9-ddfb-cee0-664f61ee2ff9@arm.com> (raw)
In-Reply-To: <alpine.DEB.2.10.1904151453080.29275@sstabellini-ThinkPad-X260>

Hi,

On 4/15/19 10:55 PM, Stefano Stabellini wrote:
> On Mon, 18 Feb 2019, Julien Grall wrote:
>> mfn_to_pdx adds more safety than pfn_to_pdx. Replace all but on place in
>> the Arm code to use the former.
> 
> This is good but maybe we can go even further.
> 
> You should also be able to replace one call site of pfn_to_pdx in
> mfn_valid and the one in maddr_to_virt. Something like this:
> 
> 
> diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
> index eafa26f..b3455ea 100644
> --- a/xen/include/asm-arm/mm.h
> +++ b/xen/include/asm-arm/mm.h
> @@ -209,7 +209,7 @@ static inline void __iomem *ioremap_wc(paddr_t start, size_t len)
>   /* XXX -- account for base */
>   #define mfn_valid(mfn)        ({                                              \
>       unsigned long __m_f_n = mfn_x(mfn);                                       \
> -    likely(pfn_to_pdx(__m_f_n) >= frametable_base_pdx && __mfn_valid(__m_f_n)); \
> +    likely(mfn_to_pdx(mfn) >= frametable_base_pdx && __mfn_valid(__m_f_n)); \

This is quite undesirable, you will end up to evaluate mfn twice here.

The other solution is to turn _m_f_n to an mfn_t but then it does make 
much difference as you would need to use a mfn_x(mfn) in the code.

>   })
>   
>   /* Convert between machine frame numbers and page-info structures. */
> @@ -253,7 +253,7 @@ static inline void *maddr_to_virt(paddr_t ma)
>   #else
>   static inline void *maddr_to_virt(paddr_t ma)
>   {
> -    ASSERT(pfn_to_pdx(ma >> PAGE_SHIFT) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
> +    ASSERT(mfn_to_pdx(maddr_to_mfn(ma)) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>       return (void *)(XENHEAP_VIRT_START -
>                       mfn_to_maddr(xenheap_mfn_start) +
>                       ((ma & ma_va_bottom_mask) |
> 

I fail to see what this chunk adds compare to the existing one...

>> @@ -253,7 +253,7 @@ static inline void *maddr_to_virt(paddr_t ma)
>>   #else
>>   static inline void *maddr_to_virt(paddr_t ma)
>>   {
>> -    ASSERT(pfn_to_pdx(ma >> PAGE_SHIFT) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>> +    ASSERT(mfn_to_pdx(maddr_to_mfn(ma)) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>>       return (void *)(XENHEAP_VIRT_START -
>>                       mfn_to_maddr(xenheap_mfn_start) +
>>                       ((ma & ma_va_bottom_mask) |
... here.

Cheers,

-- 
Julien Grall

_______________________________________________
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: Julien Grall <julien.grall@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [Xen-devel] [PATCH for-next 1/9] xen/arm: Use mfn_to_pdx instead of pfn_to_pdx when possible
Date: Mon, 15 Apr 2019 23:03:47 +0100	[thread overview]
Message-ID: <b92d3ffc-0dd9-ddfb-cee0-664f61ee2ff9@arm.com> (raw)
Message-ID: <20190415220347.LKqmPblugRE_Ch9Z8DmVYSCj0dn_fThz1SKzYctGoCo@z> (raw)
In-Reply-To: <alpine.DEB.2.10.1904151453080.29275@sstabellini-ThinkPad-X260>

Hi,

On 4/15/19 10:55 PM, Stefano Stabellini wrote:
> On Mon, 18 Feb 2019, Julien Grall wrote:
>> mfn_to_pdx adds more safety than pfn_to_pdx. Replace all but on place in
>> the Arm code to use the former.
> 
> This is good but maybe we can go even further.
> 
> You should also be able to replace one call site of pfn_to_pdx in
> mfn_valid and the one in maddr_to_virt. Something like this:
> 
> 
> diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h
> index eafa26f..b3455ea 100644
> --- a/xen/include/asm-arm/mm.h
> +++ b/xen/include/asm-arm/mm.h
> @@ -209,7 +209,7 @@ static inline void __iomem *ioremap_wc(paddr_t start, size_t len)
>   /* XXX -- account for base */
>   #define mfn_valid(mfn)        ({                                              \
>       unsigned long __m_f_n = mfn_x(mfn);                                       \
> -    likely(pfn_to_pdx(__m_f_n) >= frametable_base_pdx && __mfn_valid(__m_f_n)); \
> +    likely(mfn_to_pdx(mfn) >= frametable_base_pdx && __mfn_valid(__m_f_n)); \

This is quite undesirable, you will end up to evaluate mfn twice here.

The other solution is to turn _m_f_n to an mfn_t but then it does make 
much difference as you would need to use a mfn_x(mfn) in the code.

>   })
>   
>   /* Convert between machine frame numbers and page-info structures. */
> @@ -253,7 +253,7 @@ static inline void *maddr_to_virt(paddr_t ma)
>   #else
>   static inline void *maddr_to_virt(paddr_t ma)
>   {
> -    ASSERT(pfn_to_pdx(ma >> PAGE_SHIFT) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
> +    ASSERT(mfn_to_pdx(maddr_to_mfn(ma)) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>       return (void *)(XENHEAP_VIRT_START -
>                       mfn_to_maddr(xenheap_mfn_start) +
>                       ((ma & ma_va_bottom_mask) |
> 

I fail to see what this chunk adds compare to the existing one...

>> @@ -253,7 +253,7 @@ static inline void *maddr_to_virt(paddr_t ma)
>>   #else
>>   static inline void *maddr_to_virt(paddr_t ma)
>>   {
>> -    ASSERT(pfn_to_pdx(ma >> PAGE_SHIFT) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>> +    ASSERT(mfn_to_pdx(maddr_to_mfn(ma)) < (DIRECTMAP_SIZE >> PAGE_SHIFT));
>>       return (void *)(XENHEAP_VIRT_START -
>>                       mfn_to_maddr(xenheap_mfn_start) +
>>                       ((ma & ma_va_bottom_mask) |
... here.

Cheers,

-- 
Julien Grall

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

  reply	other threads:[~2019-04-15 22:03 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-18 11:35 [PATCH for-next 0/9] xen/arm: Properly disable M2P on Arm Julien Grall
2019-02-18 11:35 ` [PATCH for-next 1/9] xen/arm: Use mfn_to_pdx instead of pfn_to_pdx when possible Julien Grall
2019-04-15 21:55   ` Stefano Stabellini
2019-04-15 21:55     ` [Xen-devel] " Stefano Stabellini
2019-04-15 22:03     ` Julien Grall [this message]
2019-04-15 22:03       ` Julien Grall
2019-04-15 22:25       ` Stefano Stabellini
2019-04-15 22:25         ` [Xen-devel] " Stefano Stabellini
2019-04-15 22:42         ` Julien Grall
2019-04-15 22:42           ` [Xen-devel] " Julien Grall
2019-04-17 17:07           ` Julien Grall
2019-04-17 17:07             ` [Xen-devel] " Julien Grall
2019-04-25 11:20             ` Jan Beulich
2019-04-25 11:20               ` [Xen-devel] " Jan Beulich
2019-04-29 16:30               ` Julien Grall
2019-04-29 16:30                 ` [Xen-devel] " Julien Grall
2019-02-18 11:35 ` [PATCH for-next 2/9] xen/x86: Constify the parameter "d" in mfn_to_mfn Julien Grall
2019-03-13 14:40   ` Jan Beulich
2019-02-18 11:35 ` [PATCH for-next 3/9] xen/x86: Use mfn_to_gfn rather than mfn_to_gmfn Julien Grall
2019-03-13 14:45   ` Jan Beulich
2019-03-13 15:13     ` Julien Grall
2019-02-18 11:35 ` [PATCH for-next 4/9] xen/grant-table: Make arch specific macros typesafe Julien Grall
2019-03-13 14:51   ` Jan Beulich
2019-04-15 22:03   ` Stefano Stabellini
2019-04-15 22:03     ` [Xen-devel] " Stefano Stabellini
2019-04-15 22:07     ` Julien Grall
2019-04-15 22:07       ` [Xen-devel] " Julien Grall
2019-02-18 11:35 ` [PATCH for-next 5/9] xen: Convert hotplug page function to use typesafe MFN Julien Grall
2019-03-13 14:57   ` Jan Beulich
2019-03-13 16:26     ` Julien Grall
2019-02-18 11:35 ` [PATCH for-next 6/9] xen: Convert is_xen_fixed_mfn " Julien Grall
2019-03-13 14:58   ` Jan Beulich
2019-04-15 22:05   ` Stefano Stabellini
2019-04-15 22:05     ` [Xen-devel] " Stefano Stabellini
2019-02-18 11:35 ` [PATCH for-next 7/9] xen: Convert is_xen_heap_mfn " Julien Grall
2019-03-13 15:04   ` Jan Beulich
2019-03-13 17:24     ` Julien Grall
2019-03-14  7:52       ` Jan Beulich
2019-03-14 10:12         ` Julien Grall
2019-03-14 10:14           ` Andrew Cooper
2019-03-14 10:19             ` Julien Grall
2019-03-14 11:47             ` Jan Beulich
2019-03-14 12:18               ` Andrew Cooper
2019-04-15 22:08   ` Stefano Stabellini
2019-04-15 22:08     ` [Xen-devel] " Stefano Stabellini
2019-02-18 11:35 ` [PATCH for-next 8/9] xen: Introduce HAS_M2P config and use to protect mfn_to_gmfn call Julien Grall
2019-03-13 15:20   ` Jan Beulich
2019-03-13 17:30     ` Julien Grall
2019-03-14  7:55       ` Jan Beulich
2019-04-17 17:42         ` Julien Grall
2019-04-17 17:42           ` [Xen-devel] " Julien Grall
2019-04-18 11:46           ` Wei Liu
2019-04-18 11:46             ` [Xen-devel] " Wei Liu
2019-04-18 15:09             ` Julien Grall
2019-04-18 15:09               ` [Xen-devel] " Julien Grall
2019-04-24 15:28               ` Julien Grall
2019-04-24 15:28                 ` [Xen-devel] " Julien Grall
2019-04-25 10:03               ` Wei Liu
2019-04-25 10:03                 ` [Xen-devel] " Wei Liu
2019-04-15 22:17     ` Stefano Stabellini
2019-04-15 22:17       ` [Xen-devel] " Stefano Stabellini
2019-04-25 10:06       ` Jan Beulich
2019-04-25 10:06         ` [Xen-devel] " Jan Beulich
2019-02-18 11:36 ` [PATCH for-next 9/9] xen: Remove mfn_to_gmfn macro Julien Grall
2019-03-13 15:22   ` Jan Beulich
2019-03-13 15:24     ` Julien Grall
2019-03-13 15:40       ` Jan Beulich
2019-03-13 15:48         ` Julien Grall
2019-03-13 15:59           ` Jan Beulich
2019-03-13 17:34             ` Andrew Cooper
2019-03-13 17:42               ` Julien Grall
2019-03-13 18:41                 ` Andrew Cooper
2019-03-14  8:05                   ` Jan Beulich
2019-03-14  7:59               ` Jan Beulich
2019-05-07 14:35     ` Julien Grall
2019-05-07 14:35       ` [Xen-devel] " Julien Grall
2019-04-15 22:19   ` Stefano Stabellini
2019-04-15 22:19     ` [Xen-devel] " Stefano Stabellini

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=b92d3ffc-0dd9-ddfb-cee0-664f61ee2ff9@arm.com \
    --to=julien.grall@arm.com \
    --cc=sstabellini@kernel.org \
    --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 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.