<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/gpu/drm/vc4, branch v4.14.331</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>drm/vc4: Fix missing platform_unregister_drivers() call in vc4_drm_register()</title>
<updated>2022-11-25T16:36:45+00:00</updated>
<author>
<name>Yuan Can</name>
<email>yuancan@huawei.com</email>
</author>
<published>2022-11-03T01:47:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8821398f2ff5d7572181275d8ad130a47d03a499'/>
<id>8821398f2ff5d7572181275d8ad130a47d03a499</id>
<content type='text'>
[ Upstream commit cf53db768a8790fdaae2fa3a81322b080285f7e5 ]

A problem about modprobe vc4 failed is triggered with the following log
given:

 [  420.327987] Error: Driver 'vc4_hvs' is already registered, aborting...
 [  420.333904] failed to register platform driver vc4_hvs_driver [vc4]: -16
 modprobe: ERROR: could not insert 'vc4': Device or resource busy

The reason is that vc4_drm_register() returns platform_driver_register()
directly without checking its return value, if platform_driver_register()
fails, it returns without unregistering all the vc4 drivers, resulting the
vc4 can never be installed later.
A simple call graph is shown as below:

 vc4_drm_register()
   platform_register_drivers() # all vc4 drivers are registered
   platform_driver_register()
     driver_register()
       bus_add_driver()
         priv = kzalloc(...) # OOM happened
   # return without unregister drivers

Fixing this problem by checking the return value of
platform_driver_register() and do platform_unregister_drivers() if
error happened.

Fixes: c8b75bca92cb ("drm/vc4: Add KMS support for Raspberry Pi.")
Signed-off-by: Yuan Can &lt;yuancan@huawei.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20221103014705.109322-1-yuancan@huawei.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit cf53db768a8790fdaae2fa3a81322b080285f7e5 ]

A problem about modprobe vc4 failed is triggered with the following log
given:

 [  420.327987] Error: Driver 'vc4_hvs' is already registered, aborting...
 [  420.333904] failed to register platform driver vc4_hvs_driver [vc4]: -16
 modprobe: ERROR: could not insert 'vc4': Device or resource busy

The reason is that vc4_drm_register() returns platform_driver_register()
directly without checking its return value, if platform_driver_register()
fails, it returns without unregistering all the vc4 drivers, resulting the
vc4 can never be installed later.
A simple call graph is shown as below:

 vc4_drm_register()
   platform_register_drivers() # all vc4 drivers are registered
   platform_driver_register()
     driver_register()
       bus_add_driver()
         priv = kzalloc(...) # OOM happened
   # return without unregister drivers

Fixing this problem by checking the return value of
platform_driver_register() and do platform_unregister_drivers() if
error happened.

Fixes: c8b75bca92cb ("drm/vc4: Add KMS support for Raspberry Pi.")
Signed-off-by: Yuan Can &lt;yuancan@huawei.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20221103014705.109322-1-yuancan@huawei.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: vec: Fix timings for VEC modes</title>
<updated>2022-10-26T11:17:11+00:00</updated>
<author>
<name>Mateusz Kwiatkowski</name>
<email>kfyatek+publicgit@gmail.com</email>
</author>
<published>2022-08-29T13:11:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=a73b4018e981fcbd81f32db564675ecddefdc993'/>
<id>a73b4018e981fcbd81f32db564675ecddefdc993</id>
<content type='text'>
[ Upstream commit 30d7565be96b3946c18a1ce3fd538f7946839092 ]

This commit fixes vertical timings of the VEC (composite output) modes
to accurately represent the 525-line ("NTSC") and 625-line ("PAL") ITU-R
standards.

Previous timings were actually defined as 502 and 601 lines, resulting
in non-standard 62.69 Hz and 52 Hz signals being generated,
respectively.

Signed-off-by: Mateusz Kwiatkowski &lt;kfyatek+publicgit@gmail.com&gt;
Acked-by: Noralf Trønnes &lt;noralf@tronnes.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20220728-rpi-analog-tv-properties-v2-28-459522d653a7@cerno.tech
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 30d7565be96b3946c18a1ce3fd538f7946839092 ]

