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的更多相关文章

  1. Linux内核配置选项

    http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...

  2. 深入linux kernel内核配置选项

    ============================================================================== 深入linux kernel内核配置选项 ...

  3. I/O地址映射

    几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器.状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址.根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I ...

  4. 内核request_mem_region 和 ioremap的理解

    request_mem_region仅仅是linux对IO内存的管理,意思指这块内存我已经占用了,别人就不要动了,也不能被swap出去.使用这些寄存器时,可以不调用request_mem_region ...

  5. Dell服务器MegaCli命令只返回Exit Code: 0x00问题分析

    今天同事给我说一台dell的服务器做了raid后,使用MegaCli看不到raid信息,上去看了一下确实不返回任何raid信息,但是确实机器上做了raid. 这就奇怪了,然后把MegaCli升级到最新 ...

  6. io端口

    io端口 ***********************************************************   io端口设备访问流程为 --------------------- ...

  7. 内核request_mem_region 和 ioremap的理解【转】

    转自:http://blog.csdn.net/skyflying2012/article/details/8672011 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. 几乎每一种 ...

  8. 【深入理解Linux内核架构】6.6 资源分配

    一段摘自<Linux设备驱动程序>的话: 每种外设都通过读写寄存器进行控制.大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的. 在硬件层,内存 ...

  9. Helm包管理

    Helm Kubernetes 包管理工具 Helm 可以帮助我们管理 Kubernetes 应用程序 - Helm Charts 可以定义.安装和升级复杂的 Kubernetes 应用程序,Char ...

随机推荐

  1. 第一章 第一个spring boot程序(转载)

    第一章 第一个spring boot程序 本编博客转发自:http://www.cnblogs.com/java-zhao/p/5324185.html   环境: jdk:1.8.0_73 mave ...

  2. RecycleView在eclipse的初体验

    在sdk中找到v7包 \sdk\extras\android\support\v7\recyclerview 导入工程 Import\Android\Existing Android Code Int ...

  3. .net web获取自己的ip地址

    using System;using System.Text;using System.Web;using System.Text.RegularExpressions; namespace MxWe ...

  4. lua 入门学习

    -- 1.Hello world print( "--------------1--------------") print("Hello world"); - ...

  5. Javascript 添加自定义静态方法属性JS清除左右空格

    例如加trim()清除左右空格 String.prototype.trim=function() { return this.replace(/(^\s*)|(\s*$)/g,''); } 调用 va ...

  6. Android Studio安装genymotion模拟器

    1.Genymotion的安装: Genymotion无疑是目前最快最好用的模拟器.官网下载地址:https://www.genymotion.com/ 先注册,然后下载,安装VirtualBox最简 ...

  7. Subsets 子集系列问题 leetcode

    子集系列问题: Coding 问题中有时会出现这样的问题:给定一个集合,求出这个集合所有的子集(所谓子集,就是包含原集合中的一部分元素的集合). 或者求出满足一定要求的子集,比如子集中元素总和为定值, ...

  8. 套题 bestcoder 84

    A题:Aaronson 静下心来观察就会发现1.如果m大于等于n的位数,那么n直接写成二进制形式就是最优解形式2.如果m小于n的位数,那么贪心地使得高位尽可能地多消掉n的值,因为高位少写一个数就意味着 ...

  9. git clone 错误ca-certificates.crt

    git clone https://github.com/baoyiluo/selfblog.git Cloning into 'selfblog'... error: server certific ...

  10. python numpy 介绍

    NumPy提供了两种基本的对象:ndarray(N-dimensional array object)和 ufunc(universal function object).ndarray(下文统一称之 ...