powerpc/mm/thp: Return pte address if we find trans_splitting.
For THP that is marked trans splitting, we return the pte. This require the callers to handle the pmd_trans_splitting scenario, if they care. All the current callers are either looking at pfn or write_ok, hence we don't need to update them. Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Esse commit está contido em:

commit de
Michael Ellerman

pai
691e95fd73
commit
7d6e7f7ffa
@@ -537,20 +537,17 @@ int kvmppc_book3s_hv_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu,
|
||||
}
|
||||
/* if the guest wants write access, see if that is OK */
|
||||
if (!writing && hpte_is_writable(r)) {
|
||||
unsigned int hugepage_shift;
|
||||
pte_t *ptep, pte;
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
* We need to protect against page table destruction
|
||||
* while looking up and updating the pte.
|
||||
* hugepage split and collapse.
|
||||
*/
|
||||
local_irq_save(flags);
|
||||
ptep = find_linux_pte_or_hugepte(current->mm->pgd,
|
||||
hva, &hugepage_shift);
|
||||
hva, NULL);
|
||||
if (ptep) {
|
||||
pte = kvmppc_read_update_linux_pte(ptep, 1,
|
||||
hugepage_shift);
|
||||
pte = kvmppc_read_update_linux_pte(ptep, 1);
|
||||
if (pte_write(pte))
|
||||
write_ok = 1;
|
||||
}
|
||||
|
@@ -219,7 +219,7 @@ long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags,
|
||||
local_irq_restore(flags);
|
||||
return H_PARAMETER;
|
||||
}
|
||||
pte = kvmppc_read_update_linux_pte(ptep, writing, hpage_shift);
|
||||
pte = kvmppc_read_update_linux_pte(ptep, writing);
|
||||
if (pte_present(pte) && !pte_protnone(pte)) {
|
||||
if (writing && !pte_write(pte))
|
||||
/* make the actual HPTE be read-only */
|
||||
|
Referência em uma nova issue
Block a user