Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-06 Thread Julien Grall
Hi,


On 04/08/15 19:12, Julien Grall wrote:
 diff --git a/include/xen/page.h b/include/xen/page.h
 index c5ed20b..e7e1425 100644
 --- a/include/xen/page.h
 +++ b/include/xen/page.h
 @@ -3,9 +3,9 @@
  
  #include asm/xen/page.h
  
 -static inline unsigned long page_to_mfn(struct page *page)
 +static inline unsigned long page_to_gfn(struct page *page)
  {
 - return pfn_to_mfn(page_to_pfn(page));
 + return pfn_to_gfn(page_to_pfn(page));
  }

I've just noticed that there is a function gfn_to_page used for KVM.

Maybe I should rename page_to_gfn to xen_page_to_gfn to avoid confusion
with KVM one?

Regards,

-- 
Julien Grall
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-06 Thread Stefano Stabellini
On Thu, 6 Aug 2015, Julien Grall wrote:
 Hi,
 
 
 On 04/08/15 19:12, Julien Grall wrote:
  diff --git a/include/xen/page.h b/include/xen/page.h
  index c5ed20b..e7e1425 100644
  --- a/include/xen/page.h
  +++ b/include/xen/page.h
  @@ -3,9 +3,9 @@
   
   #include asm/xen/page.h
   
  -static inline unsigned long page_to_mfn(struct page *page)
  +static inline unsigned long page_to_gfn(struct page *page)
   {
  -   return pfn_to_mfn(page_to_pfn(page));
  +   return pfn_to_gfn(page_to_pfn(page));
   }
 
 I've just noticed that there is a function gfn_to_page used for KVM.
 
 Maybe I should rename page_to_gfn to xen_page_to_gfn to avoid confusion
 with KVM one?

Yeah, prepending xen would help to avoid namespace pollution.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-06 Thread Julien Grall
On 06/08/15 12:06, Stefano Stabellini wrote:
 On Thu, 6 Aug 2015, Julien Grall wrote:
 Hi,


 On 04/08/15 19:12, Julien Grall wrote:
 diff --git a/include/xen/page.h b/include/xen/page.h
 index c5ed20b..e7e1425 100644
 --- a/include/xen/page.h
 +++ b/include/xen/page.h
 @@ -3,9 +3,9 @@
  
  #include asm/xen/page.h
  
 -static inline unsigned long page_to_mfn(struct page *page)
 +static inline unsigned long page_to_gfn(struct page *page)
  {
 -   return pfn_to_mfn(page_to_pfn(page));
 +   return pfn_to_gfn(page_to_pfn(page));
  }

 I've just noticed that there is a function gfn_to_page used for KVM.

 Maybe I should rename page_to_gfn to xen_page_to_gfn to avoid confusion
 with KVM one?
 
 Yeah, prepending xen would help to avoid namespace pollution.

Will do. May I keep your Reviewed-by for this mechanical change?

Regards,

-- 
Julien Grall
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-06 Thread Stefano Stabellini
On Thu, 6 Aug 2015, Julien Grall wrote:
 On 06/08/15 12:06, Stefano Stabellini wrote:
  On Thu, 6 Aug 2015, Julien Grall wrote:
  Hi,
 
 
  On 04/08/15 19:12, Julien Grall wrote:
  diff --git a/include/xen/page.h b/include/xen/page.h
  index c5ed20b..e7e1425 100644
  --- a/include/xen/page.h
  +++ b/include/xen/page.h
  @@ -3,9 +3,9 @@
   
   #include asm/xen/page.h
   
  -static inline unsigned long page_to_mfn(struct page *page)
  +static inline unsigned long page_to_gfn(struct page *page)
   {
  - return pfn_to_mfn(page_to_pfn(page));
  + return pfn_to_gfn(page_to_pfn(page));
   }
 
  I've just noticed that there is a function gfn_to_page used for KVM.
 
  Maybe I should rename page_to_gfn to xen_page_to_gfn to avoid confusion
  with KVM one?
  
  Yeah, prepending xen would help to avoid namespace pollution.
 
 Will do. May I keep your Reviewed-by for this mechanical change?

Yes

--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Stefano Stabellini
On Tue, 4 Aug 2015, Boris Ostrovsky wrote:
 On 08/04/2015 02:12 PM, Julien Grall wrote:
  /*
 * We detect special mappings in one of two ways:
  @@ -217,9 +232,13 @@ static inline unsigned long bfn_to_local_pfn(unsigned
  long mfn)
  /* VIRT - MACHINE conversion */
#define virt_to_machine(v)(phys_to_machine(XPADDR(__pa(v
  -#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))
#define virt_to_mfn(v)(pfn_to_mfn(virt_to_pfn(v)))
#define mfn_to_virt(m)(__va(mfn_to_pfn(m)  PAGE_SHIFT))
  +#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))
 
 This looks like unnecessary change.
 
 
  diff --git a/drivers/video/fbdev/xen-fbfront.c
  b/drivers/video/fbdev/xen-fbfront.c
  index 09dc447..25e3cce 100644
  --- a/drivers/video/fbdev/xen-fbfront.c
  +++ b/drivers/video/fbdev/xen-fbfront.c
  @@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
  static unsigned long vmalloc_to_mfn(void *address)
{
  -   return pfn_to_mfn(vmalloc_to_pfn(address));
  +   return pfn_to_gfn(vmalloc_to_pfn(address));
}
 
 Are you sure? This will return vmalloc_to_pfn(address)).

I think that is OK: there is no behavioural change here.
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Stefano Stabellini
On Tue, 4 Aug 2015, Julien Grall wrote:
 Based on include/xen/mm.h [1], Linux is mistakenly using MFN when GFN
 is meant, I suspect this is because the first support for Xen was for
 PV. This resulted in some misimplementation of helpers on ARM and
 confused developers about the expected behavior.
 
 For instance, with pfn_to_mfn, we expect to get an MFN based on the name.
 Although, if we look at the implementation on x86, it's returning a GFN.
 
 For clarity and avoid new confusion, replace any reference to mfn with
 gfn in any helpers used by PV drivers. The x86 code will still keep some
 reference of pfn_to_mfn but exclusively for PV (a BUG_ON has been added
 to ensure this). No changes as been made in the hypercall field, even
 though they may be invalid, in order to keep the same as the defintion
 in xen repo.
 
 Take also the opportunity to simplify simple construction such
 as pfn_to_mfn(page_to_pfn(page)) into page_to_gfn. More complex clean up
 will come in follow-up patches.
 
 [1] 
 http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=e758ed14f390342513405dd766e874934573e6cb
 
 Signed-off-by: Julien Grall julien.gr...@citrix.com
 Cc: Stefano Stabellini stefano.stabell...@eu.citrix.com
 Cc: Russell King li...@arm.linux.org.uk
 Cc: Konrad Rzeszutek Wilk konrad.w...@oracle.com
 Cc: Boris Ostrovsky boris.ostrov...@oracle.com
 Cc: David Vrabel david.vra...@citrix.com
 Cc: Thomas Gleixner t...@linutronix.de
 Cc: Ingo Molnar mi...@redhat.com
 Cc: H. Peter Anvin h...@zytor.com
 Cc: x...@kernel.org
 Cc: Roger Pau Monné roger@citrix.com
 Cc: Dmitry Torokhov dmitry.torok...@gmail.com
 Cc: Ian Campbell ian.campb...@citrix.com
 Cc: Wei Liu wei.l...@citrix.com
 Cc: Juergen Gross jgr...@suse.com
 Cc: James E.J. Bottomley jbottom...@odin.com
 Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
 Cc: Jiri Slaby jsl...@suse.com
 Cc: Jean-Christophe Plagniol-Villard plagn...@jcrosoft.com
 Cc: Tomi Valkeinen tomi.valkei...@ti.com
 Cc: linux-in...@vger.kernel.org
 Cc: netdev@vger.kernel.org
 Cc: linux-s...@vger.kernel.org
 Cc: linuxppc-...@lists.ozlabs.org
 Cc: linux-fb...@vger.kernel.org
 Cc: linux-arm-ker...@lists.infradead.org

Aside from the x86 bits:

