Linux 板


LINE

开发平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux-3.18 @ ARMv8 CPU 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) X 问题(Question): 大家好, 最近在研究barrier, 搜寻之後好像没找到相近的讨论串, 想请教一点问题.. 在linux-3.18/arch/arm64/include/asm/io.h里面 看到它对readl/writel的定义: /* * I/O memory access primitives. Reads are ordered relative to any * following Normal memory access. Writes are ordered relative to any prior * Normal memory access. */ #define readl(c) ({ u32 __v = readl_relaxed(c); __iormb(); __v; }) #define writel(v,c) ({ __iowmb(); writel_relaxed((v),(c)); }) readl这边感觉比较好理解, 在__v承接readl_relaxed的return value之後, 卡一个read的barrier, 然後才return __v出来, 所以能确保最後的__v真的是得到从最後一级所传回来的data (假设中间的interconnect不会提前做response或把自己cache里的东西传回来) 但是writel这边, 它在执行writel_relaxed之前就先卡了个write barrier, 那我在呼叫这个macro之後, 也只能确保这个write被执行之前, 前面的write跟这个write是区隔开的, 但是不能确保这个write已经被执行完成了, 不是吗? 这边我越看越觉得困惑... 发文若有不妥恳请提醒, 也恳请大大帮忙解惑, 感激 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.124.166.19
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1468307064.A.89E.html
1F:→ withoutshine: writel的barrier应该是为了保证v,c 的assign 出现在 07/12 21:30
2F:→ withoutshine: writel_relaxed之前 07/12 21:30
我找了一段code, 使用asdk64-elf-objdump来deassembly: xxx_REG_WRITE(Data1.wrd, Addr); #define xxx_REG_WRITE(data, addr) xx_REG_WRITE(data, addr) #define xx_REG_WRITE(REG_DATA, REG_ADDR) writel(REG_DATA, REG_ADDR) #define writel(v,c) ({ __iowmb(); writel_relaxed((v),(c)); }) deassembly得出的结果, (以我的理解)看起来barrier是卡在最前面 @_@: xxx_REG_WRITE(Data1.wrd, Addr); 1c70: d5033e9f dsb st 1c74: f9400020 ldr x0, [x1] 1c78: b94023a2 ldr w2, [x29,#32] 1c7c: 91400400 add x0, x0, #0x1, lsl #12 1c80: 91103000 add x0, x0, #0x40c asm volatile("strh %w0, [%1]" : : "r" (val), "r" (addr)); ---- 顺便把问题丢上ARM forum求救... Q_Q https://community.arm.com/message/37667#37667 ※ 编辑: loach98 (59.124.166.19), 07/18/2016 20:37:19
3F:推 yvb: kernel Documentation/memory-barriers.txt 07/20 14:49







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP