mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-30 22:50:54 -04:00
Merge tag 'powerpc-4.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
Pull powerpc fixes from Michael Ellerman: - eeh: Fix partial hotplug criterion from Gavin Shan - mm: Clear the invalid slot information correctly from Aneesh Kumar K.V * tag 'powerpc-4.5-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: powerpc/mm/hash: Clear the invalid slot information correctly powerpc/eeh: Fix partial hotplug criterion
This commit is contained in:
@@ -418,8 +418,7 @@ static void *eeh_rmv_device(void *data, void *userdata)
|
||||
eeh_pcid_put(dev);
|
||||
if (driver->err_handler &&
|
||||
driver->err_handler->error_detected &&
|
||||
driver->err_handler->slot_reset &&
|
||||
driver->err_handler->resume)
|
||||
driver->err_handler->slot_reset)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -111,7 +111,13 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
|
||||
*/
|
||||
if (!(old_pte & _PAGE_COMBO)) {
|
||||
flush_hash_page(vpn, rpte, MMU_PAGE_64K, ssize, flags);
|
||||
old_pte &= ~_PAGE_HASHPTE | _PAGE_F_GIX | _PAGE_F_SECOND;
|
||||
/*
|
||||
* clear the old slot details from the old and new pte.
|
||||
* On hash insert failure we use old pte value and we don't
|
||||
* want slot information there if we have a insert failure.
|
||||
*/
|
||||
old_pte &= ~(_PAGE_HASHPTE | _PAGE_F_GIX | _PAGE_F_SECOND);
|
||||
new_pte &= ~(_PAGE_HASHPTE | _PAGE_F_GIX | _PAGE_F_SECOND);
|
||||
goto htab_insert_hpte;
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -78,9 +78,19 @@ int __hash_page_thp(unsigned long ea, unsigned long access, unsigned long vsid,
|
||||
* base page size. This is because demote_segment won't flush
|
||||
* hash page table entries.
|
||||
*/
|
||||
if ((old_pmd & _PAGE_HASHPTE) && !(old_pmd & _PAGE_COMBO))
|
||||
if ((old_pmd & _PAGE_HASHPTE) && !(old_pmd & _PAGE_COMBO)) {
|
||||
flush_hash_hugepage(vsid, ea, pmdp, MMU_PAGE_64K,
|
||||
ssize, flags);
|
||||
/*
|
||||
* With THP, we also clear the slot information with
|
||||
* respect to all the 64K hash pte mapping the 16MB
|
||||
* page. They are all invalid now. This make sure we
|
||||
* don't find the slot valid when we fault with 4k
|
||||
* base page size.
|
||||
*
|
||||
*/
|
||||
memset(hpte_slot_array, 0, PTE_FRAG_SIZE);
|
||||
}
|
||||
}
|
||||
|
||||
valid = hpte_valid(hpte_slot_array, index);
|
||||
|
||||
Reference in New Issue
Block a user