]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
powerpc64: fix OFWFB with Radix MMU
authorLeandro Lupori <luporl@FreeBSD.org>
Thu, 14 Oct 2021 13:39:52 +0000 (10:39 -0300)
committerLeandro Lupori <luporl@FreeBSD.org>
Thu, 14 Oct 2021 13:39:52 +0000 (10:39 -0300)
commit76384bd10fdbb97be2803d969905f15a84255d6a
treed440dcbf84669fc5a0845dfb4074b1521bb31ac1
parent0a8159d8ca85383ec84076396c0a457c6d3e08f9
powerpc64: fix OFWFB with Radix MMU

Current implementation of Radix MMU doesn't support mapping
arbitrary virtual addresses, such as the ones generated by
"direct mapping" I/O addresses. This caused the system to hang, when
early I/O addresses, such as those used by OpenFirmware Frame Buffer,
were remapped after the MMU was up.

To avoid having to modify mmu_radix_kenter_attr just to support this
use case, this change makes early I/O map use virtual addresses from
KVA area instead (similar to what mmu_radix_mapdev_attr does), as
these can be safely remapped later.

Reviewed by: alfredo (earlier version), jhibbits (in irc)
MFC after: 2 weeks
Sponsored by: Instituto de Pesquisas Eldorado (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D31232
sys/powerpc/aim/aim_machdep.c
sys/powerpc/aim/mmu_radix.c
sys/powerpc/include/pmap.h
sys/powerpc/powerpc/machdep.c