Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Boundary imx 5.4.x 2.1.0 lt8912 drm #64

Open
wants to merge 3 commits into
base: boundary-imx_5.4.x_2.1.0
Choose a base branch
from

Conversation

grassead
Copy link

Hello,

I just write a new driver for the lt8912 (mipi_dsi to hdmi converter) used on the DB_DSIHD board.
This new driver acts as a DRM bridge to be used with libdrm. (For example you can now change the display resolution at runtime).

I wrote a new driver because I don't want to break the existing.

Thanks,
Have a good day.

Adrien Grassein added 3 commits November 17, 2020 14:25
lt8912 acts now as a true drm bridge.
We can now change HDMI resolution at runtime by using
libdrm. (Tested on Yocto)

Signed-off-by: Adrien Grassein <adrien.grassein@smile.fr>
Create a special dts for lt8912 drm driver.
The new lt8912 driver broke the existing, so separate
its definition into a new dts file.

Signed-off-by: Adrien Grassein <adrien.grassein@smile.fr>
Signed-off-by: Adrien Grassein <adrien.grassein@smile.fr>
Copy link
Member

@gibsson gibsson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Adrien
Thanks for this driver. Will you upstream it? I'd rather wait for the driver to hit upstream tree to integrate it.
Here are a couple of aesthetics changes remarks to take into account before submission upstream.
Regards,
Gary

select REGMAP_I2C
select DRM_PANEL
---help---
Lontium LT8912 mipi_dsi to HDMI out bridge driver.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/mipi_dsi/MIPI-DSI/

@@ -0,0 +1,809 @@
/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use SPDX intead

* GNU General Public License for more details.
*
*/
#define DEBUG
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't be defined.

@grassead
Copy link
Author

Hi Gary, is nitrogen8mm boards supporting upstream kernel? I think I have to test it before upstreaming it.

Thanks,

@gibsson
Copy link
Member

gibsson commented Nov 17, 2020

No it is not. But the Nitrogen8M is, I believe you do have that platform too right?

@grassead
Copy link
Author

Yes I have one of it.
So I will try to test it on nitrogen8m platform and upstream my driver.

Are you working on upstreaming nitrogen8mm ?
Maybe I can also add support for nitrogen8mm on upstream.

Thanks,

@gibsson
Copy link
Member

gibsson commented Nov 17, 2020

At this time I unfortunately do not have the time to upstream the platform no.
If you do it, please make sure to CC me so I can review and test it. Thanks!

@grassead
Copy link
Author

Ok, thanks for your time,

Have a nice day.

@grassead
Copy link
Author

Just a last question, which defconfig should I use on the master branch of the kernel (I found the dtb but not the defconfig).

Thanks,

gibsson pushed a commit that referenced this pull request Mar 14, 2022
commit 8b59b0a upstream.

arm32 uses software to simulate the instruction replaced
by kprobe. some instructions may be simulated by constructing
assembly functions. therefore, before executing instruction
simulation, it is necessary to construct assembly function
execution environment in C language through binding registers.
after kasan is enabled, the register binding relationship will
be destroyed, resulting in instruction simulation errors and
causing kernel panic.

the kprobe emulate instruction function is distributed in three
files: actions-common.c actions-arm.c actions-thumb.c, so disable
KASAN when compiling these files.

for example, use kprobe insert on cap_capable+20 after kasan
enabled, the cap_capable assembly code is as follows:
<cap_capable>:
e92d47f0	push	{r4, r5, r6, r7, r8, r9, sl, lr}
e1a05000	mov	r5, r0
e280006c	add	r0, r0, #108    ; 0x6c
e1a04001	mov	r4, r1
e1a06002	mov	r6, r2
e59fa090	ldr	sl, [pc, #144]  ;
ebfc7bf8	bl	c03aa4b4 <__asan_load4>
e595706c	ldr	r7, [r5, #108]  ; 0x6c
e2859014	add	r9, r5, #20
......
The emulate_ldr assembly code after enabling kasan is as follows:
c06f1384 <emulate_ldr>:
e92d47f0	push	{r4, r5, r6, r7, r8, r9, sl, lr}
e282803c	add	r8, r2, #60     ; 0x3c
e1a05000	mov	r5, r0
e7e37855	ubfx	r7, r5, #16, #4
e1a00008	mov	r0, r8
e1a09001	mov	r9, r1
e1a04002	mov	r4, r2
ebf35462	bl	c03c6530 <__asan_load4>
e357000f	cmp	r7, #15
e7e36655	ubfx	r6, r5, #12, #4
e205a00f	and	sl, r5, #15
0a000001	beq	c06f13bc <emulate_ldr+0x38>
e0840107	add	r0, r4, r7, lsl #2
ebf3545c	bl	c03c6530 <__asan_load4>
e084010a	add	r0, r4, sl, lsl #2
ebf3545a	bl	c03c6530 <__asan_load4>
e2890010	add	r0, r9, #16
ebf35458	bl	c03c6530 <__asan_load4>
e5990010	ldr	r0, [r9, #16]
e12fff30	blx	r0
e356000f	cm	r6, #15
1a000014	bne	c06f1430 <emulate_ldr+0xac>
e1a06000	mov	r6, r0
e2840040	add	r0, r4, #64     ; 0x40
......

when running in emulate_ldr to simulate the ldr instruction, panic
occurred, and the log is as follows:
Unable to handle kernel NULL pointer dereference at virtual address
00000090
pgd = ecb46400
[00000090] *pgd=2e0fa003, *pmd=00000000
Internal error: Oops: 206 [#1] SMP ARM
PC is at cap_capable+0x14/0xb0
LR is at emulate_ldr+0x50/0xc0
psr: 600d0293 sp : ecd63af8  ip : 00000004  fp : c0a7c30c
r10: 00000000  r9 : c30897f4  r8 : ecd63cd4
r7 : 0000000f  r6 : 0000000a  r5 : e59fa090  r4 : ecd63c98
r3 : c06ae294  r2 : 00000000  r1 : b7611300  r0 : bf4ec008
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 32c5387d  Table: 2d546400  DAC: 55555555
Process bash (pid: 1643, stack limit = 0xecd60190)
(cap_capable) from (kprobe_handler+0x218/0x340)
(kprobe_handler) from (kprobe_trap_handler+0x24/0x48)
(kprobe_trap_handler) from (do_undefinstr+0x13c/0x364)
(do_undefinstr) from (__und_svc_finish+0x0/0x30)
(__und_svc_finish) from (cap_capable+0x18/0xb0)
(cap_capable) from (cap_vm_enough_memory+0x38/0x48)
(cap_vm_enough_memory) from
(security_vm_enough_memory_mm+0x48/0x6c)
(security_vm_enough_memory_mm) from
(copy_process.constprop.5+0x16b4/0x25c8)
(copy_process.constprop.5) from (_do_fork+0xe8/0x55c)
(_do_fork) from (SyS_clone+0x1c/0x24)
(SyS_clone) from (__sys_trace_return+0x0/0x10)
Code: 0050a0e1 6c0080e2 0140a0e1 0260a0e1 (f801f0e7)

Fixes: 35aa1df ("ARM kprobes: instruction single-stepping support")
Fixes: 4210157 ("ARM: 9017/2: Enable KASan for ARM")
Signed-off-by: huangshaobo <huangshaobo6@huawei.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants