Paul Mackerras <pau...@samba.org> writes:

>
>> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
>> index 71d0c90..d2c9932 100644
>> --- a/arch/powerpc/kvm/book3s_hv.c
>> +++ b/arch/powerpc/kvm/book3s_hv.c
>> @@ -1515,7 +1515,12 @@ static void kvmppc_add_seg_page_size(struct 
>> kvm_ppc_one_seg_page_size **sps,
>>      (*sps)->page_shift = def->shift;
>>      (*sps)->slb_enc = def->sllp;
>>      (*sps)->enc[0].page_shift = def->shift;
>> -    (*sps)->enc[0].pte_enc = def->penc;
>> +    /*
>> +     * FIXME!!
>> +     * This is returned to user space. Do we need to
>> +     * return details of MPSS here ?
>
> Yes, we do, probably a separate entry for each valid base/actual page
> size pair.
>

How about

commit fb7bca460d5e3a517dce24c0fe28cc94ffde37fa
Author: Aneesh Kumar K.V <aneesh.ku...@linux.vnet.ibm.com>
Date:   Sun Feb 24 22:55:38 2013 +0530

    powerpc: Return all the valid pte ecndoing in KVM_PPC_GET_SMMU_INFO ioctl
    
    Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.vnet.ibm.com>

diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 48f6d99..e50eb0d 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -1508,14 +1508,21 @@ long kvm_vm_ioctl_allocate_rma(struct kvm *kvm, struct 
kvm_allocate_rma *ret)
 static void kvmppc_add_seg_page_size(struct kvm_ppc_one_seg_page_size **sps,
                                     int linux_psize)
 {
+       int i, index = 0;
        struct mmu_psize_def *def = &mmu_psize_defs[linux_psize];
 
        if (!def->shift)
                return;
        (*sps)->page_shift = def->shift;
        (*sps)->slb_enc = def->sllp;
-       (*sps)->enc[0].page_shift = def->shift;
-       (*sps)->enc[0].pte_enc = def->penc[linux_psize];
+       for (i = 0; i < MMU_PAGE_COUNT; i++) {
+               if ((signed int)def->penc[i] != -1) {
+                       BUG_ON(index >= KVM_PPC_PAGE_SIZES_MAX_SZ);
+                       (*sps)->enc[index].page_shift = mmu_psize_defs[i].shift;
+                       (*sps)->enc[index].pte_enc = def->penc[i];
+                       index++;
+               }
+       }
        (*sps)++;
 }
 

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to