This commit fixes vertical timings of the VEC (composite output) modes
to accurately represent the 525-line ("NTSC") and 625-line ("PAL") ITU-R
standards.

Previous timings were actually defined as 502 and 601 lines, resulting
in non-standard 62.69 Hz and 52 Hz signals being generated,
respectively.

Signed-off-by: Mateusz Kwiatkowski &lt;kfyatek+publicgit@gmail.com&gt;
Acked-by: Noralf Trønnes &lt;noralf@tronnes.org&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20220728-rpi-analog-tv-properties-v2-28-459522d653a7@cerno.tech
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: dsi: Correct DSI divider calculations</title>
<updated>2022-08-25T09:11:17+00:00</updated>
<author>
<name>Dave Stevenson</name>
<email>dave.stevenson@raspberrypi.com</email>
</author>
<published>2022-06-13T14:47:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2a3bf0fb348db4e7e9ededd328b26b7feb340e33'/>
<id>2a3bf0fb348db4e7e9ededd328b26b7feb340e33</id>
<content type='text'>
[ Upstream commit 3b45eee87da171caa28f61240ddb5c21170cda53 ]

The divider calculations tried to find the divider just faster than the
clock requested. However if it required a divider of 7 then the for loop
aborted without handling the "error" case, and could end up with a clock
lower than requested.

The integer divider from parent PLL to DSI clock is also capable of
going up to /255, not just /7 that the driver was trying.  This allows
for slower link frequencies on the DSI bus where the resolution permits.

Correct the loop so that we always have a clock greater than requested,
and covering the whole range of dividers.

Fixes: 86c1b9eff3f2 ("drm/vc4: Adjust modes in DSI to work around the integer PLL divider.")
Signed-off-by: Dave Stevenson &lt;dave.stevenson@raspberrypi.com&gt;
Link: https://lore.kernel.org/r/20220613144800.326124-13-maxime@cerno.tech
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 3b45eee87da171caa28f61240ddb5c21170cda53 ]

The divider calculations tried to find the divider just faster than the
clock requested. However if it required a divider of 7 then the for loop
aborted without handling the "error" case, and could end up with a clock
lower than requested.

The integer divider from parent PLL to DSI clock is also capable of
going up to /255, not just /7 that the driver was trying.  This allows
for slower link frequencies on the DSI bus where the resolution permits.

Correct the loop so that we always have a clock greater than requested,
and covering the whole range of dividers.

Fixes: 86c1b9eff3f2 ("drm/vc4: Adjust modes in DSI to work around the integer PLL divider.")
Signed-off-by: Dave Stevenson &lt;dave.stevenson@raspberrypi.com&gt;
Link: https://lore.kernel.org/r/20220613144800.326124-13-maxime@cerno.tech
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: fix error code in vc4_create_object()</title>
<updated>2021-12-08T07:46:49+00:00</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2021-11-18T11:14:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=93cadd96c500cef7f638f652b46ee8dfe3a53c06'/>
<id>93cadd96c500cef7f638f652b46ee8dfe3a53c06</id>
<content type='text'>
[ Upstream commit 96c5f82ef0a145d3e56e5b26f2bf6dcd2ffeae1c ]

The -&gt;gem_create_object() functions are supposed to return NULL if there
is an error.  None of the callers expect error pointers so returing one
will lead to an Oops.  See drm_gem_vram_create(), for example.

Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20211118111416.GC1147@kili
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 96c5f82ef0a145d3e56e5b26f2bf6dcd2ffeae1c ]