Reviewed-by: Stefano Stabellini stefano.stabell...@eu.citrix.com


 Note that I've re-introduced mfn_to_pfn  co only for x86 PV code.
 The helpers contain a BUG_ON to ensure that it's never called for
 auto-translated guests. I did as best as my can to determine whether
 mfn or gfn helpers should be used. Although, I haven't tried to boot
 it.
 
 It may be possible to do further cleanup in the mmu.c where I found
 some check to auto-translated. I'm not sure why given that the pvmmu
 callback are only used for non-auto translated guest.
 
 Finally, given those changes, I didn't retain the Reviewed-by/Acked-by.
 
 Changes in v2:
 - Give directly the URL to the commit rather than the commit ID
 - xenstored_local_init: keep the cast to void *
 - Typoes
 - Keep pfn_to_mfn for x86 and PV-only. The *mfn* helpers are
 used in arch/x86/xen for enlighten.c, mmu.c, p2m.c, setup.c,
 smp.c and mm.c
 ---
  arch/arm/include/asm/xen/page.h | 13 +++--
  arch/x86/include/asm/xen/page.h | 33 
 ++---
  arch/x86/xen/smp.c  |  2 +-
  drivers/block/xen-blkfront.c|  6 +++---
  drivers/input/misc/xen-kbdfront.c   |  4 ++--
  drivers/net/xen-netback/netback.c   |  4 ++--
  drivers/net/xen-netfront.c  |  8 
  drivers/scsi/xen-scsifront.c|  8 +++-
  drivers/tty/hvc/hvc_xen.c   |  5 +++--
  drivers/video/fbdev/xen-fbfront.c   |  4 ++--
  drivers/xen/balloon.c   |  2 +-
  drivers/xen/events/events_base.c|  2 +-
  drivers/xen/events/events_fifo.c|  4 ++--
  drivers/xen/gntalloc.c  |  3 ++-
  drivers/xen/manage.c|  2 +-
  drivers/xen/tmem.c  |  4 ++--
  drivers/xen/xenbus/xenbus_client.c  |  2 +-
  drivers/xen/xenbus/xenbus_dev_backend.c |  2 +-
  drivers/xen/xenbus/xenbus_probe.c   |  8 +++-
  include/xen/page.h  |  4 ++--
  20 files changed, 69 insertions(+), 51 deletions(-)
 
 diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
 index 087d86e..51e5bf1 100644
 --- a/arch/arm/include/asm/xen/page.h
 +++ b/arch/arm/include/asm/xen/page.h
 @@ -34,14 +34,15 @@ typedef struct xpaddr {
  unsigned long __pfn_to_mfn(unsigned long pfn);
  extern struct rb_root phys_to_mach;
  
 -static inline unsigned long pfn_to_mfn(unsigned long pfn)
 +/* Pseudo-physical - Guest conversion */
 +static inline unsigned long pfn_to_gfn(unsigned long pfn)
  {
   return pfn;
  }
  
 -static inline unsigned long mfn_to_pfn(unsigned long mfn)
 +static inline unsigned long gfn_to_pfn(unsigned long gfn)
  {
 - return mfn;
 + return gfn;

Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Julien Grall
Hi Boris,

On 05/08/15 00:16, Boris Ostrovsky wrote:
 On 08/04/2015 02:12 PM, Julien Grall wrote:
 /*
* We detect special mappings in one of two ways:
 @@ -217,9 +232,13 @@ static inline unsigned long
 bfn_to_local_pfn(unsigned long mfn)
 /* VIRT - MACHINE conversion */
   #define virt_to_machine(v)(phys_to_machine(XPADDR(__pa(v
 -#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))
   #define virt_to_mfn(v)(pfn_to_mfn(virt_to_pfn(v)))
   #define mfn_to_virt(m)(__va(mfn_to_pfn(m)  PAGE_SHIFT))
 +#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))
 
 This looks like unnecessary change.

Right, I made the mistake when I re-introduced virt_to_mfn in this
version. It was dropped in the previous one.

 diff --git a/drivers/video/fbdev/xen-fbfront.c
 b/drivers/video/fbdev/xen-fbfront.c
 index 09dc447..25e3cce 100644
 --- a/drivers/video/fbdev/xen-fbfront.c
 +++ b/drivers/video/fbdev/xen-fbfront.c
 @@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
 static unsigned long vmalloc_to_mfn(void *address)
   {
 -return pfn_to_mfn(vmalloc_to_pfn(address));
 +return pfn_to_gfn(vmalloc_to_pfn(address));
   }
 
 Are you sure? This will return vmalloc_to_pfn(address)).

I guess you mean vmalloc_to_mfn will return vmalloc_to_pfn?

If so, it will be only the case on auto-translated case (because pfn ==
gfn). In the case of PV, the mfn will be returned.

Although, this function is misnamed. It's fixed in a follow-up patch
(see #6) because it's required more renaming than this function. I
didn't want to add such changes within this patch.

Regards,

-- 
Julien Grall
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Boris Ostrovsky

On 08/05/2015 06:51 AM, Julien Grall wrote:



diff --git a/drivers/video/fbdev/xen-fbfront.c
b/drivers/video/fbdev/xen-fbfront.c
index 09dc447..25e3cce 100644
--- a/drivers/video/fbdev/xen-fbfront.c
+++ b/drivers/video/fbdev/xen-fbfront.c
@@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
 static unsigned long vmalloc_to_mfn(void *address)
   {
-return pfn_to_mfn(vmalloc_to_pfn(address));
+return pfn_to_gfn(vmalloc_to_pfn(address));
   }

Are you sure? This will return vmalloc_to_pfn(address)).

I guess you mean vmalloc_to_mfn will return vmalloc_to_pfn?

If so, it will be only the case on auto-translated case (because pfn ==
gfn). In the case of PV, the mfn will be returned.


How will mfn be returned on PV when pfn_to_gfn() is an identity function?

static inline unsigned long pfn_to_gfn(unsigned long pfn)
 {
 return pfn;
 }


-boris



Although, this function is misnamed. It's fixed in a follow-up patch
(see #6) because it's required more renaming than this function. I
didn't want to add such changes within this patch.

Regards,



--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Julien Grall
On 05/08/15 13:19, Boris Ostrovsky wrote:
 On 08/05/2015 06:51 AM, Julien Grall wrote:

 diff --git a/drivers/video/fbdev/xen-fbfront.c
 b/drivers/video/fbdev/xen-fbfront.c
 index 09dc447..25e3cce 100644
 --- a/drivers/video/fbdev/xen-fbfront.c
 +++ b/drivers/video/fbdev/xen-fbfront.c
 @@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
  static unsigned long vmalloc_to_mfn(void *address)
{
 -return pfn_to_mfn(vmalloc_to_pfn(address));
 +return pfn_to_gfn(vmalloc_to_pfn(address));
}
 Are you sure? This will return vmalloc_to_pfn(address)).
 I guess you mean vmalloc_to_mfn will return vmalloc_to_pfn?

 If so, it will be only the case on auto-translated case (because pfn ==
 gfn). In the case of PV, the mfn will be returned.
 
 How will mfn be returned on PV when pfn_to_gfn() is an identity function?
 
 static inline unsigned long pfn_to_gfn(unsigned long pfn)
  {
  return pfn;
  }

The identity function is only for ARM guest which are always
auto-translated (arch/arm/include/asm/xen/page.h).

The x86 version contains a check if the guest is auto-translated or not
(arch/x86/include/asm/xen/page.):

static inline unsigned long pfn_to_gfn(unsigned long pfn)
{
if (xen_feature(XENFEAT_auto_translated_physmap))
return pfn;
else
return pfn_to_mfn(pfn);
}

Regards,

-- 
Julien Grall
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Xen-devel] [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Boris Ostrovsky

On 08/05/2015 08:33 AM, Julien Grall wrote:

On 05/08/15 13:19, Boris Ostrovsky wrote:

On 08/05/2015 06:51 AM, Julien Grall wrote:

diff --git a/drivers/video/fbdev/xen-fbfront.c
b/drivers/video/fbdev/xen-fbfront.c
index 09dc447..25e3cce 100644
--- a/drivers/video/fbdev/xen-fbfront.c
+++ b/drivers/video/fbdev/xen-fbfront.c
@@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
  static unsigned long vmalloc_to_mfn(void *address)
{
-return pfn_to_mfn(vmalloc_to_pfn(address));
+return pfn_to_gfn(vmalloc_to_pfn(address));
}

Are you sure? This will return vmalloc_to_pfn(address)).

I guess you mean vmalloc_to_mfn will return vmalloc_to_pfn?

If so, it will be only the case on auto-translated case (because pfn ==
gfn). In the case of PV, the mfn will be returned.

How will mfn be returned on PV when pfn_to_gfn() is an identity function?

static inline unsigned long pfn_to_gfn(unsigned long pfn)
  {
  return pfn;
  }

The identity function is only for ARM guest which are always
auto-translated (arch/arm/include/asm/xen/page.h).

The x86 version contains a check if the guest is auto-translated or not
(arch/x86/include/asm/xen/page.):

static inline unsigned long pfn_to_gfn(unsigned long pfn)
{
 if (xen_feature(XENFEAT_auto_translated_physmap))
 return pfn;
 else
 return pfn_to_mfn(pfn);
}


Of course --- I was looking at the top of the patch and didn't realize 
it was ARM changes. Sorry for the noise.


-boris
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Dmitry Torokhov
On Wed, Aug 05, 2015 at 11:08:55AM +0100, Stefano Stabellini wrote:
 On Tue, 4 Aug 2015, Julien Grall wrote:
  Based on include/xen/mm.h [1], Linux is mistakenly using MFN when GFN
  is meant, I suspect this is because the first support for Xen was for
  PV. This resulted in some misimplementation of helpers on ARM and
  confused developers about the expected behavior.
  
  For instance, with pfn_to_mfn, we expect to get an MFN based on the name.
  Although, if we look at the implementation on x86, it's returning a GFN.
  
  For clarity and avoid new confusion, replace any reference to mfn with
  gfn in any helpers used by PV drivers. The x86 code will still keep some
  reference of pfn_to_mfn but exclusively for PV (a BUG_ON has been added
  to ensure this). No changes as been made in the hypercall field, even
  though they may be invalid, in order to keep the same as the defintion
  in xen repo.
  
  Take also the opportunity to simplify simple construction such
  as pfn_to_mfn(page_to_pfn(page)) into page_to_gfn. More complex clean up
  will come in follow-up patches.
  
  [1] 
  http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=e758ed14f390342513405dd766e874934573e6cb
  
  Signed-off-by: Julien Grall julien.gr...@citrix.com
  Cc: Stefano Stabellini stefano.stabell...@eu.citrix.com
  Cc: Russell King li...@arm.linux.org.uk
  Cc: Konrad Rzeszutek Wilk konrad.w...@oracle.com
  Cc: Boris Ostrovsky boris.ostrov...@oracle.com
  Cc: David Vrabel david.vra...@citrix.com
  Cc: Thomas Gleixner t...@linutronix.de
  Cc: Ingo Molnar mi...@redhat.com
  Cc: H. Peter Anvin h...@zytor.com
  Cc: x...@kernel.org
  Cc: Roger Pau Monné roger@citrix.com
  Cc: Dmitry Torokhov dmitry.torok...@gmail.com
  Cc: Ian Campbell ian.campb...@citrix.com
  Cc: Wei Liu wei.l...@citrix.com
  Cc: Juergen Gross jgr...@suse.com
  Cc: James E.J. Bottomley jbottom...@odin.com
  Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
  Cc: Jiri Slaby jsl...@suse.com
  Cc: Jean-Christophe Plagniol-Villard plagn...@jcrosoft.com
  Cc: Tomi Valkeinen tomi.valkei...@ti.com
  Cc: linux-in...@vger.kernel.org
  Cc: netdev@vger.kernel.org
  Cc: linux-s...@vger.kernel.org
  Cc: linuxppc-...@lists.ozlabs.org
  Cc: linux-fb...@vger.kernel.org
  Cc: linux-arm-ker...@lists.infradead.org
 
 Aside from the x86 bits:
 
 Reviewed-by: Stefano Stabellini stefano.stabell...@eu.citrix.com

