首页 > 解决方案 > get_user_pages 在 ARM64 上是否可移植?

问题描述

我有一个get_user_pages用于在内核和用户空间之间共享数据的程序,它在 x86 (linux 5.4) 上运行良好。当我迁移到 aarch64(ARM64) aws-ec2 时,程序在get_user_pages. 我很确定我传递的第一个参数是在用户空间中。(00000000fd40166c)

但在内核消息显示中:

Unable to handle kernel paging request at virtual address ffff800008000006
Mem abort info:
[26850.731473]   ESR = 0x96000046
[26850.731869]   EC = 0x25: DABT (current EL), IL = 32 bits
[26850.732589]   SET = 0, FnV = 0
[26850.733012]   EA = 0, S1PTW = 0
[26850.733479] Data abort info:
[26850.733884]   ISV = 0, ISS = 0x00000046
[26850.734403]   CM = 0, WnR = 1
[26850.734825] swapper pgtable: 4k pages, 48-bit VAs, pgdp=000000004140d000
[26850.735765] [ffff800008000006] pgd=000000007e5ff003, pud=000000007e5fe003, pmd=0000000000000000
[26850.736989] Internal error: Oops: 96000046 [#12] SMP

ffff800008000006 显然是内核地址,但我没有将此地址传递给任何函数。

对于这个问题,我没有最少的重现代码。请给我任何想法或可能的原因。还是get_user_pages不能在其他平台上移植?

标签: linuxarm

解决方案


推荐阅读