Subject: Re: [PATCH v5] Thermal: introduce INT3406 thermal driver

From: Aaron Lu <[email-masked]>
Date: Thu, 11 Dec 2014 14:08:16 +0800

On 12/11/2014 10:37 AM, Zhang Rui wrote:
> On Wed, 2014-12-10 at 18:15 -0800, Olof Johansson wrote:
>> On Wed, Dec 10, 2014 at 5:02 PM, Aaron Lu <[email-masked]> wrote:
>>> On Wed, Dec 10, 2014 at 11:53:25AM -0800, Olof Johansson wrote:
>>>> Hi,
>>>>
>>>> [+daniel vetter]
>>>>
>>>> On Mon, Dec 8, 2014 at 9:47 PM, Aaron Lu <[email-masked]> wrote:
>>>>> INT3406 ACPI device object resembles an ACPI video output device, but its
>>>>> _BCM is said to be deprecated and should not be used. So we will make
>>>>> use of the raw interface to do the actual cooling. Due to this, the
>>>>> backlight core has some modifications. Also, to re-use some of the ACPI
>>>>> video module's code, one function has been exported.
>>>>>
>>>>> Signed-off-by: Aaron Lu <[email-masked]>
>>>>> Signed-off-by: Zhang Rui <[email-masked]>
>>>>> ---
>>>>> v5:
>>>>> Add the missing file drivers/thermal/int340x_thermal/Kconfig
>>>>> Remove the assignment of .owner field from the device_driver structure
>>>>
>>>>
>>>> Did this patch show up in -next for the first time last night, or did
>>>> some other change break this?
>>>>
>>>> It causes a panic in i915 when booting Minnowboard Max for me.
>>>
>>> Sorry for the trouble, I'm looking at this now.
>>> Is there anything special about the Minnowboard Max? I'll try to
>>> reproduce the issue here locally with a typical Intel desktop.
>>
>> Another good question is why the code showed up in -next today. Code
>> going in for 3.19 is supposed to have been baking there already, and
>> it's too early to stage anything for 3.20.
>>
>> Zhang?
> 
> well, my Linux machine happened to be broken when I was in travel in Oct
> and Nov, so that I got the 3.19 material prepared a little late.
> Thus I just took some fixes and driver specific patches and plan to push
> my pull request next week.
> For this one, it had been pushed to linux-next for 3.18, but was dropped
> because of some Kconfig problem. So I thought it was safe to include
> this one for 3.19.
> sorry for bring the trouble here.

It's my bad. In the meantime, I think I have found the problem:
If the system has a video output device that does not provide a correct
_BCL, the error path from the newly added code doesn't properly set the
error return value and that caused problem. The fix is simple:

diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 5a41f89c4ce4..32880e6c8da4 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -721,7 +721,7 @@ int acpi_video_get_levels(struct acpi_device *device,
 	int i, max_level = 0, count = 0, level_ac_battery = 0;
 	union acpi_object *o;
 	struct acpi_video_device_brightness *br = NULL;
-	int result = 0;
+	int result = -EINVAL;
 	u32 value;
 
 	if (!ACPI_SUCCESS(acpi_video_device_lcd_query_levels(device->handle,
@@ -799,6 +799,7 @@ int acpi_video_get_levels(struct acpi_device *device,
 
 	br->count = count;
 	*dev_br = br;
+	result = 0;
 
 out:
 	kfree(obj);

Please let me know if you want to take this one incremental patch or an
update to the original one.

Thanks,
Aaron