On Wed, 2015-02-18 at 11:16 +1100, Gavin Shan wrote: > >What is vm_unmap_aliases() for? I see this is probably copied from > >rpaphp_core.c, where it was added by b4a26be9f6f8 ("powerpc/pseries: > Flush > >lazy kernel mappings after unplug operations"). > > > >But I don't know whether: > > > > - this is something specific to powerpc, > > - the lack of vm_unmap_aliases() in other hotplug paths is a bug, > > - the fact that we only do this on powerpc is covering up a > > powerpc bug somewhere > > > > Yes, I copied this piece of code from rpaphp_core.c. I think Ben might > help to answer the questions as he added the patch. I had very quick > check on mm/vmalloc.c and it's reasonable to have vm_unmap_aliases() > here to flush TLB entries for ioremap() regions, which were unmapped > previously. if I'm correct. I don't think it's powerpc specific. It's specific to running under the PowerVM hypervisor, and thus doesn't affect PowerNV, just don't copy it over. It comes from the fact that the generic ioremap code nowadays delays TLB flushing on unmap. The TLB flushing code is what, on powerpc, ensures that we remove the translations from the MMU hash table (the hash table is essentially treated as an extended in-memory TLB), which on pseries turns into hypervisor calls. When running under that hypervisor, the HV ensures that no translation still exists in the hash before allowing a device to be removed from a partition. If translations still exist, the removal fails. So we need to force the generic ioremap code to perform all the TLB flushes for iounmap'ed regions before we "complete" the unplug operation from a kernel perspective so that the device can be re-assigned to another partition. This is thus useless on platforms like powernv which do not run under such a hypervisor. Cheers, Ben. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html