Hello Hans Verkuil, The patch 5a544cce2177: "[media] adv7511: add new video encoder" from Aug 23, 2013 (linux-next), leads to the following Smatch static checker warning: drivers/media/i2c/adv7511-v4l2.c:929 adv7511_isr() warn: sleeping in IRQ context drivers/media/i2c/adv7511-v4l2.c 912 static int adv7511_isr(struct v4l2_subdev *sd, u32 status, bool *handled) This is a new check so I'm not positive I understand everything correctly yet. This looks at functions which are passed to request_irq() and assumes that they are not threaded. Also the "_isr" here stands for Interrupt Service Routine. 913 { 914 u8 irq_status; 915 u8 cec_irq; 916 917 /* disable interrupts to prevent a race condition */ 918 adv7511_set_isr(sd, false); 919 irq_status = adv7511_rd(sd, 0x96); 920 cec_irq = adv7511_rd(sd, 0x97); 921 /* clear detected interrupts */ 922 adv7511_wr(sd, 0x96, irq_status); 923 adv7511_wr(sd, 0x97, cec_irq); 924 925 v4l2_dbg(1, debug, sd, "%s: irq 0x%x, cec-irq 0x%x\n", __func__, 926 irq_status, cec_irq); 927 928 if (irq_status & (MASK_ADV7511_HPD_INT | MASK_ADV7511_MSEN_INT)) --> 929 adv7511_check_monitor_present_status(sd); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ v4l2_ctrl_s_ctrl() takes a mutex so this is a sleeping function. 930 if (irq_status & MASK_ADV7511_EDID_RDY_INT) 931 adv7511_check_edid_status(sd); 932 933 #if IS_ENABLED(CONFIG_VIDEO_ADV7511_CEC) 934 if (cec_irq & 0x38) 935 adv_cec_tx_raw_status(sd, cec_irq); 936 937 if (cec_irq & 1) { 938 struct adv7511_state *state = get_adv7511_state(sd); 939 struct cec_msg msg; 940 941 msg.len = adv7511_cec_read(sd, 0x25) & 0x1f; regards, dan carpenter