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
next prev parent 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: linkBe 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.