All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe.
@ 2026-03-10 11:56 Maarten Lankhorst
  2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
                   ` (32 more replies)
  0 siblings, 33 replies; 45+ messages in thread
From: Maarten Lankhorst @ 2026-03-10 11:56 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: dri-devel, Maarten Lankhorst

New version with patch from Sebastian to fix starvation of irq_work.

Still need feedback on the vblank approach, and check to see if there are some bugs left.
Hoping this passes BAT on i915, and still mostly the full run on xe.

Maarten Lankhorst (20):
  drm/vblank_work: Add methods to schedule vblank_work in 2 stages
  drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event
  drm/intel/display: Make intel_crtc_arm_vblank_event static
  drm/intel/display: Convert vblank event handling to 2-stage arming
  drm/i915/display: Move vblank put until after critical section
  drm/i915/display: Remove locking from intel_vblank_evade critical
    section
  drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range
    too
  drm/i915/display: Make get_vblank_counter use intel_de_read_fw()
  drm/i915/display: Do not take uncore lock in i915_get_vblank_counter
  drm/i915/display: Make icl_dsi_frame_update use _fw too
  drm/i915/display: Use intel_de_read/write_fw in colorops
  drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset
  drm/i915/display: Make set_pipeconf use the fw variants
  drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT
  drm/i915/gt: Fix selftests on PREEMPT_RT
  drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT
  drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo
  drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT
  PREEMPT_RT injection
  FOR-CI: bump MAX_STACK_TRACE_ENTRIES

Mike Galbraith (1):
  drm/i915: Use preempt_disable/enable_rt() where recommended

Sebastian Andrzej Siewior (5):
  drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() +
    spin_lock()
  drm/i915: Drop the irqs_disabled() check
  drm/i915/guc: Consider also RCU depth in busy loop.
  Revert "drm/i915: Depend on !PREEMPT_RT."
  drm/i915/gt: Add a spinlock to prevent starvation of irq_work.

 drivers/gpu/drm/drm_vblank.c                  |  61 +++++++++-
 drivers/gpu/drm/drm_vblank_work.c             | 106 ++++++++++++----
 drivers/gpu/drm/i915/Kconfig                  |   1 -
 drivers/gpu/drm/i915/Kconfig.debug            |  15 ---
 drivers/gpu/drm/i915/display/i9xx_wm.c        |   4 -
 drivers/gpu/drm/i915/display/icl_dsi.c        |   4 +-
 drivers/gpu/drm/i915/display/intel_color.c    |   6 +-
 drivers/gpu/drm/i915/display/intel_crtc.c     |  86 ++++++-------
 drivers/gpu/drm/i915/display/intel_crtc.h     |   1 -
 drivers/gpu/drm/i915/display/intel_cursor.c   |   8 +-
 drivers/gpu/drm/i915/display/intel_de.h       |   8 ++
 drivers/gpu/drm/i915/display/intel_display.c  |  46 +++----
 .../gpu/drm/i915/display/intel_lpe_audio.c    |   2 +-
 drivers/gpu/drm/i915/display/intel_vblank.c   | 115 ++++++++++--------
 drivers/gpu/drm/i915/display/intel_vblank.h   |   1 +
 drivers/gpu/drm/i915/display/intel_vrr.c      |  18 +--
 drivers/gpu/drm/i915/gt/intel_breadcrumbs.c   |   8 +-
 .../gpu/drm/i915/gt/intel_breadcrumbs_types.h |   1 +
 drivers/gpu/drm/i915/gt/intel_engine_cs.c     |   2 +-
 .../drm/i915/gt/intel_execlists_submission.c  |  17 +--
 drivers/gpu/drm/i915/gt/selftest_engine_pm.c  |   8 +-
 drivers/gpu/drm/i915/gt/uc/intel_guc.h        |   2 +-
 drivers/gpu/drm/i915/i915_request.c           |   2 -
 drivers/gpu/drm/i915/intel_uncore.h           |  26 ++--
 drivers/gpu/drm/i915/selftests/igt_atomic.c   |   7 ++
 drivers/gpu/drm/xe/Kconfig.debug              |   5 +
 .../drm/xe/compat-i915-headers/intel_uncore.h |   7 ++
 include/drm/drm_vblank.h                      |  14 ++-
 include/drm/drm_vblank_work.h                 |  12 ++
 kernel/Kconfig.preempt                        |   4 +-
 lib/Kconfig.debug                             |   4 +-
 31 files changed, 391 insertions(+), 210 deletions(-)

-- 
2.51.0


^ permalink raw reply	[flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11  0:52 kernel test robot
  0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11  0:52 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>

Hi Maarten,

kernel test robot noticed the following build errors:

[auto build test ERROR on drm-i915/for-linux-next]
[also build test ERROR on next-20260310]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base:   https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link:    https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 12 hours ago
:::::: commit date: 12 hours ago
config: i386-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20260311/202603110102.VTpPsvel-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260311/202603110102.VTpPsvel-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202603110102.VTpPsvel-lkp@intel.com/

All errors (new ones prefixed by >>, old ones prefixed by <<):

WARNING: Module.symvers is missing.
Modules may not have dependencies or modversions.
You may get many unresolved symbol errors.
You can set KBUILD_MODPOST_WARN=1 to turn errors into warning
if you want to proceed at your own risk.
ERROR: modpost: "libnvdimm_test" [test/nfit_test.ko] undefined!
ERROR: modpost: "nd_region_provider_data" [test/nfit_test.ko] undefined!
ERROR: modpost: "devm_kmalloc" [test/nfit_test.ko] undefined!
ERROR: modpost: "platform_driver_unregister" [test/nfit_test.ko] undefined!
ERROR: modpost: "to_nvdimm" [test/nfit_test.ko] undefined!
ERROR: modpost: "gen_pool_create" [test/nfit_test.ko] undefined!
ERROR: modpost: "seq_buf_printf" [test/nfit_test.ko] undefined!
ERROR: modpost: "device_unregister" [test/nfit_test.ko] undefined!
>> ERROR: modpost: "rt_mutex_base_init" [test/nfit_test.ko] undefined!
ERROR: modpost: "__nvdimm_create" [test/nfit_test.ko] undefined!
WARNING: modpost: suppressed 82 unresolved symbol warnings because there were too many)

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11 22:37 kernel test robot
  0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11 22:37 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>

Hi Maarten,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base:   https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link:    https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago
config: arm64-randconfig-r073-20260311 (https://download.01.org/0day-ci/archive/20260312/202603120612.2C8AakgY-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603120612.2C8AakgY-lkp@intel.com/

New smatch warnings:
drivers/staging/most/dim2/dim2.c:535 configure_channel() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:378 qcom_glink_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:519 qcom_glink_send_open_req() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:592 qcom_glink_rx_done_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:1508 __qcom_glink_send() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:1702 qcom_glink_rx_open() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/block/zloop.c:462 zloop_rw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/block/zloop.c:773 zloop_report_zones() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:586 cfv_netdev_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:652 stm32_gpio_domain_alloc() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:972 stm32_pmx_set_mode() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1110 stm32_pconf_set_driving() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1156 stm32_pconf_set_speed() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1202 stm32_pconf_set_bias() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1258 stm32_pconf_set_advcfgr() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/pinctrl/stm32/pinctrl-stm32.c:1344 stm32_pconf_set_skew_delay() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/crypto/atmel-aes.c:911 atmel_aes_handle_queue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/vfio/platform/vfio_platform_irq.c:165 vfio_automasked_irq_handler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/tee/optee/notif.c:83 optee_notif_wait() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/rpmsg_char.c:236 rpmsg_eptdev_read_iter() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/clk/stm32/clk-stm32mp1.c:1006 timer_ker_set_rate() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/staging/nvec/nvec.c:407 nvec_request_master() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/staging/nvec/nvec.c:467 nvec_dispatch() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/transports/virtio.c:292 scmi_vio_complete_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:3011 arm_smmu_attach_prepare() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/ieee802154/cc2520.c:531 cc2520_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/raw_mode.c:729 scmi_raw_message_dequeue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/raw_mode.c:875 scmi_test_dbg_raw_common_poll() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:811 wave5_vpu_dec_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:879 wave5_vpu_dec_start() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/clk/tegra/clk-pll.c:1533 clk_pllc_set_rate() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/sun50i-iommu.c:489 sun50i_iommu_enable() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-rk3x.c:1131 rk3x_i2c_xfer_common() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-uniphier-f.c:357 uniphier_fi2c_xfer_one() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpio/gpio-mvebu.c:639 mvebu_pwm_request() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpio/gpio-mvebu.c:1295 mvebu_gpio_probe() warn: 'mvchip->clk' from clk_prepare_enable() not released on lines: 1183,1242.
drivers/nvdimm/nd_virtio.c:92 virtio_pmem_flush() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1718 iscsi_is_session_online() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1862 iscsi_block_scsi_eh() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1987 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1468 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c:2473 slot_complete_v2_hw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra114.c:991 tegra_spi_setup() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra210-quad.c:1278 tegra_qspi_combined_seq_xfer() error: calling 'spin_unlock_irqrestore()' with bogus flags
lib/test_context-analysis.c:110 test_spinlock() error: calling 'spin_unlock_irqrestore()' with bogus flags
lib/test_context-analysis.c:127 test_spinlock_trylock_extra() error: calling 'spin_unlock_irqrestore()' with bogus flags

Old smatch warnings:
drivers/staging/most/dim2/dim2.c:550 configure_channel() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:393 qcom_glink_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rpmsg/qcom_glink_native.c:504 qcom_glink_send_open_req() error: strcpy() 'channel->name' too large for 'req->data' (1010102 vs 32)
drivers/block/zloop.c:487 zloop_rw() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:594 cfv_netdev_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/net/caif/caif_virtio.c:747 cfv_probe() error: we previously assumed 'vdev->vringh_config' could be null (see line 668)
drivers/crypto/atmel-aes.c:918 atmel_aes_handle_queue() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/firmware/arm_scmi/transports/virtio.c:298 scmi_vio_complete_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c:854 wave5_vpu_dec_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/iommu/sun50i-iommu.c:496 sun50i_iommu_enable() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/nvdimm/nd_virtio.c:106 virtio_pmem_flush() warn: '&req_data->list' not removed from list
drivers/scsi/scsi_transport_iscsi.c:1866 iscsi_block_scsi_eh() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:1997 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/scsi_transport_iscsi.c:2011 __iscsi_unbind_session() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1488 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/aha152x.c:1503 busfree_run() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-tegra210-quad.c:696 tegra_qspi_start_dma_based_transfer() error: we previously assumed 'tqspi->tx_dma_chan' could be null (see line 652)
lib/test_context-analysis.c:103 test_raw_spinlock_trylock_extra() warn: mixing irq and irqsave
include/linux/spinlock.h:540 class_raw_spinlock_try_constructor() warn: passing zero to 'ERR_PTR'
lib/test_context-analysis.c:127 test_spinlock_trylock_extra() warn: mixing irq and irqsave
include/linux/spinlock.h:592 class_spinlock_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/mutex.h:254 class_mutex_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/rwsem.h:260 class_rwsem_read_try_constructor() warn: passing zero to 'ERR_PTR'
include/linux/rwsem.h:271 class_rwsem_write_try_constructor() warn: passing zero to 'ERR_PTR'

vim +535 drivers/staging/most/dim2/dim2.c

ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  437  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  438  /**
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  439   * configure_channel - initialize a channel
6f4d367f335666 drivers/staging/most/dim2/dim2.c         Lee Jones       2021-04-14  440   * @most_iface: interface the channel belongs to
6f4d367f335666 drivers/staging/most/dim2/dim2.c         Lee Jones       2021-04-14  441   * @ch_idx: channel index to be configured
6f4d367f335666 drivers/staging/most/dim2/dim2.c         Lee Jones       2021-04-14  442   * @ccfg: structure that holds the configuration information
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  443   *
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  444   * Receives configuration information from mostcore and initialize
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  445   * the corresponding channel. Return 0 on success, negative on failure.
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  446   */
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  447  static int configure_channel(struct most_interface *most_iface, int ch_idx,
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  448  			     struct most_channel_config *ccfg)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  449  {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  450  	struct dim2_hdm *dev = iface_to_hdm(most_iface);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  451  	bool const is_tx = ccfg->direction == MOST_CH_TX;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  452  	u16 const sub_size = ccfg->subbuffer_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  453  	u16 const buf_size = ccfg->buffer_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  454  	u16 new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  455  	unsigned long flags;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  456  	u8 hal_ret;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  457  	int const ch_addr = ch_idx * 2 + 2;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  458  	struct hdm_channel *const hdm_ch = dev->hch + ch_idx;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  459  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  460  	BUG_ON(ch_idx < 0 || ch_idx >= DMA_CHANNELS);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  461  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  462  	if (hdm_ch->is_initialized)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  463  		return -EPERM;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  464  
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  465  	/* do not reset if the property was set by user, see poison_channel */
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  466  	hdm_ch->reset_dbr_size = ccfg->dbr_size ? NULL : &ccfg->dbr_size;
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  467  
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  468  	/* zero value is default dbr_size, see dim2 hal */
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  469  	hdm_ch->ch.dbr_size = ccfg->dbr_size;
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  470  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  471  	switch (ccfg->data_type) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  472  	case MOST_CH_CONTROL:
c64c6073e8fe1c drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  473  		new_size = dim_norm_ctrl_async_buffer_size(buf_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  474  		if (new_size == 0) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  475  			pr_err("%s: too small buffer size\n", hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  476  			return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  477  		}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  478  		ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  479  		if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  480  			pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  481  				hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  482  		spin_lock_irqsave(&dim_lock, flags);
a3f3e921194710 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  483  		hal_ret = dim_init_control(&hdm_ch->ch, is_tx, ch_addr,
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15  484  					   is_tx ? new_size * 2 : new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  485  		break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  486  	case MOST_CH_ASYNC:
c64c6073e8fe1c drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  487  		new_size = dim_norm_ctrl_async_buffer_size(buf_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  488  		if (new_size == 0) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  489  			pr_err("%s: too small buffer size\n", hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  490  			return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  491  		}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  492  		ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  493  		if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  494  			pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  495  				hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  496  		spin_lock_irqsave(&dim_lock, flags);
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15  497  		hal_ret = dim_init_async(&hdm_ch->ch, is_tx, ch_addr,
6631c5c9b0c369 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-15  498  					 is_tx ? new_size * 2 : new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  499  		break;
0540609fe217c3 drivers/staging/most/hdm-dim2/dim2_hdm.c Andrey Shvetsov 2016-09-21  500  	case MOST_CH_ISOC:
e302ca47b59f02 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  501  		new_size = dim_norm_isoc_buffer_size(buf_size, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  502  		if (new_size == 0) {
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15  503  			pr_err("%s: invalid sub-buffer size or too small buffer size\n",
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15  504  			       hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  505  			return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  506  		}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  507  		ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  508  		if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  509  			pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  510  				hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  511  		spin_lock_irqsave(&dim_lock, flags);
f1383176c92801 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  512  		hal_ret = dim_init_isoc(&hdm_ch->ch, is_tx, ch_addr, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  513  		break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  514  	case MOST_CH_SYNC:
aff1924508e880 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  515  		new_size = dim_norm_sync_buffer_size(buf_size, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  516  		if (new_size == 0) {
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15  517  			pr_err("%s: invalid sub-buffer size or too small buffer size\n",
9158d33a5d38d1 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-10-15  518  			       hdm_ch->name);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  519  			return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  520  		}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  521  		ccfg->buffer_size = new_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  522  		if (new_size != buf_size)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  523  			pr_warn("%s: fixed buffer size (%d -> %d)\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  524  				hdm_ch->name, buf_size, new_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  525  		spin_lock_irqsave(&dim_lock, flags);
10e5efb7b51f30 drivers/staging/most/hdm-dim2/dim2_hdm.c Chaehyun Lim    2015-11-02  526  		hal_ret = dim_init_sync(&hdm_ch->ch, is_tx, ch_addr, sub_size);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  527  		break;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  528  	default:
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  529  		pr_err("%s: configure failed, bad channel type: %d\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  530  		       hdm_ch->name, ccfg->data_type);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  531  		return -EINVAL;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  532  	}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  533  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  534  	if (hal_ret != DIM_NO_ERROR) {
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24 @535  		spin_unlock_irqrestore(&dim_lock, flags);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  536  		pr_err("%s: configure failed (%d), type: %d, is_tx: %d\n",
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  537  		       hdm_ch->name, hal_ret, ccfg->data_type, (int)is_tx);
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  538  		return -ENODEV;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  539  	}
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  540  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  541  	hdm_ch->data_type = ccfg->data_type;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  542  	hdm_ch->direction = ccfg->direction;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  543  	hdm_ch->is_initialized = true;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  544  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  545  	if (hdm_ch->data_type == MOST_CH_ASYNC &&
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  546  	    hdm_ch->direction == MOST_CH_TX &&
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  547  	    dev->atx_idx < 0)
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  548  		dev->atx_idx = ch_idx;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  549  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  550  	spin_unlock_irqrestore(&dim_lock, flags);
dbd36d5772f7e4 drivers/staging/most/dim2/dim2.c         Christian Gromm 2018-05-08  551  	ccfg->dbr_size = hdm_ch->ch.dbr_size;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  552  
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  553  	return 0;
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  554  }
ba3d7ddfb5c6a2 drivers/staging/most/hdm-dim2/dim2_hdm.c Christian Gromm 2015-07-24  555  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-11 22:58 kernel test robot
  0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-11 22:58 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>

Hi Maarten,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base:   https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link:    https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 34 hours ago
:::::: commit date: 34 hours ago
config: i386-randconfig-141-20260311 (https://download.01.org/0day-ci/archive/20260312/202603120645.BoJHrUED-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603120645.BoJHrUED-lkp@intel.com/

New smatch warnings:
drivers/hte/hte.c:221 hte_ts_put() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/hte/hte.c:301 hte_ts_dis_en_common() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/input/touchscreen/ad7877.c:402 ad7877_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_acntpc.c:237 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptscsih.c:1125 mptscsih_search_running_cmds() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:2096 mpt_detach() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7016 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7216 mpt_HardResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/applicom.c:479 ac_write() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/pci/tw5864/tw5864-video.c:1328 tw5864_handle_frame_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-pmp.c:864 sata_pmp_eh_handle_disabled_links() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-core.c:5345 ata_port_request_pm() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptsas.c:385 mptsas_cleanup_fw_event_q() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/sonypi.c:766 input_keyrelease() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/sonypi.c:915 sonypi_misc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_dtlk.c:239 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/accessibility/speakup/speakup_keypc.c:243 do_catch_up() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/tty/serial/jsm/jsm_neo.c:778 neo_parse_isr() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:1921 __spi_pump_messages() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:4589 spi_async() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi.c:4689 __spi_sync() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/media/rc/serial_ir.c:667 serial_ir_tx() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/scsi/libsas/sas_ata.c:481 sas_ata_internal_abort() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/qxl/qxl_cmd.c:148 qxl_ring_push() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rtc/rtc-m48t59.c:133 m48t59_rtc_set_time() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/rtc/rtc-m48t59.c:335 m48t59_nvram_write() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/i2c/busses/i2c-elektor.c:116 pcf_isa_waitforpin() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/video/fbdev/via/via-gpio.c:242 viafb_gpio_probe() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/misc/hpilo.c:605 ilo_open() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_input.c:56 virtinput_recv_events() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_input.c:333 virtinput_probe() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_rtc_driver.c:253 viortc_do_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/intel_uncore.c:502 intel_uncore_forcewake_reset() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/radeon/radeon_display.c:601 radeon_crtc_page_flip_target() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_sw_fence.c:391 __i915_sw_fence_await_sw_fence() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c:285 amdgpu_display_crtc_page_flip_target() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_pmu.c:256 get_rc6() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-topcliff-pch.c:1424 pch_spi_pd_remove() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:2988 amdgpu_vm_handle_fault() error: calling 'spin_unlock_irqrestore()' with bogus flags
mm/slub.c:3812 get_from_partial_node() error: calling 'spin_unlock_irqrestore()' with bogus flags
mm/slub.c:4323 alloc_from_new_slab() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci224.c:466 pci224_ao_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci224.c:984 pci224_interrupt() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1045 pci230_ao_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1280 pci230_ao_start() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:1843 pci230_ai_stop() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pci230.c:2329 pci230_interrupt() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/misc/mchp_pci1xxxx/mchp_pci1xxxx_gpio.c:310 pci1xxxx_gpio_irq_handler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:897 assert_pending_valid() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/cb_pcidas64.c:2657 ai_cmd() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/ni_pcidio.c:352 setup_mite_dma() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/comedi/drivers/amplc_pc236_common.c:53 pc236_intr_check() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c:108 amdgpu_userq_fence_driver_alloc() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gem/i915_gem_shrinker.c:245 i915_gem_shrink() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_active.c:992 i915_request_add_active_barriers() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/i915_active.c:1094 __i915_active_fence_set() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:2411 pin_guc_id() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:7321 gfx_v9_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:9562 gfx_v10_0_reset_kgq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:9632 gfx_v10_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:3603 gfx_v9_4_3_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c:6466 gfx_v11_0_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c:4832 gfx_v12_0_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c:3622 gfx_v12_1_eop_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c:1669 sdma_v6_0_process_fence_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c:1601 sdma_v7_0_process_fence_irq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_irq.c:515 amdgpu_dm_irq_suspend() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:11132 amdgpu_dm_atomic_commit_tail() error: calling 'spin_unlock_irqrestore()' with bogus flags

Old smatch warnings:
drivers/message/fusion/mptscsih.c:766 mptscsih_io_done() warn: inconsistent indenting
drivers/message/fusion/mptscsih.c:841 mptscsih_io_done() warn: inconsistent indenting
drivers/message/fusion/mptbase.c:2621 mpt_do_ioc_recovery() warn: 'ioc->pcidev->irq' from request_irq() not released on lines: 2621.
drivers/message/fusion/mptbase.c:7019 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/message/fusion/mptbase.c:7080 mpt_SoftResetHandler() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/applicom.c:348 applicom_init() warn: 'RamIO' from ioremap() not released on lines: 253,338,348.
drivers/char/applicom.c:348 applicom_init() warn: 'RamIO' from ioremap() not released on lines: 338,348.
drivers/media/pci/tw5864/tw5864-video.c:1343 tw5864_handle_frame_work() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/ata/libata-pmp.c:964 sata_pmp_eh_recover() warn: missing error code 'rc'
drivers/ata/libata-pmp.c:964 sata_pmp_eh_recover() warn: missing error code 'rc'
drivers/ata/libata-core.c:6280 ata_port_detach() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/virtio/virtio_rtc_driver.c:259 viortc_do_cb() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/intel_uncore.c:515 intel_uncore_forcewake_reset() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/spi/spi-topcliff-pch.c:580 pch_spi_set_tx() error: we previously assumed 'data->pkt_tx_buff' could be null (see line 553)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:830 amdgpu_vm_flush() error: we previously assumed 'ring->funcs->emit_vm_flush' could be null (see line 803)
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1381 amdgpu_vm_bo_update() error: we previously assumed 'bo' could be null (see line 1320)
drivers/comedi/drivers/amplc_pci230.c:2539 pci230_auto_attach() warn: 'pci_dev->irq' from request_irq() not released on lines: 2481,2485,2524,2534.
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:1613 execlists_dequeue() warn: inconsistent returns '&sched_engine->lock'.
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:3941 execlists_create_virtual() warn: assigning (-2) to unsigned variable 've->base.instance'
drivers/gpu/drm/i915/gt/intel_execlists_submission.c:3942 execlists_create_virtual() warn: assigning (-2) to unsigned variable 've->base.uabi_instance'
drivers/comedi/drivers/cb_pcidas64.c:4039 auto_attach() warn: 'pcidev->irq' from request_irq() not released on lines: 4037.
drivers/gpu/drm/i915/gem/i915_gem_object.h:183 __i915_gem_object_lock() error: we previously assumed 'ww' could be null (see line 172)
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5377 intel_guc_engine_failure_process_msg() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5920 guc_create_virtual() warn: assigning (-2) to unsigned variable 've->base.instance'
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c:5921 guc_create_virtual() warn: assigning (-2) to unsigned variable 've->base.uabi_instance'
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c:7327 gfx_v9_0_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c:4292 gfx_v10_0_init_microcode() warn: 'adev->gfx.rlc_fw' from request_firmware() not released on lines: 4292.
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c:3609 gfx_v9_4_3_reset_kcq() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:13132 parse_edid_displayid_vrr() warn: variable dereferenced before check 'edid_ext' (see line 13128)

vim +221 drivers/hte/hte.c

31ab09b4218879b Dipen Patel 2022-04-22  140  
31ab09b4218879b Dipen Patel 2022-04-22  141  /**
31ab09b4218879b Dipen Patel 2022-04-22  142   * hte_ts_put() - Release and disable timestamp for the given desc.
31ab09b4218879b Dipen Patel 2022-04-22  143   *
31ab09b4218879b Dipen Patel 2022-04-22  144   * @desc: timestamp descriptor.
31ab09b4218879b Dipen Patel 2022-04-22  145   *
31ab09b4218879b Dipen Patel 2022-04-22  146   * Context: debugfs_remove_recursive() function call may use sleeping locks,
31ab09b4218879b Dipen Patel 2022-04-22  147   *	    not suitable from atomic context.
31ab09b4218879b Dipen Patel 2022-04-22  148   * Returns: 0 on success or a negative error code on failure.
31ab09b4218879b Dipen Patel 2022-04-22  149   */
31ab09b4218879b Dipen Patel 2022-04-22  150  int hte_ts_put(struct hte_ts_desc *desc)
31ab09b4218879b Dipen Patel 2022-04-22  151  {
31ab09b4218879b Dipen Patel 2022-04-22  152  	int ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22  153  	unsigned long flag;
31ab09b4218879b Dipen Patel 2022-04-22  154  	struct hte_device *gdev;
31ab09b4218879b Dipen Patel 2022-04-22  155  	struct hte_ts_info *ei;
31ab09b4218879b Dipen Patel 2022-04-22  156  
31ab09b4218879b Dipen Patel 2022-04-22  157  	if (!desc)
31ab09b4218879b Dipen Patel 2022-04-22  158  		return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  159  
31ab09b4218879b Dipen Patel 2022-04-22  160  	ei = desc->hte_data;
31ab09b4218879b Dipen Patel 2022-04-22  161  
31ab09b4218879b Dipen Patel 2022-04-22  162  	if (!ei || !ei->gdev)
31ab09b4218879b Dipen Patel 2022-04-22  163  		return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  164  
31ab09b4218879b Dipen Patel 2022-04-22  165  	gdev = ei->gdev;
31ab09b4218879b Dipen Patel 2022-04-22  166  
31ab09b4218879b Dipen Patel 2022-04-22  167  	mutex_lock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22  168  
31ab09b4218879b Dipen Patel 2022-04-22  169  	if (unlikely(!test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22  170  	    !test_bit(HTE_TS_REGISTERED, &ei->flags))) {
31ab09b4218879b Dipen Patel 2022-04-22  171  		dev_info(gdev->sdev, "id:%d is not requested\n",
31ab09b4218879b Dipen Patel 2022-04-22  172  			 desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22  173  		ret = -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  174  		goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22  175  	}
31ab09b4218879b Dipen Patel 2022-04-22  176  
31ab09b4218879b Dipen Patel 2022-04-22  177  	if (unlikely(!test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22  178  	    test_bit(HTE_TS_REGISTERED, &ei->flags))) {
31ab09b4218879b Dipen Patel 2022-04-22  179  		dev_info(gdev->sdev, "id:%d is registered but not requested\n",
31ab09b4218879b Dipen Patel 2022-04-22  180  			 desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22  181  		ret = -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  182  		goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22  183  	}
31ab09b4218879b Dipen Patel 2022-04-22  184  
31ab09b4218879b Dipen Patel 2022-04-22  185  	if (test_bit(HTE_TS_REQ, &ei->flags) &&
31ab09b4218879b Dipen Patel 2022-04-22  186  	    !test_bit(HTE_TS_REGISTERED, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22  187  		clear_bit(HTE_TS_REQ, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22  188  		desc->hte_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22  189  		ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22  190  		goto mod_put;
31ab09b4218879b Dipen Patel 2022-04-22  191  	}
31ab09b4218879b Dipen Patel 2022-04-22  192  
31ab09b4218879b Dipen Patel 2022-04-22  193  	ret = gdev->chip->ops->release(gdev->chip, desc, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22  194  	if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22  195  		dev_err(gdev->sdev, "id: %d free failed\n",
31ab09b4218879b Dipen Patel 2022-04-22  196  			desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22  197  		goto unlock;
31ab09b4218879b Dipen Patel 2022-04-22  198  	}
31ab09b4218879b Dipen Patel 2022-04-22  199  
31ab09b4218879b Dipen Patel 2022-04-22  200  	kfree(ei->line_name);
31ab09b4218879b Dipen Patel 2022-04-22  201  	if (ei->free_attr_name)
31ab09b4218879b Dipen Patel 2022-04-22  202  		kfree_const(desc->attr.name);
31ab09b4218879b Dipen Patel 2022-04-22  203  
31ab09b4218879b Dipen Patel 2022-04-22  204  	debugfs_remove_recursive(ei->ts_dbg_root);
31ab09b4218879b Dipen Patel 2022-04-22  205  
31ab09b4218879b Dipen Patel 2022-04-22  206  	spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  207  
31ab09b4218879b Dipen Patel 2022-04-22  208  	if (test_bit(HTE_TS_QUEUE_WK, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22  209  		spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  210  		flush_work(&ei->cb_work);
31ab09b4218879b Dipen Patel 2022-04-22  211  		spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  212  	}
31ab09b4218879b Dipen Patel 2022-04-22  213  
31ab09b4218879b Dipen Patel 2022-04-22  214  	atomic_dec(&gdev->ts_req);
31ab09b4218879b Dipen Patel 2022-04-22  215  	atomic_set(&ei->dropped_ts, 0);
31ab09b4218879b Dipen Patel 2022-04-22  216  
31ab09b4218879b Dipen Patel 2022-04-22  217  	ei->seq = 1;
31ab09b4218879b Dipen Patel 2022-04-22  218  	ei->flags = 0;
31ab09b4218879b Dipen Patel 2022-04-22  219  	desc->hte_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22  220  
31ab09b4218879b Dipen Patel 2022-04-22 @221  	spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  222  
31ab09b4218879b Dipen Patel 2022-04-22  223  	ei->cb = NULL;
31ab09b4218879b Dipen Patel 2022-04-22  224  	ei->tcb = NULL;
31ab09b4218879b Dipen Patel 2022-04-22  225  	ei->cl_data = NULL;
31ab09b4218879b Dipen Patel 2022-04-22  226  
31ab09b4218879b Dipen Patel 2022-04-22  227  mod_put:
31ab09b4218879b Dipen Patel 2022-04-22  228  	module_put(gdev->owner);
31ab09b4218879b Dipen Patel 2022-04-22  229  unlock:
31ab09b4218879b Dipen Patel 2022-04-22  230  	mutex_unlock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22  231  	dev_dbg(gdev->sdev, "release id: %d\n", desc->attr.line_id);
31ab09b4218879b Dipen Patel 2022-04-22  232  
31ab09b4218879b Dipen Patel 2022-04-22  233  	return ret;
31ab09b4218879b Dipen Patel 2022-04-22  234  }
31ab09b4218879b Dipen Patel 2022-04-22  235  EXPORT_SYMBOL_GPL(hte_ts_put);
31ab09b4218879b Dipen Patel 2022-04-22  236  
31ab09b4218879b Dipen Patel 2022-04-22  237  static int hte_ts_dis_en_common(struct hte_ts_desc *desc, bool en)
31ab09b4218879b Dipen Patel 2022-04-22  238  {
31ab09b4218879b Dipen Patel 2022-04-22  239  	u32 ts_id;
31ab09b4218879b Dipen Patel 2022-04-22  240  	struct hte_device *gdev;
31ab09b4218879b Dipen Patel 2022-04-22  241  	struct hte_ts_info *ei;
31ab09b4218879b Dipen Patel 2022-04-22  242  	int ret;
31ab09b4218879b Dipen Patel 2022-04-22  243  	unsigned long flag;
31ab09b4218879b Dipen Patel 2022-04-22  244  
31ab09b4218879b Dipen Patel 2022-04-22  245  	if (!desc)
31ab09b4218879b Dipen Patel 2022-04-22  246  		return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  247  
31ab09b4218879b Dipen Patel 2022-04-22  248  	ei = desc->hte_data;
31ab09b4218879b Dipen Patel 2022-04-22  249  
31ab09b4218879b Dipen Patel 2022-04-22  250  	if (!ei || !ei->gdev)
31ab09b4218879b Dipen Patel 2022-04-22  251  		return -EINVAL;
31ab09b4218879b Dipen Patel 2022-04-22  252  
31ab09b4218879b Dipen Patel 2022-04-22  253  	gdev = ei->gdev;
31ab09b4218879b Dipen Patel 2022-04-22  254  	ts_id = desc->attr.line_id;
31ab09b4218879b Dipen Patel 2022-04-22  255  
31ab09b4218879b Dipen Patel 2022-04-22  256  	mutex_lock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22  257  
31ab09b4218879b Dipen Patel 2022-04-22  258  	if (!test_bit(HTE_TS_REGISTERED, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22  259  		dev_dbg(gdev->sdev, "id:%d is not registered", ts_id);
31ab09b4218879b Dipen Patel 2022-04-22  260  		ret = -EUSERS;
31ab09b4218879b Dipen Patel 2022-04-22  261  		goto out;
31ab09b4218879b Dipen Patel 2022-04-22  262  	}
31ab09b4218879b Dipen Patel 2022-04-22  263  
31ab09b4218879b Dipen Patel 2022-04-22  264  	spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  265  
31ab09b4218879b Dipen Patel 2022-04-22  266  	if (en) {
31ab09b4218879b Dipen Patel 2022-04-22  267  		if (!test_bit(HTE_TS_DISABLE, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22  268  			ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22  269  			goto out_unlock;
31ab09b4218879b Dipen Patel 2022-04-22  270  		}
31ab09b4218879b Dipen Patel 2022-04-22  271  
31ab09b4218879b Dipen Patel 2022-04-22  272  		spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  273  		ret = gdev->chip->ops->enable(gdev->chip, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22  274  		if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22  275  			dev_warn(gdev->sdev, "id: %d enable failed\n",
31ab09b4218879b Dipen Patel 2022-04-22  276  				 ts_id);
31ab09b4218879b Dipen Patel 2022-04-22  277  			goto out;
31ab09b4218879b Dipen Patel 2022-04-22  278  		}
31ab09b4218879b Dipen Patel 2022-04-22  279  
31ab09b4218879b Dipen Patel 2022-04-22  280  		spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  281  		clear_bit(HTE_TS_DISABLE, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22  282  	} else {
31ab09b4218879b Dipen Patel 2022-04-22  283  		if (test_bit(HTE_TS_DISABLE, &ei->flags)) {
31ab09b4218879b Dipen Patel 2022-04-22  284  			ret = 0;
31ab09b4218879b Dipen Patel 2022-04-22  285  			goto out_unlock;
31ab09b4218879b Dipen Patel 2022-04-22  286  		}
31ab09b4218879b Dipen Patel 2022-04-22  287  
31ab09b4218879b Dipen Patel 2022-04-22  288  		spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  289  		ret = gdev->chip->ops->disable(gdev->chip, ei->xlated_id);
31ab09b4218879b Dipen Patel 2022-04-22  290  		if (ret) {
31ab09b4218879b Dipen Patel 2022-04-22  291  			dev_warn(gdev->sdev, "id: %d disable failed\n",
31ab09b4218879b Dipen Patel 2022-04-22  292  				 ts_id);
31ab09b4218879b Dipen Patel 2022-04-22  293  			goto out;
31ab09b4218879b Dipen Patel 2022-04-22  294  		}
31ab09b4218879b Dipen Patel 2022-04-22  295  
31ab09b4218879b Dipen Patel 2022-04-22  296  		spin_lock_irqsave(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  297  		set_bit(HTE_TS_DISABLE, &ei->flags);
31ab09b4218879b Dipen Patel 2022-04-22  298  	}
31ab09b4218879b Dipen Patel 2022-04-22  299  
31ab09b4218879b Dipen Patel 2022-04-22  300  out_unlock:
31ab09b4218879b Dipen Patel 2022-04-22 @301  	spin_unlock_irqrestore(&ei->slock, flag);
31ab09b4218879b Dipen Patel 2022-04-22  302  out:
31ab09b4218879b Dipen Patel 2022-04-22  303  	mutex_unlock(&ei->req_mlock);
31ab09b4218879b Dipen Patel 2022-04-22  304  	return ret;
31ab09b4218879b Dipen Patel 2022-04-22  305  }
31ab09b4218879b Dipen Patel 2022-04-22  306  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 45+ messages in thread
* Re: [PATCH v7 24/26] PREEMPT_RT injection
@ 2026-03-13 17:52 kernel test robot
  0 siblings, 0 replies; 45+ messages in thread
From: kernel test robot @ 2026-03-13 17:52 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20260310115709.2276203-25-dev@lankhorst.se>
References: <20260310115709.2276203-25-dev@lankhorst.se>
TO: Maarten Lankhorst <dev@lankhorst.se>
TO: intel-xe@lists.freedesktop.org
TO: intel-gfx@lists.freedesktop.org
CC: dri-devel@lists.freedesktop.org
CC: Maarten Lankhorst <dev@lankhorst.se>

Hi Maarten,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-i915/for-linux-next]
[also build test WARNING on next-20260311]
[cannot apply to drm-i915/for-linux-next-fixes drm-misc/drm-misc-next drm-xe/drm-xe-next linus/master v7.0-rc3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Maarten-Lankhorst/drm-vblank_work-Add-methods-to-schedule-vblank_work-in-2-stages/20260310-205630
base:   https://gitlab.freedesktop.org/drm/i915/kernel.git for-linux-next
patch link:    https://lore.kernel.org/r/20260310115709.2276203-25-dev%40lankhorst.se
patch subject: [PATCH v7 24/26] PREEMPT_RT injection
:::::: branch date: 3 days ago
:::::: commit date: 3 days ago
config: i386-randconfig-141-20260311 (https://download.01.org/0day-ci/archive/20260314/202603140159.q9J8zmoL-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
smatch: v0.5.0-9004-gb810ac53

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202603140159.q9J8zmoL-lkp@intel.com/

New smatch warnings:
drivers/char/ipmi/ssif_bmc.c:155 ssif_bmc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags
drivers/char/ipmi/ssif_bmc.c:226 ssif_bmc_write() error: calling 'spin_unlock_irqrestore()' with bogus flags

Old smatch warnings:
drivers/char/ipmi/ssif_bmc.c:163 ssif_bmc_read() error: calling 'spin_unlock_irqrestore()' with bogus flags

vim +155 drivers/char/ipmi/ssif_bmc.c

dd2bc5cc9e2555 Quan Nguyen     2022-10-04  131  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  132  /* Handle SSIF message that will be sent to user */
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  133  static ssize_t ssif_bmc_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  134  {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  135  	struct ssif_bmc_ctx *ssif_bmc = to_ssif_bmc(file);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  136  	struct ipmi_ssif_msg msg;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  137  	unsigned long flags;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  138  	ssize_t ret;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  139  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  140  	spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  141  	while (!ssif_bmc->request_available) {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  142  		spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  143  		if (file->f_flags & O_NONBLOCK)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  144  			return -EAGAIN;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  145  		ret = wait_event_interruptible(ssif_bmc->wait_queue,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  146  					       ssif_bmc->request_available);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  147  		if (ret)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  148  			return ret;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  149  		spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  150  	}
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  151  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  152  	if (count < min_t(ssize_t,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  153  			  sizeof_field(struct ipmi_ssif_msg, len) + ssif_bmc->request.len,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  154  			  sizeof(struct ipmi_ssif_msg))) {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04 @155  		spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  156  		ret = -EINVAL;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  157  	} else {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  158  		count = min_t(ssize_t,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  159  			      sizeof_field(struct ipmi_ssif_msg, len) + ssif_bmc->request.len,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  160  			      sizeof(struct ipmi_ssif_msg));
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  161  		memcpy(&msg, &ssif_bmc->request, count);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  162  		ssif_bmc->request_available = false;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  163  		spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  164  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  165  		ret = copy_to_user(buf, &msg, count);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  166  	}
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  167  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  168  	return (ret < 0) ? ret : count;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  169  }
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  170  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  171  /* Handle SSIF message that is written by user */
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  172  static ssize_t ssif_bmc_write(struct file *file, const char __user *buf, size_t count,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  173  			      loff_t *ppos)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  174  {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  175  	struct ssif_bmc_ctx *ssif_bmc = to_ssif_bmc(file);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  176  	struct ipmi_ssif_msg msg;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  177  	unsigned long flags;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  178  	ssize_t ret;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  179  
0627cef36145c9 Dan Carpenter   2024-06-14  180  	if (count < sizeof(msg.len) ||
0627cef36145c9 Dan Carpenter   2024-06-14  181  	    count > sizeof(struct ipmi_ssif_msg))
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  182  		return -EINVAL;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  183  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  184  	if (copy_from_user(&msg, buf, count))
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  185  		return -EFAULT;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  186  
0627cef36145c9 Dan Carpenter   2024-06-14  187  	if (!msg.len || msg.len > IPMI_SSIF_PAYLOAD_MAX ||
0627cef36145c9 Dan Carpenter   2024-06-14  188  	    count < sizeof_field(struct ipmi_ssif_msg, len) + msg.len)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  189  		return -EINVAL;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  190  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  191  	spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  192  	while (ssif_bmc->response_in_progress) {
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  193  		spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  194  		if (file->f_flags & O_NONBLOCK)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  195  			return -EAGAIN;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  196  		ret = wait_event_interruptible(ssif_bmc->wait_queue,
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  197  					       !ssif_bmc->response_in_progress);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  198  		if (ret)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  199  			return ret;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  200  		spin_lock_irqsave(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  201  	}
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  202  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  203  	/*
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  204  	 * The write must complete before the response timeout fired, otherwise
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  205  	 * the response is aborted and wait for next request
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  206  	 * Return -EINVAL if the response is aborted
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  207  	 */
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  208  	ret = (ssif_bmc->response_timer_inited) ? 0 : -EINVAL;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  209  	if (ret)
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  210  		goto exit;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  211  
8fa7292fee5c52 Thomas Gleixner 2025-04-05  212  	timer_delete(&ssif_bmc->response_timer);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  213  	ssif_bmc->response_timer_inited = false;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  214  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  215  	memcpy(&ssif_bmc->response, &msg, count);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  216  	ssif_bmc->is_singlepart_read = (msg.len <= MAX_PAYLOAD_PER_TRANSACTION);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  217  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  218  	ssif_bmc->response_in_progress = true;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  219  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  220  	/* ssif_bmc not busy */
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  221  	ssif_bmc->busy = false;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  222  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  223  	/* Clean old request buffer */
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  224  	memset(&ssif_bmc->request, 0, sizeof(struct ipmi_ssif_msg));
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  225  exit:
dd2bc5cc9e2555 Quan Nguyen     2022-10-04 @226  	spin_unlock_irqrestore(&ssif_bmc->lock, flags);
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  227  
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  228  	return (ret < 0) ? ret : count;
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  229  }
dd2bc5cc9e2555 Quan Nguyen     2022-10-04  230  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 45+ messages in thread

end of thread, other threads:[~2026-03-13 17:52 UTC | newest]

Thread overview: 45+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-10 11:56 [PATCH v7 00/26] drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 01/26] drm/vblank_work: Add methods to schedule vblank_work in 2 stages Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 02/26] drm/vblank: Add a 2-stage version of drm_crtc_arm_vblank_event Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 03/26] drm/intel/display: Make intel_crtc_arm_vblank_event static Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 04/26] drm/intel/display: Convert vblank event handling to 2-stage arming Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 05/26] drm/i915/display: Move vblank put until after critical section Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 06/26] drm/i915/display: Remove locking from intel_vblank_evade " Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 07/26] drm/i915/display: Handle vlv dsi workaround in scanline_in_safe_range too Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 08/26] drm/i915: Use preempt_disable/enable_rt() where recommended Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 09/26] drm/i915/display: Make get_vblank_counter use intel_de_read_fw() Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 10/26] drm/i915/display: Do not take uncore lock in i915_get_vblank_counter Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 11/26] drm/i915/display: Make icl_dsi_frame_update use _fw too Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 12/26] drm/i915/display: Use intel_de_read/write_fw in colorops Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 13/26] drm/i915/display: Use intel_de_write_fw in intel_pipe_fastset Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 14/26] drm/i915/display: Make set_pipeconf use the fw variants Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 15/26] drm/i915/display: Fix intel_lpe_audio_irq_handler for PREEMPT-RT Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 16/26] drm/i915/gt: Use spin_lock_irq() instead of local_irq_disable() + spin_lock() Maarten Lankhorst
2026-03-10 11:56 ` [PATCH v7 17/26] drm/i915: Drop the irqs_disabled() check Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 18/26] drm/i915/guc: Consider also RCU depth in busy loop Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 19/26] drm/i915/gt: Fix selftests on PREEMPT_RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 20/26] drm/i915/gt: Set stop_timeout() correctly on PREEMPT-RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 21/26] drm/i915/display: Remove uncore lock from vlv_atomic_update_fifo Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 22/26] drm/i915: Use sleeping selftests for igt_atomic on PREEMPT_RT Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 23/26] Revert "drm/i915: Depend on !PREEMPT_RT." Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 24/26] PREEMPT_RT injection Maarten Lankhorst
2026-03-13  9:36   ` kernel test robot
2026-03-10 11:57 ` [PATCH v7 25/26] FOR-CI: bump MAX_STACK_TRACE_ENTRIES Maarten Lankhorst
2026-03-10 11:57 ` [PATCH v7 26/26] drm/i915/gt: Add a spinlock to prevent starvation of irq_work Maarten Lankhorst
2026-03-10 17:04   ` Sebastian Andrzej Siewior
2026-03-10 18:14     ` Maarten Lankhorst
2026-03-12 11:35       ` Sebastian Andrzej Siewior
2026-03-10 17:22   ` Sebastian Andrzej Siewior
2026-03-10 19:03     ` Maarten Lankhorst
2026-03-12 11:38       ` Sebastian Andrzej Siewior
2026-03-10 12:11 ` ✗ CI.checkpatch: warning for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev14) Patchwork
2026-03-10 12:12 ` ✓ CI.KUnit: success " Patchwork
2026-03-10 12:27 ` ✗ CI.checksparse: warning " Patchwork
2026-03-10 13:24 ` ✓ Xe.CI.BAT: success " Patchwork
2026-03-10 14:20 ` ✗ i915.CI.BAT: failure " Patchwork
2026-03-10 17:31 ` ✗ Xe.CI.FULL: " Patchwork
2026-03-10 17:35 ` ✗ Fi.CI.BUILD: failure for drm/i915/display: All patches to make PREEMPT_RT work on i915 + xe. (rev15) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2026-03-11  0:52 [PATCH v7 24/26] PREEMPT_RT injection kernel test robot
2026-03-11 22:37 kernel test robot
2026-03-11 22:58 kernel test robot
2026-03-13 17:52 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.