From mboxrd@z Thu Jan 1 00:00:00 1970 From: kbuild test robot Subject: Re: [PATCH 3/7] drm/i915/perf: only append status when data is available Date: Thu, 17 Jan 2019 06:40:28 +0800 Message-ID: <201901170633.tD4Qui08%fengguang.wu@intel.com> References: <20190116153622.32576-4-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="EeQfGwPcQSOJBaQU" Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 484DE6F22A for ; Wed, 16 Jan 2019 22:41:26 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190116153622.32576-4-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org, kbuild-all@01.org, matthew.auld@intel.com List-Id: intel-gfx@lists.freedesktop.org --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Lionel, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on drm-intel/for-linux-next] [also build test WARNING on v5.0-rc2 next-20190116] [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/Lionel-Landwerlin/drm-i915-perf-rework-aging-tail-workaround/20190117-000149 base: git://anongit.freedesktop.org/drm-intel for-linux-next reproduce: make htmldocs All warnings (new ones prefixed by >>): include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf' include/linux/dma-buf.h:304: warning: Function parameter or member 'cb_shared.active' not described in 'dma_buf' include/linux/dma-fence-array.h:54: warning: Function parameter or member 'work' not described in 'dma_fence_array' include/linux/firmware/intel/stratix10-svc-client.h:1: warning: no structured comments found include/linux/gpio/driver.h:371: warning: Function parameter or member 'init_valid_mask' not described in 'gpio_chip' include/linux/iio/hw-consumer.h:1: warning: no structured comments found include/linux/input/sparse-keymap.h:46: warning: Function parameter or member 'sw' not described in 'key_entry' drivers/mtd/nand/raw/nand_base.c:420: warning: Function parameter or member 'chip' not described in 'nand_fill_oob' drivers/mtd/nand/raw/nand_bbt.c:173: warning: Function parameter or member 'this' not described in 'read_bbt' drivers/mtd/nand/raw/nand_bbt.c:173: warning: Excess function parameter 'chip' description in 'read_bbt' include/linux/regulator/machine.h:199: warning: Function parameter or member 'max_uV_step' not described in 'regulation_constraints' include/linux/regulator/driver.h:228: warning: Function parameter or member 'resume' not described in 'regulator_ops' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw0' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw1' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw2' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.esw3' not described in 'irb' arch/s390/include/asm/cio.h:245: warning: Function parameter or member 'esw.eadm' not described in 'irb' drivers/slimbus/stream.c:1: warning: no structured comments found include/linux/spi/spi.h:180: warning: Function parameter or member 'driver_override' not described in 'spi_device' drivers/target/target_core_device.c:1: warning: no structured comments found drivers/usb/typec/bus.c:1: warning: no structured comments found drivers/usb/typec/class.c:1: warning: no structured comments found include/linux/w1.h:281: warning: Function parameter or member 'of_match_table' not described in 'w1_family' fs/direct-io.c:257: warning: Excess function parameter 'offset' description in 'dio_complete' fs/file_table.c:1: warning: no structured comments found fs/libfs.c:477: warning: Excess function parameter 'available' description in 'simple_write_end' fs/posix_acl.c:646: warning: Function parameter or member 'inode' not described in 'posix_acl_update_mode' fs/posix_acl.c:646: warning: Function parameter or member 'mode_p' not described in 'posix_acl_update_mode' fs/posix_acl.c:646: warning: Function parameter or member 'acl' not described in 'posix_acl_update_mode' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:294: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:343: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:295: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_start_hsa' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Function parameter or member 'range' not described in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'mm' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'start' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:344: warning: Excess function parameter 'end' description in 'amdgpu_mn_invalidate_range_end' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:382: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor ' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:383: warning: cannot understand function prototype: 'struct amdgpu_vm_pt_cursor ' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_leaf' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_leaf' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'start' not described in 'for_each_amdgpu_vm_pt_leaf' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'end' not described in 'for_each_amdgpu_vm_pt_leaf' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:555: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_leaf' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'adev' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'vm' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'cursor' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:603: warning: Function parameter or member 'entry' not described in 'for_each_amdgpu_vm_pt_dfs_safe' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:845: warning: Function parameter or member 'level' not described in 'amdgpu_vm_bo_param' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1353: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_func' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'params' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'bo' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'level' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'pe' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'addr' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'count' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'incr' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:1520: warning: Function parameter or member 'flags' not described in 'amdgpu_vm_update_huge' drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3096: warning: Function parameter or member 'pasid' not described in 'amdgpu_vm_make_compute' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:128: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source @atomic_obj drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'atomic_obj_lock' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_link' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'backlight_caps' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'freesync_module' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'fw_dmcu' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h:203: warning: Function parameter or member 'dmcu_fw_version' not described in 'amdgpu_display_manager' drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c:1: warning: no structured comments found include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver' include/drm/drm_drv.h:618: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver' include/drm/drm_atomic_state_helper.h:1: warning: no structured comments found drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'dsc_dpcd' not described in 'drm_dp_dsc_sink_max_slice_count' drivers/gpu/drm/drm_dp_helper.c:1364: warning: Function parameter or member 'is_edp' not described in 'drm_dp_dsc_sink_max_slice_count' drivers/gpu/drm/i915/i915_vma.h:49: warning: cannot understand function prototype: 'struct i915_vma ' drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found drivers/gpu/drm/i915/intel_guc_fwif.h:536: warning: cannot understand function prototype: 'struct guc_log_buffer_state ' drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found >> drivers/gpu/drm/i915/i915_perf.c:644: warning: Function parameter or member 'oastatus' not described in 'gen8_append_oa_reports' >> drivers/gpu/drm/i915/i915_perf.c:928: warning: Function parameter or member 'oastatus1' not described in 'gen7_append_oa_reports' include/linux/skbuff.h:876: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'list' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'skb_mstamp_ns' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'head_frag' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'encapsulation' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'csum_valid' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member '__pkt_vlan_present_offset' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'vlan_present' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'csum_level' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff' include/linux/skbuff.h:876: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff' include/net/sock.h:238: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_portpair' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_cookie' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_listener' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common' include/net/sock.h:238: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common' include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.len' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.head' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_wq_raw' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock' include/net/sock.h:513: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock' include/linux/netdevice.h:2048: warning: Function parameter or member 'adj_list.upper' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'adj_list.lower' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'gso_partial_features' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'switchdev_ops' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'name_assign_type' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'mpls_ptr' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'xdp_prog' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'qdisc_hash' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device' include/linux/netdevice.h:2048: warning: Function parameter or member 'xps_rxqs_map' not described in 'net_device' include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(advertising' not described in 'phylink_link_state' include/linux/phylink.h:56: warning: Function parameter or member '__ETHTOOL_DECLARE_LINK_MODE_MASK(lp_advertising' not described in 'phylink_link_state' Documentation/admin-guide/cgroup-v2.rst:1509: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/admin-guide/cgroup-v2.rst:1511: WARNING: Block quote ends without a blank line; unexpected unindent. Documentation/admin-guide/cgroup-v2.rst:1512: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/interrupt.h:252: WARNING: Inline emphasis start-string without end-string. include/net/mac80211.h:1214: ERROR: Unexpected indentation. include/net/mac80211.h:1221: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:110: WARNING: Block quote ends without a blank line; unexpected unindent. include/linux/wait.h:113: ERROR: Unexpected indentation. include/linux/wait.h:115: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/time/hrtimer.c:1120: WARNING: Block quote ends without a blank line; unexpected unindent. kernel/signal.c:344: WARNING: Inline literal start-string without end-string. include/linux/kernel.h:137: WARNING: Inline interpreted text or phrase reference start-string without end-string. Documentation/driver-api/dmaengine/dmatest.rst:63: ERROR: Unexpected indentation. include/uapi/linux/firewire-cdev.h:312: WARNING: Inline literal start-string without end-string. Documentation/driver-api/gpio/board.rst:209: ERROR: Unexpected indentation. drivers/ata/libata-core.c:5959: ERROR: Unknown target name: "hw". drivers/message/fusion/mptbase.c:5057: WARNING: Definition list ends without a blank line; unexpected unindent. drivers/tty/serial/serial_core.c:1948: WARNING: Definition list ends without a blank line; unexpected unindent. include/linux/mtd/rawnand.h:1192: WARNING: Inline strong start-string without end-string. include/linux/mtd/rawnand.h:1194: WARNING: Inline strong start-string without end-string. include/linux/regulator/driver.h:287: ERROR: Unknown target name: "regulator_regmap_x_voltage". Documentation/driver-api/soundwire/locking.rst:50: ERROR: Inconsistent literal block quoting. Documentation/driver-api/soundwire/locking.rst:51: WARNING: Line block ends without a blank line. Documentation/driver-api/soundwire/locking.rst:55: WARNING: Inline substitution_reference start-string without end-string. Documentation/driver-api/soundwire/locking.rst:56: WARNING: Line block ends without a blank line. include/linux/spi/spi.h:368: ERROR: Unexpected indentation. fs/posix_acl.c:635: WARNING: Inline emphasis start-string without end-string. Documentation/filesystems/path-lookup.rst:347: WARNING: Title underline too short. vim +644 drivers/gpu/drm/i915/i915_perf.c d79651522 Robert Bragg 2016-11-07 617 d79651522 Robert Bragg 2016-11-07 618 /** d79651522 Robert Bragg 2016-11-07 619 * Copies all buffered OA reports into userspace read() buffer. d79651522 Robert Bragg 2016-11-07 620 * @stream: An i915-perf stream opened for OA metrics d79651522 Robert Bragg 2016-11-07 621 * @buf: destination buffer given by userspace d79651522 Robert Bragg 2016-11-07 622 * @count: the number of bytes userspace wants to read d79651522 Robert Bragg 2016-11-07 623 * @offset: (inout): the current position for writing into @buf d79651522 Robert Bragg 2016-11-07 624 * 16d98b31f Robert Bragg 2016-12-07 625 * Notably any error condition resulting in a short read (-%ENOSPC or 16d98b31f Robert Bragg 2016-12-07 626 * -%EFAULT) will be returned even though one or more records may d79651522 Robert Bragg 2016-11-07 627 * have been successfully copied. In this case it's up to the caller d79651522 Robert Bragg 2016-11-07 628 * to decide if the error should be squashed before returning to d79651522 Robert Bragg 2016-11-07 629 * userspace. d79651522 Robert Bragg 2016-11-07 630 * d79651522 Robert Bragg 2016-11-07 631 * Note: reports are consumed from the head, and appended to the e81b3a555 Robert Bragg 2017-05-11 632 * tail, so the tail chases the head?... If you think that's mad d79651522 Robert Bragg 2016-11-07 633 * and back-to-front you're not alone, but this follows the d79651522 Robert Bragg 2016-11-07 634 * Gen PRM naming convention. 16d98b31f Robert Bragg 2016-12-07 635 * 16d98b31f Robert Bragg 2016-12-07 636 * Returns: 0 on success, negative error code on failure. d79651522 Robert Bragg 2016-11-07 637 */ 19f81df28 Robert Bragg 2017-06-13 638 static int gen8_append_oa_reports(struct i915_perf_stream *stream, 6e39236ad Lionel Landwerlin 2019-01-16 639 u32 oastatus, 19f81df28 Robert Bragg 2017-06-13 640 char __user *buf, 19f81df28 Robert Bragg 2017-06-13 641 size_t count, 19f81df28 Robert Bragg 2017-06-13 642 size_t *offset) 19f81df28 Robert Bragg 2017-06-13 643 { 19f81df28 Robert Bragg 2017-06-13 @644 struct drm_i915_private *dev_priv = stream->dev_priv; 19f81df28 Robert Bragg 2017-06-13 645 int report_size = dev_priv->perf.oa.oa_buffer.format_size; 19f81df28 Robert Bragg 2017-06-13 646 u8 *oa_buf_base = dev_priv->perf.oa.oa_buffer.vaddr; 19f81df28 Robert Bragg 2017-06-13 647 u32 gtt_offset = i915_ggtt_offset(dev_priv->perf.oa.oa_buffer.vma); fe8416864 Joonas Lahtinen 2018-11-16 648 u32 mask = (OA_BUFFER_SIZE - 1); 19f81df28 Robert Bragg 2017-06-13 649 size_t start_offset = *offset; 19f81df28 Robert Bragg 2017-06-13 650 unsigned long flags; 19f81df28 Robert Bragg 2017-06-13 651 u32 head, tail; 19f81df28 Robert Bragg 2017-06-13 652 u32 taken; 19f81df28 Robert Bragg 2017-06-13 653 int ret = 0; 19f81df28 Robert Bragg 2017-06-13 654 19f81df28 Robert Bragg 2017-06-13 655 if (WARN_ON(!stream->enabled)) 19f81df28 Robert Bragg 2017-06-13 656 return -EIO; 19f81df28 Robert Bragg 2017-06-13 657 19f81df28 Robert Bragg 2017-06-13 658 spin_lock_irqsave(&dev_priv->perf.oa.oa_buffer.ptr_lock, flags); 19f81df28 Robert Bragg 2017-06-13 659 19f81df28 Robert Bragg 2017-06-13 660 head = dev_priv->perf.oa.oa_buffer.head; b667af43d Lionel Landwerlin 2019-01-16 661 tail = dev_priv->perf.oa.oa_buffer.tail; 19f81df28 Robert Bragg 2017-06-13 662 19f81df28 Robert Bragg 2017-06-13 663 spin_unlock_irqrestore(&dev_priv->perf.oa.oa_buffer.ptr_lock, flags); 19f81df28 Robert Bragg 2017-06-13 664 19f81df28 Robert Bragg 2017-06-13 665 /* 19f81df28 Robert Bragg 2017-06-13 666 * NB: oa_buffer.head/tail include the gtt_offset which we don't want 19f81df28 Robert Bragg 2017-06-13 667 * while indexing relative to oa_buf_base. 19f81df28 Robert Bragg 2017-06-13 668 */ 19f81df28 Robert Bragg 2017-06-13 669 head -= gtt_offset; 19f81df28 Robert Bragg 2017-06-13 670 tail -= gtt_offset; 19f81df28 Robert Bragg 2017-06-13 671 19f81df28 Robert Bragg 2017-06-13 672 /* 19f81df28 Robert Bragg 2017-06-13 673 * An out of bounds or misaligned head or tail pointer implies a driver 19f81df28 Robert Bragg 2017-06-13 674 * bug since we validate + align the tail pointers we read from the 19f81df28 Robert Bragg 2017-06-13 675 * hardware and we are in full control of the head pointer which should 19f81df28 Robert Bragg 2017-06-13 676 * only be incremented by multiples of the report size (notably also 19f81df28 Robert Bragg 2017-06-13 677 * all a power of two). 19f81df28 Robert Bragg 2017-06-13 678 */ fe8416864 Joonas Lahtinen 2018-11-16 679 if (WARN_ONCE(head > OA_BUFFER_SIZE || head % report_size || fe8416864 Joonas Lahtinen 2018-11-16 680 tail > OA_BUFFER_SIZE || tail % report_size, 19f81df28 Robert Bragg 2017-06-13 681 "Inconsistent OA buffer pointers: head = %u, tail = %u\n", 19f81df28 Robert Bragg 2017-06-13 682 head, tail)) 19f81df28 Robert Bragg 2017-06-13 683 return -EIO; 19f81df28 Robert Bragg 2017-06-13 684 6e39236ad Lionel Landwerlin 2019-01-16 685 /* 6e39236ad Lionel Landwerlin 2019-01-16 686 * If there is nothing to read, don't append the status report yet, 6e39236ad Lionel Landwerlin 2019-01-16 687 * wait until we have some data available. 6e39236ad Lionel Landwerlin 2019-01-16 688 */ 6e39236ad Lionel Landwerlin 2019-01-16 689 if (!OA_TAKEN(tail, head)) 6e39236ad Lionel Landwerlin 2019-01-16 690 return 0; 6e39236ad Lionel Landwerlin 2019-01-16 691 6e39236ad Lionel Landwerlin 2019-01-16 692 if (oastatus & GEN8_OASTATUS_REPORT_LOST) { 6e39236ad Lionel Landwerlin 2019-01-16 693 ret = append_oa_status(stream, buf, count, offset, 6e39236ad Lionel Landwerlin 2019-01-16 694 DRM_I915_PERF_RECORD_OA_REPORT_LOST); 6e39236ad Lionel Landwerlin 2019-01-16 695 if (ret) 6e39236ad Lionel Landwerlin 2019-01-16 696 return ret; 6e39236ad Lionel Landwerlin 2019-01-16 697 I915_WRITE(GEN8_OASTATUS, 6e39236ad Lionel Landwerlin 2019-01-16 698 oastatus & ~GEN8_OASTATUS_REPORT_LOST); 6e39236ad Lionel Landwerlin 2019-01-16 699 } 19f81df28 Robert Bragg 2017-06-13 700 19f81df28 Robert Bragg 2017-06-13 701 for (/* none */; 19f81df28 Robert Bragg 2017-06-13 702 (taken = OA_TAKEN(tail, head)); 19f81df28 Robert Bragg 2017-06-13 703 head = (head + report_size) & mask) { 19f81df28 Robert Bragg 2017-06-13 704 u8 *report = oa_buf_base + head; 19f81df28 Robert Bragg 2017-06-13 705 u32 *report32 = (void *)report; 19f81df28 Robert Bragg 2017-06-13 706 u32 ctx_id; 19f81df28 Robert Bragg 2017-06-13 707 u32 reason; 19f81df28 Robert Bragg 2017-06-13 708 19f81df28 Robert Bragg 2017-06-13 709 /* 19f81df28 Robert Bragg 2017-06-13 710 * All the report sizes factor neatly into the buffer 19f81df28 Robert Bragg 2017-06-13 711 * size so we never expect to see a report split 19f81df28 Robert Bragg 2017-06-13 712 * between the beginning and end of the buffer. 19f81df28 Robert Bragg 2017-06-13 713 * 19f81df28 Robert Bragg 2017-06-13 714 * Given the initial alignment check a misalignment 19f81df28 Robert Bragg 2017-06-13 715 * here would imply a driver bug that would result 19f81df28 Robert Bragg 2017-06-13 716 * in an overrun. 19f81df28 Robert Bragg 2017-06-13 717 */ fe8416864 Joonas Lahtinen 2018-11-16 718 if (WARN_ON((OA_BUFFER_SIZE - head) < report_size)) { 19f81df28 Robert Bragg 2017-06-13 719 DRM_ERROR("Spurious OA head ptr: non-integral report offset\n"); 19f81df28 Robert Bragg 2017-06-13 720 break; 19f81df28 Robert Bragg 2017-06-13 721 } 19f81df28 Robert Bragg 2017-06-13 722 19f81df28 Robert Bragg 2017-06-13 723 /* 19f81df28 Robert Bragg 2017-06-13 724 * The reason field includes flags identifying what 19f81df28 Robert Bragg 2017-06-13 725 * triggered this specific report (mostly timer 19f81df28 Robert Bragg 2017-06-13 726 * triggered or e.g. due to a context switch). 19f81df28 Robert Bragg 2017-06-13 727 * 19f81df28 Robert Bragg 2017-06-13 728 * This field is never expected to be zero so we can 19f81df28 Robert Bragg 2017-06-13 729 * check that the report isn't invalid before copying 19f81df28 Robert Bragg 2017-06-13 730 * it to userspace... 19f81df28 Robert Bragg 2017-06-13 731 */ 19f81df28 Robert Bragg 2017-06-13 732 reason = ((report32[0] >> OAREPORT_REASON_SHIFT) & 19f81df28 Robert Bragg 2017-06-13 733 OAREPORT_REASON_MASK); 19f81df28 Robert Bragg 2017-06-13 734 if (reason == 0) { 19f81df28 Robert Bragg 2017-06-13 735 if (__ratelimit(&dev_priv->perf.oa.spurious_report_rs)) 19f81df28 Robert Bragg 2017-06-13 736 DRM_NOTE("Skipping spurious, invalid OA report\n"); 19f81df28 Robert Bragg 2017-06-13 737 continue; 19f81df28 Robert Bragg 2017-06-13 738 } 19f81df28 Robert Bragg 2017-06-13 739 61d5676b5 Lionel Landwerlin 2018-06-02 740 ctx_id = report32[2] & dev_priv->perf.oa.specific_ctx_id_mask; 19f81df28 Robert Bragg 2017-06-13 741 19f81df28 Robert Bragg 2017-06-13 742 /* 19f81df28 Robert Bragg 2017-06-13 743 * Squash whatever is in the CTX_ID field if it's marked as 19f81df28 Robert Bragg 2017-06-13 744 * invalid to be sure we avoid false-positive, single-context 19f81df28 Robert Bragg 2017-06-13 745 * filtering below... 19f81df28 Robert Bragg 2017-06-13 746 * 19f81df28 Robert Bragg 2017-06-13 747 * Note: that we don't clear the valid_ctx_bit so userspace can 19f81df28 Robert Bragg 2017-06-13 748 * understand that the ID has been squashed by the kernel. 19f81df28 Robert Bragg 2017-06-13 749 */ 19f81df28 Robert Bragg 2017-06-13 750 if (!(report32[0] & dev_priv->perf.oa.gen8_valid_ctx_bit)) 19f81df28 Robert Bragg 2017-06-13 751 ctx_id = report32[2] = INVALID_CTX_ID; 19f81df28 Robert Bragg 2017-06-13 752 19f81df28 Robert Bragg 2017-06-13 753 /* 19f81df28 Robert Bragg 2017-06-13 754 * NB: For Gen 8 the OA unit no longer supports clock gating 19f81df28 Robert Bragg 2017-06-13 755 * off for a specific context and the kernel can't securely 19f81df28 Robert Bragg 2017-06-13 756 * stop the counters from updating as system-wide / global 19f81df28 Robert Bragg 2017-06-13 757 * values. 19f81df28 Robert Bragg 2017-06-13 758 * 19f81df28 Robert Bragg 2017-06-13 759 * Automatic reports now include a context ID so reports can be 19f81df28 Robert Bragg 2017-06-13 760 * filtered on the cpu but it's not worth trying to 19f81df28 Robert Bragg 2017-06-13 761 * automatically subtract/hide counter progress for other 19f81df28 Robert Bragg 2017-06-13 762 * contexts while filtering since we can't stop userspace 19f81df28 Robert Bragg 2017-06-13 763 * issuing MI_REPORT_PERF_COUNT commands which would still 19f81df28 Robert Bragg 2017-06-13 764 * provide a side-band view of the real values. 19f81df28 Robert Bragg 2017-06-13 765 * 19f81df28 Robert Bragg 2017-06-13 766 * To allow userspace (such as Mesa/GL_INTEL_performance_query) 19f81df28 Robert Bragg 2017-06-13 767 * to normalize counters for a single filtered context then it 19f81df28 Robert Bragg 2017-06-13 768 * needs be forwarded bookend context-switch reports so that it 19f81df28 Robert Bragg 2017-06-13 769 * can track switches in between MI_REPORT_PERF_COUNT commands 19f81df28 Robert Bragg 2017-06-13 770 * and can itself subtract/ignore the progress of counters 19f81df28 Robert Bragg 2017-06-13 771 * associated with other contexts. Note that the hardware 19f81df28 Robert Bragg 2017-06-13 772 * automatically triggers reports when switching to a new 19f81df28 Robert Bragg 2017-06-13 773 * context which are tagged with the ID of the newly active 19f81df28 Robert Bragg 2017-06-13 774 * context. To avoid the complexity (and likely fragility) of 19f81df28 Robert Bragg 2017-06-13 775 * reading ahead while parsing reports to try and minimize 19f81df28 Robert Bragg 2017-06-13 776 * forwarding redundant context switch reports (i.e. between 19f81df28 Robert Bragg 2017-06-13 777 * other, unrelated contexts) we simply elect to forward them 19f81df28 Robert Bragg 2017-06-13 778 * all. 19f81df28 Robert Bragg 2017-06-13 779 * 19f81df28 Robert Bragg 2017-06-13 780 * We don't rely solely on the reason field to identify context 19f81df28 Robert Bragg 2017-06-13 781 * switches since it's not-uncommon for periodic samples to 19f81df28 Robert Bragg 2017-06-13 782 * identify a switch before any 'context switch' report. 19f81df28 Robert Bragg 2017-06-13 783 */ 19f81df28 Robert Bragg 2017-06-13 784 if (!dev_priv->perf.oa.exclusive_stream->ctx || 19f81df28 Robert Bragg 2017-06-13 785 dev_priv->perf.oa.specific_ctx_id == ctx_id || 19f81df28 Robert Bragg 2017-06-13 786 (dev_priv->perf.oa.oa_buffer.last_ctx_id == 19f81df28 Robert Bragg 2017-06-13 787 dev_priv->perf.oa.specific_ctx_id) || 19f81df28 Robert Bragg 2017-06-13 788 reason & OAREPORT_REASON_CTX_SWITCH) { 19f81df28 Robert Bragg 2017-06-13 789 19f81df28 Robert Bragg 2017-06-13 790 /* 19f81df28 Robert Bragg 2017-06-13 791 * While filtering for a single context we avoid 19f81df28 Robert Bragg 2017-06-13 792 * leaking the IDs of other contexts. 19f81df28 Robert Bragg 2017-06-13 793 */ 19f81df28 Robert Bragg 2017-06-13 794 if (dev_priv->perf.oa.exclusive_stream->ctx && 19f81df28 Robert Bragg 2017-06-13 795 dev_priv->perf.oa.specific_ctx_id != ctx_id) { 19f81df28 Robert Bragg 2017-06-13 796 report32[2] = INVALID_CTX_ID; 19f81df28 Robert Bragg 2017-06-13 797 } 19f81df28 Robert Bragg 2017-06-13 798 19f81df28 Robert Bragg 2017-06-13 799 ret = append_oa_sample(stream, buf, count, offset, 19f81df28 Robert Bragg 2017-06-13 800 report); 19f81df28 Robert Bragg 2017-06-13 801 if (ret) 19f81df28 Robert Bragg 2017-06-13 802 break; 19f81df28 Robert Bragg 2017-06-13 803 19f81df28 Robert Bragg 2017-06-13 804 dev_priv->perf.oa.oa_buffer.last_ctx_id = ctx_id; 19f81df28 Robert Bragg 2017-06-13 805 } 19f81df28 Robert Bragg 2017-06-13 806 19f81df28 Robert Bragg 2017-06-13 807 /* b667af43d Lionel Landwerlin 2019-01-16 808 * Clear out the first 2 dword as a mean to detect unlanded b667af43d Lionel Landwerlin 2019-01-16 809 * reports. 19f81df28 Robert Bragg 2017-06-13 810 */ b667af43d Lionel Landwerlin 2019-01-16 811 report32[0] = report32[1] = 0; 19f81df28 Robert Bragg 2017-06-13 812 } 19f81df28 Robert Bragg 2017-06-13 813 19f81df28 Robert Bragg 2017-06-13 814 if (start_offset != *offset) { 19f81df28 Robert Bragg 2017-06-13 815 spin_lock_irqsave(&dev_priv->perf.oa.oa_buffer.ptr_lock, flags); 19f81df28 Robert Bragg 2017-06-13 816 19f81df28 Robert Bragg 2017-06-13 817 /* 19f81df28 Robert Bragg 2017-06-13 818 * We removed the gtt_offset for the copy loop above, indexing 19f81df28 Robert Bragg 2017-06-13 819 * relative to oa_buf_base so put back here... 19f81df28 Robert Bragg 2017-06-13 820 */ 19f81df28 Robert Bragg 2017-06-13 821 head += gtt_offset; 19f81df28 Robert Bragg 2017-06-13 822 19f81df28 Robert Bragg 2017-06-13 823 I915_WRITE(GEN8_OAHEADPTR, head & GEN8_OAHEADPTR_MASK); 19f81df28 Robert Bragg 2017-06-13 824 dev_priv->perf.oa.oa_buffer.head = head; 19f81df28 Robert Bragg 2017-06-13 825 19f81df28 Robert Bragg 2017-06-13 826 spin_unlock_irqrestore(&dev_priv->perf.oa.oa_buffer.ptr_lock, flags); 19f81df28 Robert Bragg 2017-06-13 827 } 19f81df28 Robert Bragg 2017-06-13 828 19f81df28 Robert Bragg 2017-06-13 829 return ret; 19f81df28 Robert Bragg 2017-06-13 830 } 19f81df28 Robert Bragg 2017-06-13 831 :::::: The code at line 644 was first introduced by commit :::::: 19f81df2859eb10e92d68991cefa39f826dea013 drm/i915/perf: Add OA unit support for Gen 8+ :::::: TO: Robert Bragg :::::: CC: Ben Widawsky --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation --EeQfGwPcQSOJBaQU Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== --EeQfGwPcQSOJBaQU--