diff mbox

drm/exynos: resolve infinite loop issue on multi-platform

Message ID 1415269965-427-1-git-send-email-inki.dae@samsung.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Inki Dae Nov. 6, 2014, 10:32 a.m. UTC
This patch resolves temporarily infinite loop issue incurred
when Exynos drm driver is enabled and multi-platform kernel
is used by registering Exynos drm device object only in case
of Exynos SoC. So this patch will be replaced with more generic
way later.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
---
 drivers/gpu/drm/exynos/exynos_drm_drv.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Krzysztof Kozlowski Nov. 6, 2014, 12:11 p.m. UTC | #1
On 06.11.2014 11:32, Inki Dae wrote:
> This patch resolves temporarily infinite loop issue incurred
> when Exynos drm driver is enabled and multi-platform kernel
> is used by registering Exynos drm device object only in case
> of Exynos SoC. So this patch will be replaced with more generic
> way later.

Does not help for Rinato board.

On Rinato:
-----------------------
Failed to find PMU node
Registering SWP/SWPB emulation handler
mmc0: BKOPS_EN bit is not set
mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 100000000Hz,
actual 100000000HZ div = 0)
exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
mmc0: new HS200 MMC card at address 0001
platform exynos-drm: Driver exynos-drm requests probe deferral
mmcblk0: mmc0:0001 F5X5MA 3.64 GiB
mmcblk0boot0: mmc0:0001 F5X5MA partition 1 4.00 MiB
exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
mmcblk0boot1: mmc0:0001 F5X5MA partition 2 4.00 MiB
platform exynos-drm: Driver exynos-drm requests probe deferral
mmcblk0rpmb: mmc0:0001 F5X5MA partition 3 512 KiB
exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
platform exynos-drm: Driver exynos-drm requests probe deferral
 mmcblk0: p1 p2 p3 p4 p5 p6 p7
exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
platform exynos-drm: Driver exynos-drm requests probe deferral
exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
platform exynos-drm: Driver exynos-drm requests probe deferral

and so on...
-----------------------

I do not know whether it is related but Trats2 board cannot boot due to
lockup after:
[drm] Initialized drm 1.1.0 20060810
(with or without the patch)
https://lkml.org/lkml/2014/11/6/125

Best regards,
Krzysztof

> 
> Signed-off-by: Inki Dae <inki.dae@samsung.com>
> ---
>  drivers/gpu/drm/exynos/exynos_drm_drv.c |   12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index 443a206..ecc86aa 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -734,6 +734,18 @@ static int exynos_drm_init(void)
>  {
>  	int ret;
>  
> +	/*
> +	 * Register device object only in case of Exynos SoC.
> +	 *
> +	 * Below codes resolves temporarily infinite loop issue incurred
> +	 * by Exynos drm driver when using multi-platform kernel.
> +	 * So these codes will be replaced with more generic way later.
> +	 */
> +	if (!of_machine_is_compatible("samsung,exynos3") &&
> +			!of_machine_is_compatible("samsung,exynos4") &&
> +			!of_machine_is_compatible("samsung,exynos5"))
> +		return -ENODEV;
> +
>  	exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1,
>  								NULL, 0);
>  	if (IS_ERR(exynos_drm_pdev))
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Inki Dae Nov. 6, 2014, 12:32 p.m. UTC | #2
On 2014? 11? 06? 21:11, Krzysztof Koz?owski wrote:
> On 06.11.2014 11:32, Inki Dae wrote:
>> This patch resolves temporarily infinite loop issue incurred
>> when Exynos drm driver is enabled and multi-platform kernel
>> is used by registering Exynos drm device object only in case
>> of Exynos SoC. So this patch will be replaced with more generic
>> way later.
> 
> Does not help for Rinato board.
> 
> On Rinato:
> -----------------------
> Failed to find PMU node
> Registering SWP/SWPB emulation handler
> mmc0: BKOPS_EN bit is not set
> mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 100000000Hz,
> actual 100000000HZ div = 0)
> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> mmc0: new HS200 MMC card at address 0001
> platform exynos-drm: Driver exynos-drm requests probe deferral
> mmcblk0: mmc0:0001 F5X5MA 3.64 GiB
> mmcblk0boot0: mmc0:0001 F5X5MA partition 1 4.00 MiB
> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> mmcblk0boot1: mmc0:0001 F5X5MA partition 2 4.00 MiB
> platform exynos-drm: Driver exynos-drm requests probe deferral
> mmcblk0rpmb: mmc0:0001 F5X5MA partition 3 512 KiB
> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> platform exynos-drm: Driver exynos-drm requests probe deferral
>  mmcblk0: p1 p2 p3 p4 p5 p6 p7
> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> platform exynos-drm: Driver exynos-drm requests probe deferral
> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> platform exynos-drm: Driver exynos-drm requests probe deferral
> 
> and so on...
> -----------------------

