Hi list.
On 6/30/26 00:40, Radosław Kujawa wrote:
The check should not assume that given VA >= PMAP_DIRECT_MAPPED_LEN .
Note that PMAP_DIRECT_MAPPED_LEN is calculated according to the
formula in oea/pmap.h (line 128) :
SEGMENT_LENGTH (256MB) * USER_SR
Why does the panic not trigger on macppc and other PowerPC ports? By
coincidence that depends on ordering of USER_SR and KERNEL_SR utilized
by a given port:
macppc, evbppc etc. use USER_SR 12 and KERNEL_SR 13, 14, so segment-
mappend KVA lands between 0xD0000000 - 0xF0000000, and
PMAP_DIRECT_MAPPED_LEN as calculated is 0xC0000000 .
ofppc uses USER_SR 14 and KERNEL_SR 10, 11, so segment-mapped KVA
lands between 0xA0000000 - 0xC0000000, and PMAP_DIRECT_MAPPED_LEN as
calculated is 0xE0000000 .
After discussion with other developers (thanks Martin, Nick), it was
concluded that cleanest solution is to fix the PMAP_DIRECT_MAPPED_LEN
calculation itself, so that PMAP_DIRECT_MAPPED_LEN reflects true range
of identity-mapped addresses and is independent of KERNEL_SR / USER_SR
ordering on a given port.
The following fix was committed today.