HomeFreeBSD

powerpc/booke: Fix pmap_mapdev_attr() for multi-TLB1 entry mappings

Description

powerpc/booke: Fix pmap_mapdev_attr() for multi-TLB1 entry mappings

Also, fix pmap_change_attr() to ignore non-kernel mappings.

  • Fix a masking bug in mmu_booke_mapdev_attr() which caused it to align mappings to the smallest mapping alignment, instead of the largest. This caused mappings to be potentially pessimally aligned, using more TLB entries than necessary.
  • Return existing mappings from mmu_booke_mapdev_attr() that span more than one TLB1 entry. The drm-current-kmod drivers map discontiguous segments of the GPU, resulting in more than one TLB entry being used to satisfy the mapping.
  • Ignore non-kernel mappings in mmu_booke_change_attr(). There's a bug in the linuxkpi layer that causes it to actually try to change physical address mappings, instead of virtual addresses. amd64 doesn't encounter this because it ignores non-kernel mappings.

With this it's possible to use drm-current-kmod on Book-E.

Details

Provenance
jhibbitsAuthored on Nov 6 2019, 4:40 AM
Parents
rG7ef518c05aca: fileargs_init() sets errno on failure.
Branches
Unknown
Tags
Unknown

Event Timeline