Can you show me compatible string placed on top of exynos3250-rinato.dts
file? If the compatible has "samsung,exynos3" it should be no problem
with this patch. And the rinato dts file we posted to mainline has the
compatible string.

> 
> I do not know whether it is related but Trats2 board cannot boot due to
> lockup after:
> [drm] Initialized drm 1.1.0 20060810
> (with or without the patch)
> https://lkml.org/lkml/2014/11/6/125
> 

hmm... it's strange because my trats2 board works well with this patch.
Which kernel did you test? And how can I reproduce above lockup?

Thanks,
Inki Dae

> Best regards,
> Krzysztof
> 
>>
>> Signed-off-by: Inki Dae <inki.dae@samsung.com>
>> ---
>>  drivers/gpu/drm/exynos/exynos_drm_drv.c |   12 ++++++++++++
>>  1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> index 443a206..ecc86aa 100644
>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>> @@ -734,6 +734,18 @@ static int exynos_drm_init(void)
>>  {
>>  	int ret;
>>  
>> +	/*
>> +	 * Register device object only in case of Exynos SoC.
>> +	 *
>> +	 * Below codes resolves temporarily infinite loop issue incurred
>> +	 * by Exynos drm driver when using multi-platform kernel.
>> +	 * So these codes will be replaced with more generic way later.
>> +	 */
>> +	if (!of_machine_is_compatible("samsung,exynos3") &&
>> +			!of_machine_is_compatible("samsung,exynos4") &&
>> +			!of_machine_is_compatible("samsung,exynos5"))
>> +		return -ENODEV;
>> +
>>  	exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1,
>>  								NULL, 0);
>>  	if (IS_ERR(exynos_drm_pdev))
>>
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Krzysztof Kozlowski Nov. 6, 2014, 1 p.m. UTC | #3
On czw, 2014-11-06 at 21:32 +0900, Inki Dae wrote:
> On 2014? 11? 06? 21:11, Krzysztof Koz?owski wrote:
> > On 06.11.2014 11:32, Inki Dae wrote:
> >> This patch resolves temporarily infinite loop issue incurred
> >> when Exynos drm driver is enabled and multi-platform kernel
> >> is used by registering Exynos drm device object only in case
> >> of Exynos SoC. So this patch will be replaced with more generic
> >> way later.
> > 
> > Does not help for Rinato board.
> > 
> > On Rinato:
> > -----------------------
> > Failed to find PMU node
> > Registering SWP/SWPB emulation handler
> > mmc0: BKOPS_EN bit is not set
> > mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 100000000Hz,
> > actual 100000000HZ div = 0)
> > exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> > mmc0: new HS200 MMC card at address 0001
> > platform exynos-drm: Driver exynos-drm requests probe deferral
> > mmcblk0: mmc0:0001 F5X5MA 3.64 GiB
> > mmcblk0boot0: mmc0:0001 F5X5MA partition 1 4.00 MiB
> > exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> > mmcblk0boot1: mmc0:0001 F5X5MA partition 2 4.00 MiB
> > platform exynos-drm: Driver exynos-drm requests probe deferral
> > mmcblk0rpmb: mmc0:0001 F5X5MA partition 3 512 KiB
> > exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> > platform exynos-drm: Driver exynos-drm requests probe deferral
> >  mmcblk0: p1 p2 p3 p4 p5 p6 p7
> > exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> > platform exynos-drm: Driver exynos-drm requests probe deferral
> > exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
> > platform exynos-drm: Driver exynos-drm requests probe deferral
> > 
> > and so on...
> > -----------------------
> 
> Can you show me compatible string placed on top of exynos3250-rinato.dts
> file? If the compatible has "samsung,exynos3" it should be no problem
> with this patch. And the rinato dts file we posted to mainline has the
> compatible string.

model = "Samsung Rinato board";
compatible = "samsung,rinato-rev05", "samsung,exynos3250",
"samsung,exynos3";

The problem is "samsung,exynos3" because the patch solves only issue on
multiplatform kernel run on non-exynos board. It does not solve the
problem on exynos board with DRM enabled but without all drivers.


> > 
> > I do not know whether it is related but Trats2 board cannot boot due to
> > lockup after:
> > [drm] Initialized drm 1.1.0 20060810
> > (with or without the patch)
> > https://lkml.org/lkml/2014/11/6/125
> > 
> 
> hmm... it's strange because my trats2 board works well with this patch.
> Which kernel did you test? And how can I reproduce above lockup?