The -&gt;gem_create_object() functions are supposed to return NULL if there
is an error.  None of the callers expect error pointers so returing one
will lead to an Oops.  See drm_gem_vram_create(), for example.

Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20211118111416.GC1147@kili
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: drv: Add error handding for bind</title>
<updated>2020-11-10T09:29:06+00:00</updated>
<author>
<name>Hoegeun Kwon</name>
<email>hoegeun.kwon@samsung.com</email>
</author>
<published>2020-10-27T04:14:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=25b349b4d8229209266f5dd87744bafad2306bbc'/>
<id>25b349b4d8229209266f5dd87744bafad2306bbc</id>
<content type='text'>
[ Upstream commit 9ce0af3e9573fb84c4c807183d13ea2a68271e4b ]

There is a problem that if vc4_drm bind fails, a memory leak occurs on
the drm_property_create side. Add error handding for drm_mode_config.

Signed-off-by: Hoegeun Kwon &lt;hoegeun.kwon@samsung.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20201027041442.30352-2-hoegeun.kwon@samsung.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 9ce0af3e9573fb84c4c807183d13ea2a68271e4b ]

There is a problem that if vc4_drm bind fails, a memory leak occurs on
the drm_property_create side. Add error handding for drm_mode_config.

Signed-off-by: Hoegeun Kwon &lt;hoegeun.kwon@samsung.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20201027041442.30352-2-hoegeun.kwon@samsung.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4/vc4_hdmi: fill ASoC card owner</title>
<updated>2020-10-01T11:12:50+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2020-07-01T07:39:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=18d2e3a1c0bb02bca327dffffd7fb896e91cb4f9'/>
<id>18d2e3a1c0bb02bca327dffffd7fb896e91cb4f9</id>
<content type='text'>
[ Upstream commit ec653df2a0cbc306a4bfcb0e3484d318fa779002 ]

