diff mbox

drm: Support drivers with threaded irqs

Message ID 1502299074-62988-1-git-send-email-syeh@vmware.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sinclair Yeh Aug. 9, 2017, 5:17 p.m. UTC
From: Thomas Hellstrom <thellstrom@vmware.com>

See LWN article at
https://lwn.net/Articles/302043/

Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
Reviewed-by: Sinclair Yeh <syeh@vmware.com>
---
 drivers/gpu/drm/drm_irq.c | 6 ++++--
 include/drm/drm_drv.h     | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Daniel Vetter Aug. 9, 2017, 5:38 p.m. UTC | #1
On Wed, Aug 09, 2017 at 07:17:54PM +0200, Sinclair Yeh wrote:
> From: Thomas Hellstrom <thellstrom@vmware.com>
> 
> See LWN article at
> https://lwn.net/Articles/302043/
> 
> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
> Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
> Reviewed-by: Sinclair Yeh <syeh@vmware.com>

We definitely can't do this in general due to latency reasons.  Please
read the kerneldoc of drm_irq_install and just roll your own. This also
seems to like break every driver's compilation.

Thanks, Daniel

> ---
>  drivers/gpu/drm/drm_irq.c | 6 ++++--
>  include/drm/drm_drv.h     | 1 +
>  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
> index 3b04c2510..ef9b4be 100644
> --- a/drivers/gpu/drm/drm_irq.c
> +++ b/drivers/gpu/drm/drm_irq.c
> @@ -127,8 +127,10 @@ int drm_irq_install(struct drm_device *dev, int irq)
>  	if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
>  		sh_flags = IRQF_SHARED;
>  
> -	ret = request_irq(irq, dev->driver->irq_handler,
> -			  sh_flags, dev->driver->name, dev);
> +	ret = request_threaded_irq(irq,
> +				   dev->driver->irq_handler,
> +				   dev->driver->irq_thread_fn,
> +				   sh_flags, dev->driver->name, dev);
>  
>  	if (ret < 0) {
>  		dev->irq_enabled = false;
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index 81971dc..c47abbf 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -333,6 +333,7 @@ struct drm_driver {
>  	 * drivers which implement their own interrupt handling.
>  	 */
>  	irqreturn_t(*irq_handler) (int irq, void *arg);
> +	irqreturn_t (*irq_thread_fn)(int irq, void *arg);
>  
>  	/**
>  	 * @irq_preinstall:
> -- 
> 2.7.4
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
Daniel Vetter Aug. 9, 2017, 5:40 p.m. UTC | #2
On Wed, Aug 09, 2017 at 07:38:29PM +0200, Daniel Vetter wrote:
> On Wed, Aug 09, 2017 at 07:17:54PM +0200, Sinclair Yeh wrote:
> > From: Thomas Hellstrom <thellstrom@vmware.com>
> > 
> > See LWN article at
> > https://lwn.net/Articles/302043/
> > 
> > Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
> > Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
> > Reviewed-by: Sinclair Yeh <syeh@vmware.com>
> 
> We definitely can't do this in general due to latency reasons.  Please
> read the kerneldoc of drm_irq_install and just roll your own. This also
> seems to like break every driver's compilation.

Oops misread, I thought you rename stuff instead of adding. I still don't
see the point - drm_irq_install happened because of the *bsd abstraction
layer, not because it's actually all that useful.
-Daniel
Thomas Hellstrom Aug. 9, 2017, 5:50 p.m. UTC | #3
On 08/09/2017 07:40 PM, Daniel Vetter wrote:
> On Wed, Aug 09, 2017 at 07:38:29PM +0200, Daniel Vetter wrote:
>> On Wed, Aug 09, 2017 at 07:17:54PM +0200, Sinclair Yeh wrote:
>>> From: Thomas Hellstrom <thellstrom@vmware.com>
>>>
>>> See LWN article at
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lwn.net_Articles_302043_&d=DwIBAg&c=uilaK90D4TOVoH58JNXRgQ&r=wnSlgOCqfpNS4d02vP68_E9q2BNMCwfD2OZ_6dCFVQQ&m=NYyVOtVu5iQrNCGt-QcVtR_IU0lhhztOmFP3qnN88tc&s=ruWozYT16Yk3p7sIscOFDNKCC1_WHX_7ChY7q5Ko4vw&e=
>>>
>>> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
>>> Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
>>> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
>> We definitely can't do this in general due to latency reasons.  Please
>> read the kerneldoc of drm_irq_install and just roll your own. This also
>> seems to like break every driver's compilation.
> Oops misread, I thought you rename stuff instead of adding. I still don't
> see the point - drm_irq_install happened because of the *bsd abstraction
> layer, not because it's actually all that useful.
> -Daniel

So the whole point of this is to replace the vmwgfx tasklets with 
treaded irqs to be nicer on the system. Seems like no other drivers use 
tasklets at this point.

The vmwgfx driver is using drm_irq_install(), Of course we could 
duplicate that code into the driver, but I don't see the point in doing 
that nor how this would violate what's written in the drm_irq_install 
kerneldoc? It just extends its functionality somewhat.

Thomas
Daniel Vetter Aug. 9, 2017, 6 p.m. UTC | #4
On Wed, Aug 9, 2017 at 7:50 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
> On 08/09/2017 07:40 PM, Daniel Vetter wrote:
>>
>> On Wed, Aug 09, 2017 at 07:38:29PM +0200, Daniel Vetter wrote:
>>>
>>> On Wed, Aug 09, 2017 at 07:17:54PM +0200, Sinclair Yeh wrote:
>>>>
>>>> From: Thomas Hellstrom <thellstrom@vmware.com>
>>>>
>>>> See LWN article at
>>>>
>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lwn.net_Articles_302043_&d=DwIBAg&c=uilaK90D4TOVoH58JNXRgQ&r=wnSlgOCqfpNS4d02vP68_E9q2BNMCwfD2OZ_6dCFVQQ&m=NYyVOtVu5iQrNCGt-QcVtR_IU0lhhztOmFP3qnN88tc&s=ruWozYT16Yk3p7sIscOFDNKCC1_WHX_7ChY7q5Ko4vw&e=
>>>>
>>>> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
>>>> Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
>>>> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
>>>
>>> We definitely can't do this in general due to latency reasons.  Please
>>> read the kerneldoc of drm_irq_install and just roll your own. This also
>>> seems to like break every driver's compilation.
>>
>> Oops misread, I thought you rename stuff instead of adding. I still don't
>> see the point - drm_irq_install happened because of the *bsd abstraction
>> layer, not because it's actually all that useful.
>> -Daniel
>
>
> So the whole point of this is to replace the vmwgfx tasklets with treaded
> irqs to be nicer on the system. Seems like no other drivers use tasklets at
> this point.
>
> The vmwgfx driver is using drm_irq_install(), Of course we could duplicate
> that code into the driver, but I don't see the point in doing that nor how
> this would violate what's written in the drm_irq_install kerneldoc? It just
> extends its functionality somewhat.

Ok, it only says you should roll your own if your simple needs extend
to needing multiple devices, but threaded interrupts, priorities,
whatever else also belongs in there. The only reason we had this
abstraction was really only the *bsd stuff and maybe ums. Simply
open-coding is imo much better, since then you can even do stuff like
using the devm_ variants and other bits. It's not so bad that I'd
outright remove it all (there's better things to clean up), but imo
really no point extending it.

That's pretty much the same answer as when people wanted to extend
this to multiple devices 3 years ago, again with "it's just a minor
extension".
-Daniel
Thomas Hellstrom Aug. 9, 2017, 6:18 p.m. UTC | #5
On 08/09/2017 08:00 PM, Daniel Vetter wrote:
> On Wed, Aug 9, 2017 at 7:50 PM, Thomas Hellstrom <thellstrom@vmware.com> wrote:
>> On 08/09/2017 07:40 PM, Daniel Vetter wrote:
>>> On Wed, Aug 09, 2017 at 07:38:29PM +0200, Daniel Vetter wrote:
>>>> On Wed, Aug 09, 2017 at 07:17:54PM +0200, Sinclair Yeh wrote:
>>>>> From: Thomas Hellstrom <thellstrom@vmware.com>
>>>>>
>>>>> See LWN article at
>>>>>
>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__lwn.net_Articles_302043_&d=DwIBAg&c=uilaK90D4TOVoH58JNXRgQ&r=wnSlgOCqfpNS4d02vP68_E9q2BNMCwfD2OZ_6dCFVQQ&m=NYyVOtVu5iQrNCGt-QcVtR_IU0lhhztOmFP3qnN88tc&s=ruWozYT16Yk3p7sIscOFDNKCC1_WHX_7ChY7q5Ko4vw&e=
>>>>>
>>>>> Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
>>>>> Reviewed-by: Deepak Singh Rawat <drawat@vmware.com>
>>>>> Reviewed-by: Sinclair Yeh <syeh@vmware.com>
>>>> We definitely can't do this in general due to latency reasons.  Please
>>>> read the kerneldoc of drm_irq_install and just roll your own. This also
>>>> seems to like break every driver's compilation.
>>> Oops misread, I thought you rename stuff instead of adding. I still don't
>>> see the point - drm_irq_install happened because of the *bsd abstraction
>>> layer, not because it's actually all that useful.
>>> -Daniel
>>
>> So the whole point of this is to replace the vmwgfx tasklets with treaded
>> irqs to be nicer on the system. Seems like no other drivers use tasklets at
>> this point.
>>
>> The vmwgfx driver is using drm_irq_install(), Of course we could duplicate
>> that code into the driver, but I don't see the point in doing that nor how
>> this would violate what's written in the drm_irq_install kerneldoc? It just
>> extends its functionality somewhat.
> Ok, it only says you should roll your own if your simple needs extend
> to needing multiple devices, but threaded interrupts, priorities,
> whatever else also belongs in there. The only reason we had this
> abstraction was really only the *bsd stuff and maybe ums. Simply
> open-coding is imo much better, since then you can even do stuff like
> using the devm_ variants and other bits. It's not so bad that I'd
> outright remove it all (there's better things to clean up), but imo
> really no point extending it.
>
> That's pretty much the same answer as when people wanted to extend
> this to multiple devices 3 years ago, again with "it's just a minor
> extension".
> -Daniel

OK. We'll roll our own.

/Thomas
kernel test robot Aug. 10, 2017, 8:41 p.m. UTC | #6
Hi Thomas,

[auto build test WARNING on drm/drm-next]
[also build test WARNING on v4.13-rc4 next-20170810]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Sinclair-Yeh/drm-Support-drivers-with-threaded-irqs/20170811-025749
base:   git://people.freedesktop.org/~airlied/linux.git drm-next
reproduce: make htmldocs

All warnings (new ones prefixed by >>):

   WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
   include/linux/init.h:1: warning: no structured comments found
   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_major' description in 'fsl_mc_device_id'
   include/linux/mod_devicetable.h:687: warning: Excess struct/union/enum/typedef member 'ver_minor' description in 'fsl_mc_device_id'
   kernel/sched/core.c:2080: warning: No description found for parameter 'rf'
   kernel/sched/core.c:2080: warning: Excess function parameter 'cookie' description in 'try_to_wake_up_local'
   include/linux/wait.h:555: warning: No description found for parameter 'wq'
   include/linux/wait.h:555: warning: Excess function parameter 'wq_head' description in 'wait_event_interruptible_hrtimeout'
   include/linux/wait.h:759: warning: No description found for parameter 'wq_head'
   include/linux/wait.h:759: warning: Excess function parameter 'wq' description in 'wait_event_killable'
   include/linux/kthread.h:26: warning: Excess function parameter '...' description in 'kthread_create'
   kernel/sys.c:1: warning: no structured comments found
   include/linux/device.h:968: warning: No description found for parameter 'dma_ops'
   drivers/dma-buf/seqno-fence.c:1: warning: no structured comments found
   include/linux/sync_file.h:51: warning: No description found for parameter 'flags'
   include/linux/iio/iio.h:603: warning: No description found for parameter 'trig_readonly'
   include/linux/iio/trigger.h:151: warning: No description found for parameter 'indio_dev'
   include/linux/iio/trigger.h:151: warning: No description found for parameter 'trig'
   include/linux/device.h:969: warning: No description found for parameter 'dma_ops'
   drivers/ata/libata-eh.c:1449: warning: No description found for parameter 'link'
   drivers/ata/libata-eh.c:1449: warning: Excess function parameter 'ap' description in 'ata_eh_done'
   drivers/ata/libata-eh.c:1590: warning: No description found for parameter 'qc'
   drivers/ata/libata-eh.c:1590: warning: Excess function parameter 'dev' description in 'ata_eh_request_sense'
   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'
   drivers/mtd/nand/nand_base.c:2751: warning: Excess function parameter 'cached' description in 'nand_write_page'
   arch/s390/include/asm/cmb.h:1: warning: no structured comments found
   drivers/scsi/scsi_lib.c:1116: warning: No description found for parameter 'rq'
   drivers/scsi/constants.c:1: warning: no structured comments found
   include/linux/usb/gadget.h:230: warning: No description found for parameter 'claimed'
   include/linux/usb/gadget.h:230: warning: No description found for parameter 'enabled'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_altset_not_supp'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_stall_not_supp'
   include/linux/usb/gadget.h:412: warning: No description found for parameter 'quirk_zlp_not_supp'
   fs/inode.c:1666: warning: No description found for parameter 'rcu'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_transaction'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_next_transaction'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_list'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_vfs_inode'
   include/linux/jbd2.h:443: warning: No description found for parameter 'i_flags'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_rsv_handle'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_reserved'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_type'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_line_no'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_start_jiffies'
   include/linux/jbd2.h:497: warning: No description found for parameter 'h_requested_credits'
   include/linux/jbd2.h:497: warning: No description found for parameter 'saved_alloc_context'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chkpt_bhs'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_devname'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_average_commit_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_min_batch_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_max_batch_time'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_commit_callback'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_failed_commit'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_chksum_driver'
   include/linux/jbd2.h:1050: warning: No description found for parameter 'j_csum_seed'
   fs/jbd2/transaction.c:511: warning: No description found for parameter 'type'
   fs/jbd2/transaction.c:511: warning: No description found for parameter 'line_no'
   fs/jbd2/transaction.c:641: warning: No description found for parameter 'gfp_mask'
>> include/drm/drm_drv.h:594: warning: No description found for parameter 'irq_thread_fn'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_pin'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_unpin'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_res_obj'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_get_sg_table'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_import_sg_table'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_vmap'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_vunmap'
   include/drm/drm_drv.h:594: warning: No description found for parameter 'gem_prime_mmap'
   include/drm/drm_mode_config.h:771: warning: No description found for parameter 'modifiers_property'
   include/drm/drm_mode_config.h:771: warning: Excess struct/union/enum/typedef member 'modifiers' description in 'drm_mode_config'
   include/drm/drm_plane.h:544: warning: No description found for parameter 'modifiers'
   include/drm/drm_plane.h:544: warning: No description found for parameter 'modifier_count'
   Documentation/doc-guide/sphinx.rst:121: ERROR: Unknown target name: "sphinx c domain".
   kernel/sched/fair.c:7584: WARNING: Inline emphasis start-string without end-string.
   kernel/time/timer.c:1200: ERROR: Unexpected indentation.
   kernel/time/timer.c:1202: ERROR: Unexpected indentation.
   kernel/time/timer.c:1203: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/wait.h:108: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/wait.h:111: ERROR: Unexpected indentation.
   include/linux/wait.h:113: WARNING: Block quote ends without a blank line; unexpected unindent.
   kernel/time/hrtimer.c:991: WARNING: Block quote ends without a blank line; unexpected unindent.
   kernel/signal.c:323: WARNING: Inline literal start-string without end-string.
   kernel/rcu/tree.c:3187: ERROR: Unexpected indentation.
   kernel/rcu/tree.c:3214: ERROR: Unexpected indentation.
   kernel/rcu/tree.c:3215: WARNING: Bullet list ends without a blank line; unexpected unindent.
   include/linux/iio/iio.h:219: ERROR: Unexpected indentation.
   include/linux/iio/iio.h:220: WARNING: Block quote ends without a blank line; unexpected unindent.
   include/linux/iio/iio.h:226: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/iio/industrialio-core.c:633: ERROR: Unknown target name: "iio_val".
   drivers/iio/industrialio-core.c:640: ERROR: Unknown target name: "iio_val".
   drivers/ata/libata-core.c:5906: ERROR: Unknown target name: "hw".
   drivers/message/fusion/mptbase.c:5051: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/tty/serial/serial_core.c:1897: WARNING: Definition list ends without a blank line; unexpected unindent.
   drivers/pci/pci.c:3470: ERROR: Unexpected indentation.
   include/linux/regulator/driver.h:271: ERROR: Unknown target name: "regulator_regmap_x_voltage".
   include/linux/spi/spi.h:373: ERROR: Unexpected indentation.
   drivers/w1/w1_io.c:196: WARNING: Definition list ends without a blank line; unexpected unindent.
   block/bio.c:404: ERROR: Unknown target name: "gfp".
   sound/soc/soc-core.c:2703: ERROR: Unknown target name: "snd_soc_daifmt".
   sound/core/jack.c:312: ERROR: Unknown target name: "snd_jack_btn".
   Documentation/media/v4l-drivers/imx.rst:: WARNING: document isn't included in any toctree
   Documentation/virtual/kvm/vcpu-requests.rst:: WARNING: document isn't included in any toctree
   Documentation/dev-tools/kselftest.rst:15: WARNING: Could not lex literal_block as "c". Highlighting skipped.
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 133: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 164: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 193: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 133: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 164: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 193: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 133: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 164: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "/home/kbuild/.config/fontconfig/fonts.conf", line 193: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 43: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 56: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 69: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 82: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 96: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 109: Having multiple values in <test> isn't supported and may not work as expected
   Fontconfig warning: "~/.fonts.conf", line 122: Having multiple values in <test> isn't supported and may not work as expected

vim +/irq_thread_fn +594 include/drm/drm_drv.h

85e634bc Daniel Vetter 2016-11-14 @594  

:::::: The code at line 594 was first introduced by commit
:::::: 85e634bce01af582a0fa549c904154b0e3c56db5 drm: Extract drm_drv.h

:::::: TO: Daniel Vetter <daniel.vetter@ffwll.ch>
:::::: CC: Daniel Vetter <daniel.vetter@ffwll.ch>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
diff mbox

Patch

diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 3b04c2510..ef9b4be 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -127,8 +127,10 @@  int drm_irq_install(struct drm_device *dev, int irq)
 	if (drm_core_check_feature(dev, DRIVER_IRQ_SHARED))
 		sh_flags = IRQF_SHARED;
 
-	ret = request_irq(irq, dev->driver->irq_handler,
-			  sh_flags, dev->driver->name, dev);
+	ret = request_threaded_irq(irq,
+				   dev->driver->irq_handler,
+				   dev->driver->irq_thread_fn,
+				   sh_flags, dev->driver->name, dev);
 
 	if (ret < 0) {
 		dev->irq_enabled = false;
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index 81971dc..c47abbf 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -333,6 +333,7 @@  struct drm_driver {
 	 * drivers which implement their own interrupt handling.
 	 */
 	irqreturn_t(*irq_handler) (int irq, void *arg);
+	irqreturn_t (*irq_thread_fn)(int irq, void *arg);
 
 	/**
 	 * @irq_preinstall: