V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cnnblike  ›  全部回复第 1 页 / 共 56 页
回复总数  1114
1  2  3  4  5  6  7  8  9  10 ... 56  
正确的做法可能是用 memremap ,用 dts+memremap 这样的形式会比较好点:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841683/Linux+Reserved+Memory

memremap(r.start, resource_size(&r), MEMREMAP_WT);
@villivateur https://docs.kernel.org/driver-api/device-io.html
看一下这个,你需要的可能是 ioremap 或者 ioremap_nc
我仔细分析了一下你遇到的问题,感觉像是这样:
1. rk3588 这个问题是应该是因为那个页面被设置成了 write-back 而不是 write-through ,由于是闲时写,所以在你系统的内存总线空闲的时候会写入,然后叠加 wb 会在写入的时候刷 L1 ,更新另一个 cluster 的 L2 ,所以显得触发概率低,所以我建议你跑一个高内存总线开销的用户态程序,应该能让任务出问题

2. rk3568 的场合,你的页表上对这个页面可能没设置 SH ,看这里 https://zhuanlan.zhihu.com/p/532838098
@villivateur 我最近也在研究这块,有兴趣的话,记得把结论也发我一下
@villivateur
内存段和 shareable 的设置和 tlb 有关系,在内核的 mm 那块的逻辑里,具体说是 The arch/arm64/mm/cache-*.S 和 arch/arm64/mm/proc-*.S
还有一个可能性,我不知道你是用 mem=xxx MB 设置的内存还是用 reversed_memory 设置的内存,所以可能行为会有不同。

如果你用的 jailhouse 的话,他那个实现对大小 cluster 的支持可能是不对的,看此处注释:
https://github.com/siemens/jailhouse/blob/master/hypervisor/arch/arm64/entry.S#L453-L458
如果是 rk3568 或者是 rk3566 上的核间通信,因为内存不一致触发问题说实话可能性很低,按 arm 的定义(和推荐实现),单一一个 cluster 的所有核都在同一个 innershareable 上,理论上 cluster 内所有核能看到的,都是一样的。
如果是 rk3588 ,那是有可能的,我猜你把一个小核分出来跑 amp ,或者干脆是在 cortex-m 核上跑 amp 通信,那就触发缓存不一致了
@villivateur 不在一个 cluster 的情况不大可能说实话,你直接说 rk 什么型号吧
https://linaro-dev.linaro.narkive.com/f2kFnMmW/why-is-the-the-smp-mb-in-arm64-s-barrier-h-dmb-ish
”In Arm V8 Architecture Reference Manual£¬there is an example (see beblow) to explain the shareability attribute of clusters. It is easy to know: each cluster is corresponding to a Inner shareable domain; the two cluster comprise a Outer shareable domain.“
https://developer.arm.com/documentation/100941/0101/Memory-attributes
内存一致性看这个,一般说来是不在一个 cluster 的时候容易遇到这个

做 amp 的话,内核态 解决方案 https://developer.arm.com/documentation/ddi0500/e/system-control/aarch32-register-summary/c7-system-operations?lang=en

做进程通信的话,整个 core affinity ,或者弄个 memory-barrier 应该也行
8 天前
回复了 ColdBird 创建的主题 问与答 有喜欢玩小丑牌和尖塔的吗
爬塔 1800+小时,90%打猎人,10%打观,游戏嘛,自己舒服最重要
18 天前
回复了 alphardex 创建的主题 生活 2.15 上海 Roselia 演唱会观后感
羡慕啊,还有时间做自己喜欢的事
18 天前
回复了 atao777 创建的主题 Apple iPad 上进行前端开发的方案
iPad 不大行,输入体验糟心
@mahaoqu 哥,汗出来了
70 天前
回复了 houshengzi 创建的主题 git 请教大家这样的项目应该要怎么做 git 管理
搞一个门禁,把所有 master 上的 commit cherry-pick 到定制分支上
91 天前
回复了 yucc 创建的主题 问与答 视频售卖平台
"专业知识类"
100 天前
回复了 cydian 创建的主题 程序员 ❓♾️如何实现“自反射”的 DNS 解析?
自己找 coredns 写个插件,搭针对 wildname 的 nss 就行
109 天前
回复了 sadara 创建的主题 Apple 苹果授权店看到一根极细网线
有点意思 不知道这种极细网线信号完整性可以保证几米
159 天前
回复了 honkew 创建的主题 NAS N305 有政府补贴 20%
政府补贴你升级翻墙工具 蛤蛤蛤
161 天前
回复了 yoa1q7y 创建的主题 Twitter 关于 Twitter 推荐内容的困扰
Twitter 比你更了解你自己
1  2  3  4  5  6  7  8  9  10 ... 56  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2822 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 11:14 · PVG 19:14 · LAX 03:14 · JFK 06:14
Developed with CodeLauncher
♥ Do have faith in what you're doing.