card-&gt;owner is a required property and since commit 81033c6b584b ("ALSA:
core: Warn on empty module") a warning is issued if it is empty. Fix lack
of it. This fixes following warning observed on RaspberryPi 3B board
with ARM 32bit kernel and multi_v7_defconfig:

------------[ cut here ]------------
WARNING: CPU: 1 PID: 210 at sound/core/init.c:207 snd_card_new+0x378/0x398 [snd]
Modules linked in: vc4(+) snd_soc_core ac97_bus snd_pcm_dmaengine bluetooth snd_pcm snd_timer crc32_arm_ce raspberrypi_hwmon snd soundcore ecdh_generic ecc bcm2835_thermal phy_generic
CPU: 1 PID: 210 Comm: systemd-udevd Not tainted 5.8.0-rc1-00027-g81033c6b584b #1087
Hardware name: BCM2835
[&lt;c03113c0&gt;] (unwind_backtrace) from [&lt;c030bcb4&gt;] (show_stack+0x10/0x14)
[&lt;c030bcb4&gt;] (show_stack) from [&lt;c071cef8&gt;] (dump_stack+0xd4/0xe8)
[&lt;c071cef8&gt;] (dump_stack) from [&lt;c0345bfc&gt;] (__warn+0xdc/0xf4)
[&lt;c0345bfc&gt;] (__warn) from [&lt;c0345cc4&gt;] (warn_slowpath_fmt+0xb0/0xb8)
[&lt;c0345cc4&gt;] (warn_slowpath_fmt) from [&lt;bf02ff74&gt;] (snd_card_new+0x378/0x398 [snd])
[&lt;bf02ff74&gt;] (snd_card_new [snd]) from [&lt;bf11f0b4&gt;] (snd_soc_bind_card+0x280/0x99c [snd_soc_core])
[&lt;bf11f0b4&gt;] (snd_soc_bind_card [snd_soc_core]) from [&lt;bf12f000&gt;] (devm_snd_soc_register_card+0x34/0x6c [snd_soc_core])
[&lt;bf12f000&gt;] (devm_snd_soc_register_card [snd_soc_core]) from [&lt;bf165654&gt;] (vc4_hdmi_bind+0x43c/0x5f4 [vc4])
[&lt;bf165654&gt;] (vc4_hdmi_bind [vc4]) from [&lt;c09d660c&gt;] (component_bind_all+0xec/0x24c)
[&lt;c09d660c&gt;] (component_bind_all) from [&lt;bf15c44c&gt;] (vc4_drm_bind+0xd4/0x174 [vc4])
[&lt;bf15c44c&gt;] (vc4_drm_bind [vc4]) from [&lt;c09d6ac0&gt;] (try_to_bring_up_master+0x160/0x1b0)
[&lt;c09d6ac0&gt;] (try_to_bring_up_master) from [&lt;c09d6f38&gt;] (component_master_add_with_match+0xd0/0x104)
[&lt;c09d6f38&gt;] (component_master_add_with_match) from [&lt;bf15c588&gt;] (vc4_platform_drm_probe+0x9c/0xbc [vc4])
[&lt;bf15c588&gt;] (vc4_platform_drm_probe [vc4]) from [&lt;c09df740&gt;] (platform_drv_probe+0x6c/0xa4)
[&lt;c09df740&gt;] (platform_drv_probe) from [&lt;c09dd6f0&gt;] (really_probe+0x210/0x350)
[&lt;c09dd6f0&gt;] (really_probe) from [&lt;c09dd940&gt;] (driver_probe_device+0x5c/0xb4)
[&lt;c09dd940&gt;] (driver_probe_device) from [&lt;c09ddb38&gt;] (device_driver_attach+0x58/0x60)
[&lt;c09ddb38&gt;] (device_driver_attach) from [&lt;c09ddbc0&gt;] (__driver_attach+0x80/0xbc)
[&lt;c09ddbc0&gt;] (__driver_attach) from [&lt;c09db820&gt;] (bus_for_each_dev+0x68/0xb4)
[&lt;c09db820&gt;] (bus_for_each_dev) from [&lt;c09dc9f8&gt;] (bus_add_driver+0x130/0x1e8)
[&lt;c09dc9f8&gt;] (bus_add_driver) from [&lt;c09de648&gt;] (driver_register+0x78/0x110)
[&lt;c09de648&gt;] (driver_register) from [&lt;c0302038&gt;] (do_one_initcall+0x50/0x220)
[&lt;c0302038&gt;] (do_one_initcall) from [&lt;c03db544&gt;] (do_init_module+0x60/0x210)
[&lt;c03db544&gt;] (do_init_module) from [&lt;c03da4f8&gt;] (load_module+0x1e34/0x2338)
[&lt;c03da4f8&gt;] (load_module) from [&lt;c03dac00&gt;] (sys_finit_module+0xac/0xbc)
[&lt;c03dac00&gt;] (sys_finit_module) from [&lt;c03000c0&gt;] (ret_fast_syscall+0x0/0x54)
Exception stack(0xeded9fa8 to 0xeded9ff0)
...
---[ end trace 6414689569c2bc08 ]---

Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support")
Suggested-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Tested-by: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200701073949.28941-1-m.szyprowski@samsung.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ec653df2a0cbc306a4bfcb0e3484d318fa779002 ]

