linux - 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
不能在其他平台上移植?
解决方案
推荐阅读
- git - 如何为 git pull 合并消息提供评论
- terraform - 用于检索键值的 Terraform 过滤器
- c++11 - 使用 C++11 模板生成算法的多个版本
- python - 无法在 Python 中使用 xpath 定位元素
- macos - Mac 上的 Kafka 在启动控制台使用者时没有对节点 -1 的正在进行的请求
- jquery - 背景位置 css 不使用变量
- struct - 如何将约束添加到结构的字段以进行实例化?
- c++ - Unity 2019.4+ 中的 Apple Mach-O 链接器 (ld) 错误
- spring-boot - Spring boot 2.3.3.RELEASE 类路径未知警告
- kubernetes - Kubernetes Ingress 无法通过路径访问容器