Re: ACPI reads wrong temperature

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thursday 06 November 2008 03:11:26 am Matthew Garrett wrote:
> On Thu, Nov 06, 2008 at 02:12:52PM +0800, Zhao Yakui wrote:
> > On your box after the i2c-i801 driver is loaded, the smbus controller
> > will be used by the AML code and i2c-i801 driver. Unfortunately there is
> > no synchronization between them. IMO this is the BIOS fault. The SMbus
> > will be accessed by the two different modules. But it is exported by
> > BIOS.
>
> No, loading i2c-i801 is harmless. The breakage occurs when you attempt
> to drive the smbus.
>
> >     So the better solution is that:
> >     a. SMBus is hidden in BIOS. In such case the Linux OS can't detect
> > the SMbus controller . Of course it won't try to load the device driver
> > for it.
> >     b. Linux OS won't load the device driver for it.
>
> The solution is for users not to load smbus drivers unless they know for
> certain that it's safe to do so, or alternatively for us to refuse to
> load i2c drivers if they overlap with ACPI resource allocations.

We already have that:
>  or alternatively for us to refuse to load i2c drivers
in drivers/acpi/osl.c:

#define ENFORCE_RESOURCES_STRICT 2
#define ENFORCE_RESOURCES_LAX    1
#define ENFORCE_RESOURCES_NO     0

static unsigned int acpi_enforce_resources = ENFORCE_RESOURCES_LAX;

lax means print out warning which i2c driver conflicts with which ACPI 
Operation Region.
Did you get such a message:
printk("%sACPI: %s resource %s [0x%llx-0x%llx]"
                               " conflicts with ACPI region %s"
                               " [0x%llx-0x%llx]\n",
                               acpi_enforce_resources == ENFORCE_RESOURCES_LAX
                               ? KERN_WARNING : KERN_ERR,
                               ioport ? "I/O" : "Memory", res->name,
                               (long long) res->start, (long long) res->end,
                               res_list_elem->name,
                               (long long) res_list_elem->start,
                               (long long) res_list_elem->end);

If not, probably this specific i2c driver has to be added to check it's 
resources against ACPI used Operation Regions.

Jean: Could you add that if necessary, pls.
This is the whole thread:
http://marc.info/?t=122546192400002&r=1&w=2

Thanks,

      Thomas
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux