2012-02-18 16:54:39

by Jean Delvare

[permalink] [raw]
Subject: [PATCH] mfd: Fix ACPI conflict check

The code is currently always checking the first resource of every
device only (several times.) This has been broken since the ACPI check
was added in February 2010 in commit
91fedede0338eb6203cdd618d8ece873fdb7c22c.

Fix the check to run on each resource individually, once.

Signed-off-by: Jean Delvare <[email protected]>
Cc: Samuel Ortiz <[email protected]>
Cc: [email protected]
---
I still believe that having ACPI checks in mfd-core is wrong to start
with. ACPI conflicts have become so frequent that this check if likely
to get a whole MFD chip to be unusable even if some of ifs functions
would be useable. For this reason I think the ACPI checks should be
the responsibility of the subdrivers. With this fix, even more
conflicts will happen, and I suspect more and more drivers will set
mfd_cell.ignore_resource_conflicts = true.

Still, if we have the check in place, let's do it right.

drivers/mfd/mfd-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-3.3-rc3.orig/drivers/mfd/mfd-core.c 2012-01-06 11:21:11.000000000 +0100
+++ linux-3.3-rc3/drivers/mfd/mfd-core.c 2012-02-18 17:03:24.854788023 +0100
@@ -123,7 +123,7 @@ static int mfd_add_device(struct device
}

if (!cell->ignore_resource_conflicts) {
- ret = acpi_check_resource_conflict(res);
+ ret = acpi_check_resource_conflict(&res[r]);
if (ret)
goto fail_res;
}


--
Jean Delvare


2012-02-23 16:35:44

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH] mfd: Fix ACPI conflict check

Hi Jean,

On Sat, Feb 18, 2012 at 05:54:23PM +0100, Jean Delvare wrote:
> The code is currently always checking the first resource of every
> device only (several times.) This has been broken since the ACPI check
> was added in February 2010 in commit
> 91fedede0338eb6203cdd618d8ece873fdb7c22c.
>
> Fix the check to run on each resource individually, once.
Thanks for catching this one. Applied to both my for-next and for-linus
branches.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/