ACPI I/O resource conflict with SMBus
ACPI I/O resource conflict with SMBus
以電子郵件傳送這篇文章BlogThis!分享至 Twitter分享至 Facebook分享到 Pinterest
這幾天遇到一個奇怪的問題,我試著透過 io 的方式去讀 sch5027 這顆 SuperIO 的 Hardware Monitor,但發現它的 Hardware Monitor 只支援透過 I2C/SMBus 去讀,不過這也不是問題,因為 Linux 有支援,只要掛載 dme1737 就行了。
奇怪的點在於,掛上 dme1737 後,完全找不到應該建立在 /sys/class/hwmon/ 下的 entry,追了一下 code 後,發現 dme1737_i2c_probe 根本沒有被呼叫到,繼續深入追了一下又發現,雖然 lspci 是有 SMBus 資訊,且 i2c-i801 也有掛載,但 i2cdetect 完全找不到有任何的device.......0rz
最後經由 google 大神的提示,才知道原來是 ACPI 和 SMBus 的衝突造成的。從 dmesg 裡面會找到像是這樣的訊息: ACPI: resource 0000:00:1f.3 [io 0xXXXX-0xYYYY] conflicts with ACPI region SMBI ......
ACPI: If an ACPI is available for this device, you should used it instead of native driver
當有這訊息出現時,會完全找不到 i2c 的 device,因為 resource 被 ACPI 佔住了。解決的方式滿簡單的,只要在 kernel 的 boot option 裡加入底下的參數即可: acpi_enforce_resources=no
節錄 kernel-parameters.txt 裡的說明:
acpi_enforce_resources= [ACPI]
{ strict | lax | no }
Check for resource conflicts between native drivers
and ACPI OperationRegions (SystemIO and SystemMemory
only). IO ports and memory declared in ACPI might be
used by the ACPI subsystem in arbitrary AML code and
can interfere with legacy drivers.
strict (default): access to resources claimed by ACPI
is denied; legacy drivers trying to access reserved
resources will fail to bind to device using them.
lax: access to resources claimed by ACPI is allowed;
legacy drivers trying to access reserved resources
will bind successfully but a warning message is logged.
no: ACPI OperationRegions are not marked as reserved,
no further checks are performed.
參考資料 Bug 12376 - ACPI I/O resource conflict with SMBus
[solved] Dme1737
Bug 13967 - Revert "ACPICA: Remove obsolete acpi_os_validate_address interface" regression
ACPI I/O resource conflict with SMBus的更多相关文章
- Linux内核配置选项
http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- I/O地址映射
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器.状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址.根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I ...
- 内核request_mem_region 和 ioremap的理解
request_mem_region仅仅是linux对IO内存的管理,意思指这块内存我已经占用了,别人就不要动了,也不能被swap出去.使用这些寄存器时,可以不调用request_mem_region ...
- Dell服务器MegaCli命令只返回Exit Code: 0x00问题分析
今天同事给我说一台dell的服务器做了raid后,使用MegaCli看不到raid信息,上去看了一下确实不返回任何raid信息,但是确实机器上做了raid. 这就奇怪了,然后把MegaCli升级到最新 ...
- io端口
io端口 *********************************************************** io端口设备访问流程为 --------------------- ...
- 内核request_mem_region 和 ioremap的理解【转】
转自:http://blog.csdn.net/skyflying2012/article/details/8672011 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. 几乎每一种 ...
- 【深入理解Linux内核架构】6.6 资源分配
一段摘自<Linux设备驱动程序>的话: 每种外设都通过读写寄存器进行控制.大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的. 在硬件层,内存 ...
- Helm包管理
Helm Kubernetes 包管理工具 Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义.安装和升级复杂的 Kubernetes 应用程序,Char ...
随机推荐
- 移动端布局,div按比例布局,宽度为百分比,高度和宽度一样,即让div为正方形
http://codepen.io/airen/details/XbVBZo <div><span>1</span></div> <div> ...
- JQuery教程
1.是javaScript库(js文件) 2.使用:script标签 3.语法:$开头 $().action() 列如:$('div').css("color",'red'); 4 ...
- FreeBSD_11-系统管理——{Part_1-桌面}
一.Xorg 安装 xorg pkg install xorg 清除旧文件(如果已前安装过 xorg) /etc/X11/xorg.conf /usr/local/etc/X11/xorg.conf ...
- struts的DevMode模式
在实际应用开发或者是产品部署的时候,对应着两种模式:开发模式(devMode):此时 DevMode=ture: 产品模式(proMode):此时 DevMode=false: 在一些服务器或者框架 ...
- 【洛谷P1969】积木大赛
递增区间内累计增量 #include<cstdio> #include<cstring> using namespace std; int a,h,n,ans; int mai ...
- 用Fragment制作的Tab页面产生的UI重叠问题
本文出处:http://blog.csdn.net/twilight041132/article/details/43812745 在用Fragment做Tab页面,发现有时候进入应用会同时显示多个T ...
- java设计模式之外观模式(门面模式)
针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下. 一.概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.这种类型的设计 ...
- 河南省第六届ACM程序设计大赛
C: 最舒适的路线 (并查集) #include<cstdio> #include<cstring> #include<iostream> #include< ...
- PHP程序员的技术成长规划(转)
第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的PHP开发:能够在PHP中型系统中支 ...
- [算法] [常微分方程] [欧拉法 改进欧拉法 经典R-K算法]
#include<iostream> #include<cmath> #include<cstdio> #include<iomanip> using ...