Re: [PATCHv3] kvmppc: Implement H_LOGICAL_CI_{LOAD,STORE} in KVM

2015-03-17 Thread Alexander Graf


On 16.03.15 21:41, David Gibson wrote:
 On Thu, Feb 05, 2015 at 01:57:11AM +0100, Alexander Graf wrote:


 On 05.02.15 01:53, David Gibson wrote:
 On POWER, storage caching is usually configured via the MMU - attributes
 such as cache-inhibited are stored in the TLB and the hashed page table.

 This makes correctly performing cache inhibited IO accesses awkward when
 the MMU is turned off (real mode).  Some CPU models provide special
 registers to control the cache attributes of real mode load and stores but
 this is not at all consistent.  This is a problem in particular for SLOF,
 the firmware used on KVM guests, which runs entirely in real mode, but
 which needs to do IO to load the kernel.

 To simplify this qemu implements two special hypercalls, H_LOGICAL_CI_LOAD
 and H_LOGICAL_CI_STORE which simulate a cache-inhibited load or store to
 a logical address (aka guest physical address).  SLOF uses these for IO.

 However, because these are implemented within qemu, not the host kernel,
 these bypass any IO devices emulated within KVM itself.  The simplest way
 to see this problem is to attempt to boot a KVM guest from a virtio-blk
 device with iothread / dataplane enabled.  The iothread code relies on an
 in kernel implementation of the virtio queue notification, which is not
 triggered by the IO hcalls, and so the guest will stall in SLOF unable to
 load the guest OS.

 This patch addresses this by providing in-kernel implementations of the
 2 hypercalls, which correctly scan the KVM IO bus.  Any access to an
 address not handled by the KVM IO bus will cause a VM exit, hitting the
 qemu implementation as before.

 Note that a userspace change is also required, in order to enable these
 new hcall implementations with KVM_CAP_PPC_ENABLE_HCALL.

 Signed-off-by: David Gibson da...@gibson.dropbear.id.au

 Thanks, applied to kvm-ppc-queue.
 
 Any news on when this might go up to mainline?

I'm aiming for 4.1.


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


Re: [PATCHv3] kvmppc: Implement H_LOGICAL_CI_{LOAD,STORE} in KVM

2015-03-16 Thread David Gibson
On Thu, Feb 05, 2015 at 01:57:11AM +0100, Alexander Graf wrote:
 
 
 On 05.02.15 01:53, David Gibson wrote:
  On POWER, storage caching is usually configured via the MMU - attributes
  such as cache-inhibited are stored in the TLB and the hashed page table.
  
  This makes correctly performing cache inhibited IO accesses awkward when
  the MMU is turned off (real mode).  Some CPU models provide special
  registers to control the cache attributes of real mode load and stores but
  this is not at all consistent.  This is a problem in particular for SLOF,
  the firmware used on KVM guests, which runs entirely in real mode, but
  which needs to do IO to load the kernel.
  
  To simplify this qemu implements two special hypercalls, H_LOGICAL_CI_LOAD
  and H_LOGICAL_CI_STORE which simulate a cache-inhibited load or store to
  a logical address (aka guest physical address).  SLOF uses these for IO.
  
  However, because these are implemented within qemu, not the host kernel,
  these bypass any IO devices emulated within KVM itself.  The simplest way
  to see this problem is to attempt to boot a KVM guest from a virtio-blk
  device with iothread / dataplane enabled.  The iothread code relies on an
  in kernel implementation of the virtio queue notification, which is not
  triggered by the IO hcalls, and so the guest will stall in SLOF unable to
  load the guest OS.
  
  This patch addresses this by providing in-kernel implementations of the
  2 hypercalls, which correctly scan the KVM IO bus.  Any access to an
  address not handled by the KVM IO bus will cause a VM exit, hitting the
  qemu implementation as before.
  
  Note that a userspace change is also required, in order to enable these
  new hcall implementations with KVM_CAP_PPC_ENABLE_HCALL.
  
  Signed-off-by: David Gibson da...@gibson.dropbear.id.au
 
 Thanks, applied to kvm-ppc-queue.

Any news on when this might go up to mainline?

-- 
David Gibson| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson


pgpskWWLllYjF.pgp
Description: PGP signature


Re: [PATCHv3] kvmppc: Implement H_LOGICAL_CI_{LOAD,STORE} in KVM

2015-02-04 Thread Alexander Graf


On 05.02.15 01:53, David Gibson wrote:
 On POWER, storage caching is usually configured via the MMU - attributes
 such as cache-inhibited are stored in the TLB and the hashed page table.
 
 This makes correctly performing cache inhibited IO accesses awkward when
 the MMU is turned off (real mode).  Some CPU models provide special
 registers to control the cache attributes of real mode load and stores but
 this is not at all consistent.  This is a problem in particular for SLOF,
 the firmware used on KVM guests, which runs entirely in real mode, but
 which needs to do IO to load the kernel.
 
 To simplify this qemu implements two special hypercalls, H_LOGICAL_CI_LOAD
 and H_LOGICAL_CI_STORE which simulate a cache-inhibited load or store to
 a logical address (aka guest physical address).  SLOF uses these for IO.
 
 However, because these are implemented within qemu, not the host kernel,
 these bypass any IO devices emulated within KVM itself.  The simplest way
 to see this problem is to attempt to boot a KVM guest from a virtio-blk
 device with iothread / dataplane enabled.  The iothread code relies on an
 in kernel implementation of the virtio queue notification, which is not
 triggered by the IO hcalls, and so the guest will stall in SLOF unable to
 load the guest OS.
 
 This patch addresses this by providing in-kernel implementations of the
 2 hypercalls, which correctly scan the KVM IO bus.  Any access to an
 address not handled by the KVM IO bus will cause a VM exit, hitting the
 qemu implementation as before.
 
 Note that a userspace change is also required, in order to enable these
 new hcall implementations with KVM_CAP_PPC_ENABLE_HCALL.
 
 Signed-off-by: David Gibson da...@gibson.dropbear.id.au

Thanks, applied to kvm-ppc-queue.


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