Hello JerryChang,
I will contact you again as the above symptoms have not been resolved.
When registering the driver, two null conflicts occurred as follows.
I checked by putting the pr_info() function for debugging in the v4l2_ctrl_handler_setup function.
Looking at the attached dmesg log record below, it was confirmed that the value of the master->ncontrols variable was applied as 9762a300 or ffffffff value different from 1 for the 6th read value.
Where can I look to fix it?
int v4l2_ctrl_handler_setup(struct v4l2_ctrl_handler *hdl)
{
struct v4l2_ctrl *ctrl;
int ret = 0;
if (hdl == NULL)
return 0;
mutex_lock(hdl->lock);
list_for_each_entry(ctrl, &hdl->ctrls, node)
ctrl->done = false;
pr_info("%s: v4l2 - %x \n",__func__, ctrl->done);
list_for_each_entry(ctrl, &hdl->ctrls, node) {
struct v4l2_ctrl *master = ctrl->cluster[0];
int i;
/* Skip if this control was already handled by a cluster. */
/* Skip button controls and read-only controls. */
if (ctrl->done || ctrl->type == V4L2_CTRL_TYPE_BUTTON ||
(ctrl->flags & V4L2_CTRL_FLAG_READ_ONLY))
continue;
pr_info("%s: v4l2 ing - %x \n",__func__,master->ncontrols);
for (i = 0; i < master->ncontrols; i++) {
if (master->cluster[i]) {
cur_to_new(master->cluster[i]);
master->cluster[i]->is_new = 1;
master->cluster[i]->done = true;
}
}
ret = call_op(master, s_ctrl);
if (ret)
break;
}
pr_info("%s: v4l2 end \n",__func__);
mutex_unlock(hdl->lock);
return ret;
}
case 1. kernel crash dmesg log
[ 186.829910] s5k2x5 2-0010: s5k2x5 enter_parse_dt
[ 186.830390] s5k2x5 2-0010: tegracam sensor driver:s5k2x5_v2.0.6
[ 186.846042] s5k2x5 2-0010: tegracam_ctrl_handler_init: v4l2_ctrl_handler_setup enter - 6
[ 186.846050] v4l2_ctrl_handler_setup: v4l2 - 0
[ 186.846053] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 186.847131] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 186.850800] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 186.854933] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 186.855998] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 186.856007] v4l2_ctrl_handler_setup: v4l2 ing - 9762a300
[ 186.856025] Internal error: Accessing user space memory outside uaccess.h routines: 96000005 [#1] PREEMPT SMP
[ 186.865941] Modules linked in: s5k2x5sp(+) thcv242 bnep fuse zram overlay bcmdhd cfg80211 spidev nvgpu bluedroid_pm ip_tables x_tables [last unloaded: s5k2x5sp]
[ 186.880473] CPU: 4 PID: 8358 Comm: insmod Not tainted 4.9.140-tegra #11
[ 186.887080] Hardware name: quill (DT)
[ 186.890741] task: ffffffc1b6df5400 task.stack: ffffffc1c23fc000
[ 186.896665] PC is at v4l2_ctrl_handler_setup+0x140/0x1b8
[ 186.901973] LR is at v4l2_ctrl_handler_setup+0x128/0x1b8
[ 186.907291] pc : [<ffffff8008b186f0>] lr : [<ffffff8008b186d8>] pstate: a0400045
[ 186.907293] sp : ffffffc1c23ff910
[ 186.907300] x29: ffffffc1c23ff910 x28: 0000000000000018
[ 186.907317] x27: 0000000000000000 x26: 0000000000000001
[ 186.907322] x25: ffffff80094a4998 x24: ffffff800905a000
[ 186.907326] x23: ffffff800905ab58 x22: ffffffc1c17b0048
[ 186.907330] x21: ffffffc19e168100 x20: ffffffc19762a690
[ 186.907334] x19: ffffffc1c17b0018 x18: 0000000000000020
[ 186.907338] x17: 0000000000000001 x16: 0000000000000007
[ 186.907342] x15: ffffffffffffffff x14: ffffff800a127260
[ 186.907346] x13: 0000000000000000 x12: 0000000000000006
[ 186.907350] x11: 0000000000000006 x10: 0000000000000457
[ 186.907354] x9 : 0000000000000001 x8 : ffffffc1f67d713c
[ 186.907358] x7 : 0000000000000000 x6 : 0000000010ad7607
[ 186.907362] x5 : 0000000000000000 x4 : ffffffc1f7094be8
[ 186.907366] x3 : ffffffc1f7094be8 x2 : 0000000000000007
[ 186.907370] x1 : 000000009762a300 x0 : 0000000000000000
[ 186.907376] Process insmod (pid: 8358, stack limit = 0xffffffc1c23fc000)
[ 186.907379] Call trace:
[ 186.907387] [<ffffff8008b186f0>] v4l2_ctrl_handler_setup+0x140/0x1b8
[ 186.907394] [<ffffff8008b496e8>] tegracam_ctrl_handler_init+0x1f0/0x3a8
[ 186.907398] [<ffffff8008b4a354>] tegracam_v4l2subdev_register+0x6c/0x1a0
[ 186.907417] [<ffffff8001145b50>] s5k2x5_probe+0x240/0x638 [s5k2x5sp]
[ 186.907423] [<ffffff8008ae1534>] i2c_device_probe+0x144/0x258
[ 186.907434] [<ffffff800877e418>] driver_probe_device+0xd8/0x408
[ 186.907438] [<ffffff800877e824>] __driver_attach+0xdc/0x128
[ 186.907447] [<ffffff800877be94>] bus_for_each_dev+0x5c/0xa8
[ 186.907450] [<ffffff800877dc18>] driver_attach+0x30/0x40
[ 186.907454] [<ffffff800877d64c>] bus_add_driver+0x20c/0x2a8
[ 186.907457] [<ffffff800877f75c>] driver_register+0x6c/0x110
[ 186.907461] [<ffffff8008ae1c24>] i2c_register_driver+0x4c/0xb0
[ 186.907473] [<ffffff8000f69018>] s5k2x5_i2c_driver_init+0x18/0x30 [s5k2x5sp]
[ 186.907480] [<ffffff8008083afc>] do_one_initcall+0x44/0x130
[ 186.907487] [<ffffff80081c2ddc>] do_init_module+0x64/0x1a8
[ 186.907495] [<ffffff80081581dc>] load_module+0x10a4/0x12d8
[ 186.907499] [<ffffff80081586c0>] SyS_finit_module+0xd8/0xf0
[ 186.907503] [<ffffff80080838c0>] el0_svc_naked+0x34/0x38
[ 186.907509] ---[ end trace a7d836b31ee20b10 ]---
case2. kernel crash dmesg log
[ 86.755784] s5k2x5 2-0010: s5k2x5 enter_parse_dt
[ 86.756574] s5k2x5 2-0010: tegracam sensor driver:s5k2x5_v2.0.6
[ 86.779312] s5k2x5 2-0010: tegracam_ctrl_handler_init: v4l2_ctrl_handler_setup enter - 6
[ 86.779317] v4l2_ctrl_handler_setup: v4l2 - 0
[ 86.779318] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 86.780386] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 86.784034] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 86.788150] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 86.789379] v4l2_ctrl_handler_setup: v4l2 ing - 1
[ 86.789388] v4l2_ctrl_handler_setup: v4l2 ing - ffffffff
[ 86.789399] Unable to handle kernel paging request at virtual address ffffffffffffffff
[ 86.797714] Mem abort info:
[ 86.800506] ESR = 0x96000005
[ 86.803619] Exception class = DABT (current EL), IL = 32 bits
[ 86.809665] SET = 0, FnV = 0
[ 86.812717] EA = 0, S1PTW = 0
[ 86.815910] Data abort info:
[ 86.818832] ISV = 0, ISS = 0x00000005
[ 86.822803] CM = 0, WnR = 0
[ 86.822807] swapper pgtable: 4k pages, 39-bit VAs, pgd = ffffff800a1b7000
[ 86.822814] [ffffffffffffffff] *pgd=0000000000000000, *pud=0000000000000000
[ 86.822818] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ 86.822836] Modules linked in: s5k2x5sp(+) thcv242 bnep fuse zram overlay bcmdhd cfg80211 spidev nvgpu bluedroid_pm ip_tables x_tables
[ 86.822841] CPU: 5 PID: 8040 Comm: insmod Not tainted 4.9.140-tegra #11
[ 86.822842] Hardware name: quill (DT)
[ 86.822844] task: ffffffc1c9f22a00 task.stack: ffffffc1954ec000
[ 86.822853] PC is at v4l2_ctrl_handler_setup+0x140/0x1b8
[ 86.822855] LR is at v4l2_ctrl_handler_setup+0x128/0x1b8
[ 86.822857] pc : [<ffffff8008b186f0>] lr : [<ffffff8008b186d8>] pstate: a0400045
[ 86.822858] sp : ffffffc1954ef910
[ 86.822860] x29: ffffffc1954ef910 x28: 0000000000000018
[ 86.822863] x27: 0000000000000000 x26: 0000000000000001
[ 86.822865] x25: ffffff80094a4998 x24: ffffff800905a000
[ 86.822867] x23: ffffff800905ab58 x22: ffffffc1bf550048
[ 86.822869] x21: ffffffc1e11af600 x20: ffffffc108000002
[ 86.822872] x19: ffffffc1bf550018 x18: 0000000000000020
[ 86.822874] x17: 0000000000000001 x16: 0000000000000007
[ 86.822876] x15: ffffffffffffffff x14: ffffff800a127260
[ 86.822878] x13: 0000000000000000 x12: 0000000000000006
[ 86.822880] x11: 0000000000000006 x10: 0000000000000441
[ 86.822882] x9 : 0000000000000001 x8 : ffffffc1f67d6b70
[ 86.822884] x7 : 0000000000000000 x6 : 0000000010aa96e0
[ 86.822886] x5 : 0000000000000000 x4 : ffffffc1f70adbe8
[ 86.822888] x3 : ffffffc1f70adbe8 x2 : 0000000000000007
[ 86.822890] x1 : 00000000ffffffff x0 : ffffffffffffffff
[ 86.822893] Process insmod (pid: 8040, stack limit = 0xffffffc1954ec000)
[ 86.822894] Call trace:
[ 86.822897] [<ffffff8008b186f0>] v4l2_ctrl_handler_setup+0x140/0x1b8
[ 86.822901] [<ffffff8008b496e8>] tegracam_ctrl_handler_init+0x1f0/0x3a8
[ 86.822904] [<ffffff8008b4a354>] tegracam_v4l2subdev_register+0x6c/0x1a0
[ 86.822915] [<ffffff8001132b50>] s5k2x5_probe+0x240/0x638 [s5k2x5sp]
[ 86.822918] [<ffffff8008ae1534>] i2c_device_probe+0x144/0x258
[ 86.822924] [<ffffff800877e418>] driver_probe_device+0xd8/0x408
[ 86.822926] [<ffffff800877e824>] __driver_attach+0xdc/0x128
[ 86.822930] [<ffffff800877be94>] bus_for_each_dev+0x5c/0xa8
[ 86.822931] [<ffffff800877dc18>] driver_attach+0x30/0x40
[ 86.822933] [<ffffff800877d64c>] bus_add_driver+0x20c/0x2a8
[ 86.822935] [<ffffff800877f75c>] driver_register+0x6c/0x110
[ 86.822939] [<ffffff8008ae1c24>] i2c_register_driver+0x4c/0xb0
[ 86.822945] [<ffffff8000f69018>] s5k2x5_i2c_driver_init+0x18/0x30 [s5k2x5sp]
[ 86.822949] [<ffffff8008083afc>] do_one_initcall+0x44/0x130
[ 86.822952] [<ffffff80081c2ddc>] do_init_module+0x64/0x1a8
[ 86.822956] [<ffffff80081581dc>] load_module+0x10a4/0x12d8
[ 86.822958] [<ffffff80081586c0>] SyS_finit_module+0xd8/0xf0
[ 86.822960] [<ffffff80080838c0>] el0_svc_naked+0x34/0x38
[ 86.822962] ---[ end trace 8b1274cb07dc4431 ]---
thanks,