public inbox for kvm-ppc@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: kvm-ppc@vger.kernel.org
Subject: Re: Magic Page in e500v2
Date: Mon, 21 May 2012 12:17:06 +0000	[thread overview]
Message-ID: <4FBA3242.7090602@suse.de> (raw)
In-Reply-To: <loom.20120521T133948-227@post.gmane.org>

Hi Aashish,

On 05/21/2012 01:51 PM, Aashish Mittal wrote:
> Hi
> I'm working on KVM optimizations on Powerpc e500v2 embedded architecture. For my
> project i'm trying to increase the size of shared region mapped my Magic Page
> between host and guest for paravirtual support. I was expecting this would
> possible since we are using a TLB1 entry to map the magic page entry inside the
> host. I'm trying to increase it's size to 1MB. I've declared a shared structure
> tcache of 1MB similar to vcpu->arch.shared and trying to map it in the guest
> virtual space. The shared page earlier is now the last page of this tcache
> structure.
>
> This is the modified code :
>
> Initialization in e500.c in function kvmppc_core_vcpu_create
>
>          shared = (void*)__get_free_pages(GFP_KERNEL|__GFP_ZERO,10);
>          vcpu->arch.tcache = (void*)(shared);
>          vcpu->arch.shared = (void*)(shared + (((1<<  10)-1)<<PAGE_SHIFT));

Did you also change the shared page elements to still be within the 
first page? Otherwise the offset wouldn't fit into the immediate fields 
of the asm instructions. We can't reach as low as -1MB with all operations.


Alex

> 	
>
> void kvmppc_map_magic(struct kvm_vcpu *vcpu)
> {
> 	struct kvmppc_vcpu_e500 *vcpu_e500 = to_e500(vcpu);
> 	struct kvm_book3e_206_tlb_entry magic;
> 	ulong shared_page = ((ulong)vcpu->arch.tcache)&  PAGE_MASK;
> 	ulong page = shared_page;
> 	unsigned int stid;
> 	pfn_t pfn,pfn1;
>          int i = 0;
>
>          for(i=0;i<  1024;i++){
>            pfn1 = (pfn_t)virt_to_phys((void *)page)>>  PAGE_SHIFT;
> 	  get_page(pfn_to_page(pfn1));
>            page +=  0x1000;
> 	}
> 	
>          pfn = (pfn_t)virt_to_phys((void *)shared_page)>>  PAGE_SHIFT;
>
>
> 	preempt_disable();
> 	stid = e500_get_sid(vcpu_e500, 0, 0, 0, 0);
>
> 	magic.mas1 = MAS1_VALID | MAS1_TS | MAS1_TID(stid) |
> 		     MAS1_TSIZE(BOOK3E_PAGESZ_1M);
> 	magic.mas2 = (vcpu->arch.magic_page_ea&  0xfff00000)| MAS2_M;
>
> 	magic.mas7_3 = ((u64)pfn<<  PAGE_SHIFT) |
> 		       MAS3_SW | MAS3_SR | MAS3_UW | MAS3_UR;
>
> 	__write_host_tlbe(&magic, MAS0_TLBSEL(1) | MAS0_ESEL(tlbcam_index));
> 	preempt_enable();
> }
>
> But i'm experiencing the following error printed in the guest
>
> KVM: Live patching for a fast VM worked
> initcall kvm_guest_init+0x0/0x1f8 returned with disabled interrupts
> initcall migration_init+0x0/0x8c returned with disabled interrupts
>
> and then the guest just hangs.
>
> Does anybody have any idea how to map it correctly
>
> Thanks
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


  reply	other threads:[~2012-05-21 12:17 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-21 11:51 Magic Page in e500v2 Aashish Mittal
2012-05-21 12:17 ` Alexander Graf [this message]
2012-05-21 12:49 ` Aashish Mittal
2012-05-21 13:17 ` Aashish Mittal
2012-05-21 15:41 ` Scott Wood

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=4FBA3242.7090602@suse.de \
    --to=agraf@suse.de \
    --cc=kvm-ppc@vger.kernel.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