Not really important, but just in case anyone waits for my ack on input
bits:

Acked-by: Dmitry Torokhov dmitry.torok...@gmail.com

Thanks.

-- 
Dmitry
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-05 Thread Wei Liu
On Tue, Aug 04, 2015 at 07:12:48PM +0100, Julien Grall wrote:
[...]
 diff --git a/drivers/net/xen-netback/netback.c 
 b/drivers/net/xen-netback/netback.c
 index 7d50711..3b7b7c3 100644
 --- a/drivers/net/xen-netback/netback.c
 +++ b/drivers/net/xen-netback/netback.c
 @@ -314,7 +314,7 @@ static void xenvif_gop_frag_copy(struct xenvif_queue 
 *queue, struct sk_buff *skb
   } else {
   copy_gop-source.domid = DOMID_SELF;
   copy_gop-source.u.gmfn =
 - virt_to_mfn(page_address(page));
 + virt_to_gfn(page_address(page));
   }
   copy_gop-source.offset = offset;
  
 @@ -1284,7 +1284,7 @@ static void xenvif_tx_build_gops(struct xenvif_queue 
 *queue,
   queue-tx_copy_ops[*copy_ops].source.offset = txreq.offset;
  
   queue-tx_copy_ops[*copy_ops].dest.u.gmfn =
 - virt_to_mfn(skb-data);
 + virt_to_gfn(skb-data);
   queue-tx_copy_ops[*copy_ops].dest.domid = DOMID_SELF;
   queue-tx_copy_ops[*copy_ops].dest.offset =
   offset_in_page(skb-data);

Acked-by: Wei Liu wei.l...@citrix.com
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-04 Thread Julien Grall
Based on include/xen/mm.h [1], Linux is mistakenly using MFN when GFN
is meant, I suspect this is because the first support for Xen was for
PV. This resulted in some misimplementation of helpers on ARM and
confused developers about the expected behavior.

For instance, with pfn_to_mfn, we expect to get an MFN based on the name.
Although, if we look at the implementation on x86, it's returning a GFN.

For clarity and avoid new confusion, replace any reference to mfn with
gfn in any helpers used by PV drivers. The x86 code will still keep some
reference of pfn_to_mfn but exclusively for PV (a BUG_ON has been added
to ensure this). No changes as been made in the hypercall field, even
though they may be invalid, in order to keep the same as the defintion
in xen repo.

Take also the opportunity to simplify simple construction such
as pfn_to_mfn(page_to_pfn(page)) into page_to_gfn. More complex clean up
will come in follow-up patches.

[1] 
http://xenbits.xen.org/gitweb/?p=xen.git;a=commitdiff;h=e758ed14f390342513405dd766e874934573e6cb

Signed-off-by: Julien Grall julien.gr...@citrix.com
Cc: Stefano Stabellini stefano.stabell...@eu.citrix.com
Cc: Russell King li...@arm.linux.org.uk
Cc: Konrad Rzeszutek Wilk konrad.w...@oracle.com
Cc: Boris Ostrovsky boris.ostrov...@oracle.com
Cc: David Vrabel david.vra...@citrix.com
Cc: Thomas Gleixner t...@linutronix.de
Cc: Ingo Molnar mi...@redhat.com
Cc: H. Peter Anvin h...@zytor.com
Cc: x...@kernel.org
Cc: Roger Pau Monné roger@citrix.com
Cc: Dmitry Torokhov dmitry.torok...@gmail.com
Cc: Ian Campbell ian.campb...@citrix.com
Cc: Wei Liu wei.l...@citrix.com
Cc: Juergen Gross jgr...@suse.com
Cc: James E.J. Bottomley jbottom...@odin.com
Cc: Greg Kroah-Hartman gre...@linuxfoundation.org
Cc: Jiri Slaby jsl...@suse.com
Cc: Jean-Christophe Plagniol-Villard plagn...@jcrosoft.com
Cc: Tomi Valkeinen tomi.valkei...@ti.com
Cc: linux-in...@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: linux-s...@vger.kernel.org
Cc: linuxppc-...@lists.ozlabs.org
Cc: linux-fb...@vger.kernel.org
Cc: linux-arm-ker...@lists.infradead.org

---
Note that I've re-introduced mfn_to_pfn  co only for x86 PV code.
The helpers contain a BUG_ON to ensure that it's never called for
auto-translated guests. I did as best as my can to determine whether
mfn or gfn helpers should be used. Although, I haven't tried to boot
it.

It may be possible to do further cleanup in the mmu.c where I found
some check to auto-translated. I'm not sure why given that the pvmmu
callback are only used for non-auto translated guest.

Finally, given those changes, I didn't retain the Reviewed-by/Acked-by.

Changes in v2:
- Give directly the URL to the commit rather than the commit ID
- xenstored_local_init: keep the cast to void *
- Typoes
- Keep pfn_to_mfn for x86 and PV-only. The *mfn* helpers are
used in arch/x86/xen for enlighten.c, mmu.c, p2m.c, setup.c,
smp.c and mm.c
---
 arch/arm/include/asm/xen/page.h | 13 +++--
 arch/x86/include/asm/xen/page.h | 33 ++---
 arch/x86/xen/smp.c  |  2 +-
 drivers/block/xen-blkfront.c|  6 +++---
 drivers/input/misc/xen-kbdfront.c   |  4 ++--
 drivers/net/xen-netback/netback.c   |  4 ++--
 drivers/net/xen-netfront.c  |  8 
 drivers/scsi/xen-scsifront.c|  8 +++-
 drivers/tty/hvc/hvc_xen.c   |  5 +++--
 drivers/video/fbdev/xen-fbfront.c   |  4 ++--
 drivers/xen/balloon.c   |  2 +-
 drivers/xen/events/events_base.c|  2 +-
 drivers/xen/events/events_fifo.c|  4 ++--
 drivers/xen/gntalloc.c  |  3 ++-
 drivers/xen/manage.c|  2 +-
 drivers/xen/tmem.c  |  4 ++--
 drivers/xen/xenbus/xenbus_client.c  |  2 +-
 drivers/xen/xenbus/xenbus_dev_backend.c |  2 +-
 drivers/xen/xenbus/xenbus_probe.c   |  8 +++-
 include/xen/page.h  |  4 ++--
 20 files changed, 69 insertions(+), 51 deletions(-)

diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h
index 087d86e..51e5bf1 100644
--- a/arch/arm/include/asm/xen/page.h
+++ b/arch/arm/include/asm/xen/page.h
@@ -34,14 +34,15 @@ typedef struct xpaddr {
 unsigned long __pfn_to_mfn(unsigned long pfn);
 extern struct rb_root phys_to_mach;
 
-static inline unsigned long pfn_to_mfn(unsigned long pfn)
+/* Pseudo-physical - Guest conversion */
+static inline unsigned long pfn_to_gfn(unsigned long pfn)
 {
return pfn;
 }
 
-static inline unsigned long mfn_to_pfn(unsigned long mfn)
+static inline unsigned long gfn_to_pfn(unsigned long gfn)
 {
-   return mfn;
+   return gfn;
 }
 
 /* Pseudo-physical - BUS conversion */
@@ -65,9 +66,9 @@ static inline unsigned long bfn_to_pfn(unsigned long bfn)
 
 #define bfn_to_local_pfn(bfn)  bfn_to_pfn(bfn)
 
-/* VIRT - MACHINE conversion */
-#define virt_to_mfn(v)  

Re: [PATCH v2 4/8] xen: Use the correctly the Xen memory terminologies

2015-08-04 Thread Boris Ostrovsky

On 08/04/2015 02:12 PM, Julien Grall wrote:
  
  /*

   * We detect special mappings in one of two ways:
@@ -217,9 +232,13 @@ static inline unsigned long bfn_to_local_pfn(unsigned long 
mfn)
  
  /* VIRT - MACHINE conversion */

  #define virt_to_machine(v)(phys_to_machine(XPADDR(__pa(v
-#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))
  #define virt_to_mfn(v)(pfn_to_mfn(virt_to_pfn(v)))
  #define mfn_to_virt(m)(__va(mfn_to_pfn(m)  PAGE_SHIFT))
+#define virt_to_pfn(v)  (PFN_DOWN(__pa(v)))


This looks like unnecessary change.



diff --git a/drivers/video/fbdev/xen-fbfront.c 
b/drivers/video/fbdev/xen-fbfront.c
index 09dc447..25e3cce 100644
--- a/drivers/video/fbdev/xen-fbfront.c
+++ b/drivers/video/fbdev/xen-fbfront.c
@@ -539,7 +539,7 @@ static int xenfb_remove(struct xenbus_device *dev)
  
  static unsigned long vmalloc_to_mfn(void *address)

  {
-   return pfn_to_mfn(vmalloc_to_pfn(address));
+   return pfn_to_gfn(vmalloc_to_pfn(address));
  }


Are you sure? This will return vmalloc_to_pfn(address)).


-boris
--
To unsubscribe from this list: send the line unsubscribe netdev in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html