Just boot up next-2014110{456} with kernel config attached in mentioned
email.

Best regards,
Krzysztof



--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Inki Dae Nov. 6, 2014, 1:44 p.m. UTC | #4
On 2014? 11? 06? 22:00, Krzysztof Kozlowski wrote:
> On czw, 2014-11-06 at 21:32 +0900, Inki Dae wrote:
>> On 2014? 11? 06? 21:11, Krzysztof Koz?owski wrote:
>>> On 06.11.2014 11:32, Inki Dae wrote:
>>>> This patch resolves temporarily infinite loop issue incurred
>>>> when Exynos drm driver is enabled and multi-platform kernel
>>>> is used by registering Exynos drm device object only in case
>>>> of Exynos SoC. So this patch will be replaced with more generic
>>>> way later.
>>>
>>> Does not help for Rinato board.
>>>
>>> On Rinato:
>>> -----------------------
>>> Failed to find PMU node
>>> Registering SWP/SWPB emulation handler
>>> mmc0: BKOPS_EN bit is not set
>>> mmc_host mmc0: Bus speed (slot 0) = 100000000Hz (slot req 100000000Hz,
>>> actual 100000000HZ div = 0)
>>> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>>> mmc0: new HS200 MMC card at address 0001
>>> platform exynos-drm: Driver exynos-drm requests probe deferral
>>> mmcblk0: mmc0:0001 F5X5MA 3.64 GiB
>>> mmcblk0boot0: mmc0:0001 F5X5MA partition 1 4.00 MiB
>>> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>>> mmcblk0boot1: mmc0:0001 F5X5MA partition 2 4.00 MiB
>>> platform exynos-drm: Driver exynos-drm requests probe deferral
>>> mmcblk0rpmb: mmc0:0001 F5X5MA partition 3 512 KiB
>>> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>>> platform exynos-drm: Driver exynos-drm requests probe deferral
>>>  mmcblk0: p1 p2 p3 p4 p5 p6 p7
>>> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>>> platform exynos-drm: Driver exynos-drm requests probe deferral
>>> exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
>>> platform exynos-drm: Driver exynos-drm requests probe deferral
>>>
>>> and so on...
>>> -----------------------
>>
>> Can you show me compatible string placed on top of exynos3250-rinato.dts
>> file? If the compatible has "samsung,exynos3" it should be no problem
>> with this patch. And the rinato dts file we posted to mainline has the
>> compatible string.
> 
> model = "Samsung Rinato board";
> compatible = "samsung,rinato-rev05", "samsung,exynos3250",
> "samsung,exynos3";
> 
> The problem is "samsung,exynos3" because the patch solves only issue on
> multiplatform kernel run on non-exynos board. It does not solve the
> problem on exynos board with DRM enabled but without all drivers.
> 

Right, if you disabled all kms drivers and enabled only non-kms drivers
then the infinite loop will occur. However, this should be handled in
separated issue because without this patch, same issue will occur.

> 
>>>
>>> I do not know whether it is related but Trats2 board cannot boot due to
>>> lockup after:
>>> [drm] Initialized drm 1.1.0 20060810
>>> (with or without the patch)
>>> https://lkml.org/lkml/2014/11/6/125
>>>
>>
>> hmm... it's strange because my trats2 board works well with this patch.
>> Which kernel did you test? And how can I reproduce above lockup?
> 
> Just boot up next-2014110{456} with kernel config attached in mentioned
> email.

It looks like other issue regardless of this patch. If the board dts
file includes compatible string that Exynos drm driver is checking then
Exynos drm driver has no any change - having same logic.

Thanks,
Inki Dae

> 
> Best regards,
> Krzysztof
> 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

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

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 443a206..ecc86aa 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -734,6 +734,18 @@  static int exynos_drm_init(void)
 {
 	int ret;
 
+	/*
+	 * Register device object only in case of Exynos SoC.
+	 *
+	 * Below codes resolves temporarily infinite loop issue incurred
+	 * by Exynos drm driver when using multi-platform kernel.
+	 * So these codes will be replaced with more generic way later.
+	 */
+	if (!of_machine_is_compatible("samsung,exynos3") &&
+			!of_machine_is_compatible("samsung,exynos4") &&
+			!of_machine_is_compatible("samsung,exynos5"))
+		return -ENODEV;
+
 	exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1,
 								NULL, 0);
 	if (IS_ERR(exynos_drm_pdev))