card-&gt;owner is a required property and since commit 81033c6b584b ("ALSA:
core: Warn on empty module") a warning is issued if it is empty. Fix lack
of it. This fixes following warning observed on RaspberryPi 3B board
with ARM 32bit kernel and multi_v7_defconfig:

------------[ cut here ]------------
WARNING: CPU: 1 PID: 210 at sound/core/init.c:207 snd_card_new+0x378/0x398 [snd]
Modules linked in: vc4(+) snd_soc_core ac97_bus snd_pcm_dmaengine bluetooth snd_pcm snd_timer crc32_arm_ce raspberrypi_hwmon snd soundcore ecdh_generic ecc bcm2835_thermal phy_generic
CPU: 1 PID: 210 Comm: systemd-udevd Not tainted 5.8.0-rc1-00027-g81033c6b584b #1087
Hardware name: BCM2835
[&lt;c03113c0&gt;] (unwind_backtrace) from [&lt;c030bcb4&gt;] (show_stack+0x10/0x14)
[&lt;c030bcb4&gt;] (show_stack) from [&lt;c071cef8&gt;] (dump_stack+0xd4/0xe8)
[&lt;c071cef8&gt;] (dump_stack) from [&lt;c0345bfc&gt;] (__warn+0xdc/0xf4)
[&lt;c0345bfc&gt;] (__warn) from [&lt;c0345cc4&gt;] (warn_slowpath_fmt+0xb0/0xb8)
[&lt;c0345cc4&gt;] (warn_slowpath_fmt) from [&lt;bf02ff74&gt;] (snd_card_new+0x378/0x398 [snd])
[&lt;bf02ff74&gt;] (snd_card_new [snd]) from [&lt;bf11f0b4&gt;] (snd_soc_bind_card+0x280/0x99c [snd_soc_core])
[&lt;bf11f0b4&gt;] (snd_soc_bind_card [snd_soc_core]) from [&lt;bf12f000&gt;] (devm_snd_soc_register_card+0x34/0x6c [snd_soc_core])
[&lt;bf12f000&gt;] (devm_snd_soc_register_card [snd_soc_core]) from [&lt;bf165654&gt;] (vc4_hdmi_bind+0x43c/0x5f4 [vc4])
[&lt;bf165654&gt;] (vc4_hdmi_bind [vc4]) from [&lt;c09d660c&gt;] (component_bind_all+0xec/0x24c)
[&lt;c09d660c&gt;] (component_bind_all) from [&lt;bf15c44c&gt;] (vc4_drm_bind+0xd4/0x174 [vc4])
[&lt;bf15c44c&gt;] (vc4_drm_bind [vc4]) from [&lt;c09d6ac0&gt;] (try_to_bring_up_master+0x160/0x1b0)
[&lt;c09d6ac0&gt;] (try_to_bring_up_master) from [&lt;c09d6f38&gt;] (component_master_add_with_match+0xd0/0x104)
[&lt;c09d6f38&gt;] (component_master_add_with_match) from [&lt;bf15c588&gt;] (vc4_platform_drm_probe+0x9c/0xbc [vc4])
[&lt;bf15c588&gt;] (vc4_platform_drm_probe [vc4]) from [&lt;c09df740&gt;] (platform_drv_probe+0x6c/0xa4)
[&lt;c09df740&gt;] (platform_drv_probe) from [&lt;c09dd6f0&gt;] (really_probe+0x210/0x350)
[&lt;c09dd6f0&gt;] (really_probe) from [&lt;c09dd940&gt;] (driver_probe_device+0x5c/0xb4)
[&lt;c09dd940&gt;] (driver_probe_device) from [&lt;c09ddb38&gt;] (device_driver_attach+0x58/0x60)
[&lt;c09ddb38&gt;] (device_driver_attach) from [&lt;c09ddbc0&gt;] (__driver_attach+0x80/0xbc)
[&lt;c09ddbc0&gt;] (__driver_attach) from [&lt;c09db820&gt;] (bus_for_each_dev+0x68/0xb4)
[&lt;c09db820&gt;] (bus_for_each_dev) from [&lt;c09dc9f8&gt;] (bus_add_driver+0x130/0x1e8)
[&lt;c09dc9f8&gt;] (bus_add_driver) from [&lt;c09de648&gt;] (driver_register+0x78/0x110)
[&lt;c09de648&gt;] (driver_register) from [&lt;c0302038&gt;] (do_one_initcall+0x50/0x220)
[&lt;c0302038&gt;] (do_one_initcall) from [&lt;c03db544&gt;] (do_init_module+0x60/0x210)
[&lt;c03db544&gt;] (do_init_module) from [&lt;c03da4f8&gt;] (load_module+0x1e34/0x2338)
[&lt;c03da4f8&gt;] (load_module) from [&lt;c03dac00&gt;] (sys_finit_module+0xac/0xbc)
[&lt;c03dac00&gt;] (sys_finit_module) from [&lt;c03000c0&gt;] (ret_fast_syscall+0x0/0x54)
Exception stack(0xeded9fa8 to 0xeded9ff0)
...
---[ end trace 6414689569c2bc08 ]---

Fixes: bb7d78568814 ("drm/vc4: Add HDMI audio support")
Suggested-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Tested-by: Stefan Wahren &lt;stefan.wahren@i2se.com&gt;
Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20200701073949.28941-1-m.szyprowski@samsung.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: Fix compilation error reported by kbuild test bot</title>
<updated>2019-05-02T07:40:30+00:00</updated>
<author>
<name>Maarten Lankhorst</name>
<email>maarten.lankhorst@linux.intel.com</email>
</author>
<published>2019-04-24T15:06:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c13229b3003e142971a0551fbac74fd6b1c62951'/>
<id>c13229b3003e142971a0551fbac74fd6b1c62951</id>
<content type='text'>
commit 462ce5d963f18b71c63f6b7730a35a2ee5273540 upstream.

A pointer to crtc was missing, resulting in the following build error:
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse: sparse: incorrect type in argument 1 (different base types)
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    expected struct drm_crtc *crtc
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    got struct drm_crtc_state *state
drivers/gpu/drm/vc4/vc4_crtc.c:1045:39: sparse: sparse: not enough arguments for function vc4_crtc_destroy_state

Signed-off-by: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Reported-by: kbuild test robot &lt;lkp@intel.com&gt;
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/2b6ed5e6-81b0-4276-8860-870b54ca3262@linux.intel.com
Fixes: d08106796a78 ("drm/vc4: Fix memory leak during gpu reset.")
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Acked-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 462ce5d963f18b71c63f6b7730a35a2ee5273540 upstream.

A pointer to crtc was missing, resulting in the following build error:
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse: sparse: incorrect type in argument 1 (different base types)
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    expected struct drm_crtc *crtc
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    got struct drm_crtc_state *state
drivers/gpu/drm/vc4/vc4_crtc.c:1045:39: sparse: sparse: not enough arguments for function vc4_crtc_destroy_state

Signed-off-by: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Reported-by: kbuild test robot &lt;lkp@intel.com&gt;
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/2b6ed5e6-81b0-4276-8860-870b54ca3262@linux.intel.com
Fixes: d08106796a78 ("drm/vc4: Fix memory leak during gpu reset.")
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Acked-by: Daniel Vetter &lt;daniel.vetter@ffwll.ch&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: Fix memory leak during gpu reset.</title>
<updated>2019-05-02T07:40:30+00:00</updated>
<author>
<name>Maarten Lankhorst</name>
<email>maarten.lankhorst@linux.intel.com</email>
</author>
<published>2019-03-01T12:56:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8bf63442f9ca4694f4ab28e62e3b9bc84cfffa7d'/>
<id>8bf63442f9ca4694f4ab28e62e3b9bc84cfffa7d</id>
<content type='text'>
commit d08106796a78a4273e39e1bbdf538dc4334b2635 upstream.

__drm_atomic_helper_crtc_destroy_state does not free memory, it only
cleans it up. Fix this by calling the functions own destroy function.

Fixes: 6d6e50039187 ("drm/vc4: Allocate the right amount of space for boot-time CRTC state.")
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Signed-off-by: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20190301125627.7285-2-maarten.lankhorst@linux.intel.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit d08106796a78a4273e39e1bbdf538dc4334b2635 upstream.

__drm_atomic_helper_crtc_destroy_state does not free memory, it only
cleans it up. Fix this by calling the functions own destroy function.

Fixes: 6d6e50039187 ("drm/vc4: Allocate the right amount of space for boot-time CRTC state.")
Cc: Eric Anholt &lt;eric@anholt.net&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v4.6+
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Signed-off-by: Maarten Lankhorst &lt;maarten.lankhorst@linux.intel.com&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20190301125627.7285-2-maarten.lankhorst@linux.intel.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: -&gt;x_scaling[1] should never be set to VC4_SCALING_NONE</title>
<updated>2019-02-12T18:45:57+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@bootlin.com</email>
</author>
<published>2018-11-09T10:26:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=326f64c25bd4472a6ae62e77b59d9bd4a0fd840f'/>
<id>326f64c25bd4472a6ae62e77b59d9bd4a0fd840f</id>
<content type='text'>
[ Upstream commit 0560054da5673b25d56bea6c57c8d069673af73b ]

For the YUV conversion to work properly, -&gt;x_scaling[1] should never
be set to VC4_SCALING_NONE, but vc4_get_scaling_mode() might return
VC4_SCALING_NONE if the horizontal scaling ratio exactly matches the
horizontal subsampling factor. Add a test to turn VC4_SCALING_NONE
into VC4_SCALING_PPF when that happens.

The old -&gt;x_scaling[0] adjustment is dropped as I couldn't find any
mention to this constraint in the spec and it's proven to be
unnecessary (I tested various multi-planar YUV formats with scaling
disabled, and all of them worked fine without this adjustment).

Fixes: fc04023fafec ("drm/vc4: Add support for YUV planes.")
Signed-off-by: Boris Brezillon &lt;boris.brezillon@bootlin.com&gt;
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20181109102633.32603-1-boris.brezillon@bootlin.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0560054da5673b25d56bea6c57c8d069673af73b ]

For the YUV conversion to work properly, -&gt;x_scaling[1] should never
be set to VC4_SCALING_NONE, but vc4_get_scaling_mode() might return
VC4_SCALING_NONE if the horizontal scaling ratio exactly matches the
horizontal subsampling factor. Add a test to turn VC4_SCALING_NONE
into VC4_SCALING_PPF when that happens.

The old -&gt;x_scaling[0] adjustment is dropped as I couldn't find any
mention to this constraint in the spec and it's proven to be
unnecessary (I tested various multi-planar YUV formats with scaling
disabled, and all of them worked fine without this adjustment).

Fixes: fc04023fafec ("drm/vc4: Add support for YUV planes.")
Signed-off-by: Boris Brezillon &lt;boris.brezillon@bootlin.com&gt;
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20181109102633.32603-1-boris.brezillon@bootlin.com
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drm/vc4: Set -&gt;is_yuv to false when num_planes == 1</title>
<updated>2019-01-13T09:01:07+00:00</updated>
<author>
<name>Boris Brezillon</name>
<email>boris.brezillon@bootlin.com</email>
</author>
<published>2018-10-09T13:24:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e956139f32412160616d52f5f630da68a40e4c47'/>
<id>e956139f32412160616d52f5f630da68a40e4c47</id>
<content type='text'>
commit 2b02a05bdc3a62d36e0d0b015351897109e25991 upstream.

When vc4_plane_state is duplicated -&gt;is_yuv is left assigned to its
previous value, and we never set it back to false when switching to
a non-YUV format.

Fix that by setting -&gt;is_yuv to false in the 'num_planes == 1' branch
of the vc4_plane_setup_clipping_and_scaling() function.

Fixes: fc04023fafecf ("drm/vc4: Add support for YUV planes.")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@bootlin.com&gt;
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20181009132446.21960-1-boris.brezillon@bootlin.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 2b02a05bdc3a62d36e0d0b015351897109e25991 upstream.

When vc4_plane_state is duplicated -&gt;is_yuv is left assigned to its
previous value, and we never set it back to false when switching to
a non-YUV format.

Fix that by setting -&gt;is_yuv to false in the 'num_planes == 1' branch
of the vc4_plane_setup_clipping_and_scaling() function.

Fixes: fc04023fafecf ("drm/vc4: Add support for YUV planes.")
Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Boris Brezillon &lt;boris.brezillon@bootlin.com&gt;
Reviewed-by: Eric Anholt &lt;eric@anholt.net&gt;
Link: https://patchwork.freedesktop.org/patch/msgid/20181009132446.21960-1-boris.brezillon@bootlin.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
