[radeon-alex:drm-next-4.19-wip 110/115] htmldocs: drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:90: warning: Function parameter or member 'type' not described in 'amdgpu_mn'
kbuild test robot
lkp at intel.com
Wed Jun 13 23:21:27 UTC 2018
tree: git://people.freedesktop.org/~agd5f/linux.git drm-next-4.19-wip
head: 69c20a808c86d7fd6cd64a9c8cc6b024a88c45fa
commit: b55f236b433d63a5c4c90c5a40c9694eb5cbff34 [110/115] drm/amdgpu: fix documentation of amdgpu_mn.c v2
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
WARNING: convert(1) not found, for SVG to PDF conversion install ImageMagick (https://www.imagemagick.org)
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ibss' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.connect' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.keys' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ie' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ie_len' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.bssid' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.ssid' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.default_key' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.default_mgmt_key' not described in 'wireless_dev'
include/net/cfg80211.h:4216: warning: Function parameter or member 'wext.prev_bssid_valid' not described in 'wireless_dev'
include/net/mac80211.h:2282: warning: Function parameter or member 'radiotap_timestamp.units_pos' not described in 'ieee80211_hw'
include/net/mac80211.h:2282: warning: Function parameter or member 'radiotap_timestamp.accuracy' not described in 'ieee80211_hw'
include/net/mac80211.h:955: warning: Function parameter or member 'control.rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.rts_cts_rate_idx' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.use_rts' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.use_cts_prot' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.short_preamble' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.skip_table' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.jiffies' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.vif' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.hw_key' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.flags' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'control.enqueue_time' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'ack' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'ack.cookie' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.ack_signal' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.ampdu_ack_len' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.ampdu_len' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.antenna' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.tx_time' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.is_valid_ack_signal' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'driver_rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info'
include/net/mac80211.h:955: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
net/mac80211/sta_info.h:586: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
kernel/sched/fair.c:3719: warning: Function parameter or member 'flags' not described in 'attach_entity_load_avg'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_excl.active' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.cb' not described in 'dma_buf'
include/linux/dma-buf.h:307: warning: Function parameter or member 'cb_shared.poll' not described in 'dma_buf'
include/linux/dma-buf.h:307: 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/gpio/driver.h:142: warning: Function parameter or member 'request_key' not described in 'gpio_irq_chip'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.sign' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.realbits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.storagebits' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.shift' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.repeat' not described in 'iio_chan_spec'
include/linux/iio/iio.h:270: warning: Function parameter or member 'scan_type.endianness' not described in 'iio_chan_spec'
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'
include/linux/mtd/rawnand.h:752: warning: Function parameter or member 'timings.sdr' not described in 'nand_data_interface'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.in' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:817: warning: Function parameter or member 'buf.out' not described in 'nand_op_data_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.cmd' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.data' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:863: warning: Function parameter or member 'ctx.waitrdy' not described in 'nand_op_instr'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.addr' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1010: warning: Function parameter or member 'ctx.data' not described in 'nand_op_parser_pattern_elem'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.desc' not described in 'nand_chip'
include/linux/mtd/rawnand.h:1313: warning: Function parameter or member 'manufacturer.priv' not described in 'nand_chip'
include/linux/regulator/driver.h:222: warning: Function parameter or member 'resume_early' not described in 'regulator_ops'
drivers/regulator/core.c:4306: warning: Excess function parameter 'state' description in 'regulator_suspend_late'
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/usb/typec/mux.c:186: warning: Function parameter or member 'mux' not described in 'typec_mux_unregister'
drivers/usb/typec/mux.c:186: warning: Excess function parameter 'sw' description in 'typec_mux_unregister'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:90: warning: Function parameter or member 'type' not described in 'amdgpu_mn'
>> drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:282: warning: Function parameter or member 'mm' not described in 'amdgpu_mn_invalidate_range_start_hsa'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_pin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_unpin' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_res_obj' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_get_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_import_sg_table' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_vunmap' not described in 'drm_driver'
include/drm/drm_drv.h:610: warning: Function parameter or member 'gem_prime_mmap' not described in 'drm_driver'
drivers/gpu/drm/i915/i915_vma.h:48: warning: cannot understand function prototype: 'struct i915_vma '
drivers/gpu/drm/i915/i915_vma.h:1: warning: no structured comments found
include/drm/tinydrm/tinydrm.h:34: warning: Function parameter or member 'fb_dirty' not described in 'tinydrm_device'
drivers/gpu/drm/tinydrm/mipi-dbi.c:272: warning: Function parameter or member 'crtc_state' not described in 'mipi_dbi_enable_flush'
drivers/gpu/drm/tinydrm/mipi-dbi.c:272: warning: Function parameter or member 'plane_state' not described in 'mipi_dbi_enable_flush'
include/media/v4l2-dev.h:42: warning: Enum value 'VFL_TYPE_MAX' not described in enum 'vfl_devnode_type'
include/linux/skbuff.h:850: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__unused' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'pfmemalloc' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:850: warning: Function parameter or member 'inner_ipproto' not described in 'sk_buff'
include/net/sock.h:234: warning: Function parameter or member 'skc_addrpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_portpair' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_ipv6only' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_net_refcnt' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_daddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_v6_rcv_saddr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_cookie' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_listener' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_dr' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_rcv_wnd' not described in 'sock_common'
include/net/sock.h:234: warning: Function parameter or member 'skc_tw_rcv_nxt' not described in 'sock_common'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:488: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:1955: warning: Function parameter or member 'qdisc_hash' 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'
include/linux/rcupdate.h:572: ERROR: Unexpected indentation.
include/linux/rcupdate.h:576: ERROR: Unexpected indentation.
include/linux/rcupdate.h:580: WARNING: Block quote ends without a blank line; unexpected unindent.
include/linux/rcupdate.h:582: WARNING: Block quote ends without a blank line; unexpected unindent.
include/linux/rcupdate.h:582: WARNING: Inline literal start-string without end-string.
Documentation/crypto/crypto_engine.rst:13: ERROR: Unexpected indentation.
Documentation/crypto/crypto_engine.rst:15: WARNING: Block quote ends without a blank line; unexpected unindent.
kernel/time/timer.c:1259: ERROR: Unexpected indentation.
kernel/time/timer.c:1261: ERROR: Unexpected indentation.
kernel/time/timer.c:1262: 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:1129: WARNING: Block quote ends without a blank line; unexpected unindent.
kernel/signal.c:327: WARNING: Inline literal start-string without end-string.
Documentation/driver-api/device_connection.rst:42: ERROR: Error in "kernel-doc" directive:
maximum 4 argument(s) allowed, 7 supplied.
vim +90 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
d38ceaf9 Alex Deucher 2015-04-20 @90
b55f236b Christian König 2018-06-05 91 /**
b55f236b Christian König 2018-06-05 92 * struct amdgpu_mn_node
b55f236b Christian König 2018-06-05 93 *
b55f236b Christian König 2018-06-05 94 * @it: interval node defining start-last of the affected address range
b55f236b Christian König 2018-06-05 95 * @bos: list of all BOs in the affected address range
b55f236b Christian König 2018-06-05 96 *
b55f236b Christian König 2018-06-05 97 * Manages all BOs which are affected of a certain range of address space.
b55f236b Christian König 2018-06-05 98 */
d38ceaf9 Alex Deucher 2015-04-20 99 struct amdgpu_mn_node {
d38ceaf9 Alex Deucher 2015-04-20 100 struct interval_tree_node it;
d38ceaf9 Alex Deucher 2015-04-20 101 struct list_head bos;
d38ceaf9 Alex Deucher 2015-04-20 102 };
d38ceaf9 Alex Deucher 2015-04-20 103
d38ceaf9 Alex Deucher 2015-04-20 104 /**
b55f236b Christian König 2018-06-05 105 * amdgpu_mn_destroy - destroy the MMU notifier
d38ceaf9 Alex Deucher 2015-04-20 106 *
d38ceaf9 Alex Deucher 2015-04-20 107 * @work: previously sheduled work item
d38ceaf9 Alex Deucher 2015-04-20 108 *
d38ceaf9 Alex Deucher 2015-04-20 109 * Lazy destroys the notifier from a work item
d38ceaf9 Alex Deucher 2015-04-20 110 */
d38ceaf9 Alex Deucher 2015-04-20 111 static void amdgpu_mn_destroy(struct work_struct *work)
d38ceaf9 Alex Deucher 2015-04-20 112 {
b593fc01 Christian König 2018-06-13 113 struct amdgpu_mn *amn = container_of(work, struct amdgpu_mn, work);
b593fc01 Christian König 2018-06-13 114 struct amdgpu_device *adev = amn->adev;
d38ceaf9 Alex Deucher 2015-04-20 115 struct amdgpu_mn_node *node, *next_node;
d38ceaf9 Alex Deucher 2015-04-20 116 struct amdgpu_bo *bo, *next_bo;
d38ceaf9 Alex Deucher 2015-04-20 117
d38ceaf9 Alex Deucher 2015-04-20 118 mutex_lock(&adev->mn_lock);
b593fc01 Christian König 2018-06-13 119 down_write(&amn->lock);
b593fc01 Christian König 2018-06-13 120 hash_del(&amn->node);
f808c13f Davidlohr Bueso 2017-09-08 121 rbtree_postorder_for_each_entry_safe(node, next_node,
b593fc01 Christian König 2018-06-13 122 &amn->objects.rb_root, it.rb) {
d38ceaf9 Alex Deucher 2015-04-20 123 list_for_each_entry_safe(bo, next_bo, &node->bos, mn_list) {
d38ceaf9 Alex Deucher 2015-04-20 124 bo->mn = NULL;
d38ceaf9 Alex Deucher 2015-04-20 125 list_del_init(&bo->mn_list);
d38ceaf9 Alex Deucher 2015-04-20 126 }
d38ceaf9 Alex Deucher 2015-04-20 127 kfree(node);
d38ceaf9 Alex Deucher 2015-04-20 128 }
b593fc01 Christian König 2018-06-13 129 up_write(&amn->lock);
b8ea3783 Felix Kuehling 2016-02-16 130 mutex_unlock(&adev->mn_lock);
b593fc01 Christian König 2018-06-13 131 mmu_notifier_unregister_no_release(&amn->mn, amn->mm);
b593fc01 Christian König 2018-06-13 132 kfree(amn);
d38ceaf9 Alex Deucher 2015-04-20 133 }
d38ceaf9 Alex Deucher 2015-04-20 134
d38ceaf9 Alex Deucher 2015-04-20 135 /**
d38ceaf9 Alex Deucher 2015-04-20 136 * amdgpu_mn_release - callback to notify about mm destruction
d38ceaf9 Alex Deucher 2015-04-20 137 *
d38ceaf9 Alex Deucher 2015-04-20 138 * @mn: our notifier
b55f236b Christian König 2018-06-05 139 * @mm: the mm this callback is about
d38ceaf9 Alex Deucher 2015-04-20 140 *
d38ceaf9 Alex Deucher 2015-04-20 141 * Shedule a work item to lazy destroy our notifier.
d38ceaf9 Alex Deucher 2015-04-20 142 */
d38ceaf9 Alex Deucher 2015-04-20 143 static void amdgpu_mn_release(struct mmu_notifier *mn,
d38ceaf9 Alex Deucher 2015-04-20 144 struct mm_struct *mm)
d38ceaf9 Alex Deucher 2015-04-20 145 {
b593fc01 Christian König 2018-06-13 146 struct amdgpu_mn *amn = container_of(mn, struct amdgpu_mn, mn);
b55f236b Christian König 2018-06-05 147
b593fc01 Christian König 2018-06-13 148 INIT_WORK(&amn->work, amdgpu_mn_destroy);
b593fc01 Christian König 2018-06-13 149 schedule_work(&amn->work);
d38ceaf9 Alex Deucher 2015-04-20 150 }
d38ceaf9 Alex Deucher 2015-04-20 151
3fe89771 Christian König 2017-09-12 152
3fe89771 Christian König 2017-09-12 153 /**
b55f236b Christian König 2018-06-05 154 * amdgpu_mn_lock - take the write side lock for this notifier
b55f236b Christian König 2018-06-05 155 *
b55f236b Christian König 2018-06-05 156 * @mn: our notifier
3fe89771 Christian König 2017-09-12 157 */
3fe89771 Christian König 2017-09-12 158 void amdgpu_mn_lock(struct amdgpu_mn *mn)
3fe89771 Christian König 2017-09-12 159 {
3fe89771 Christian König 2017-09-12 160 if (mn)
3fe89771 Christian König 2017-09-12 161 down_write(&mn->lock);
3fe89771 Christian König 2017-09-12 162 }
3fe89771 Christian König 2017-09-12 163
3fe89771 Christian König 2017-09-12 164 /**
b55f236b Christian König 2018-06-05 165 * amdgpu_mn_unlock - drop the write side lock for this notifier
b55f236b Christian König 2018-06-05 166 *
b55f236b Christian König 2018-06-05 167 * @mn: our notifier
3fe89771 Christian König 2017-09-12 168 */
3fe89771 Christian König 2017-09-12 169 void amdgpu_mn_unlock(struct amdgpu_mn *mn)
3fe89771 Christian König 2017-09-12 170 {
3fe89771 Christian König 2017-09-12 171 if (mn)
3fe89771 Christian König 2017-09-12 172 up_write(&mn->lock);
3fe89771 Christian König 2017-09-12 173 }
3fe89771 Christian König 2017-09-12 174
d38ceaf9 Alex Deucher 2015-04-20 175 /**
b55f236b Christian König 2018-06-05 176 * amdgpu_mn_read_lock - take the read side lock for this notifier
1ed3d256 Christian König 2017-09-05 177 *
b593fc01 Christian König 2018-06-13 178 * @amn: our notifier
1ed3d256 Christian König 2017-09-05 179 */
b593fc01 Christian König 2018-06-13 180 static void amdgpu_mn_read_lock(struct amdgpu_mn *amn)
1ed3d256 Christian König 2017-09-05 181 {
b593fc01 Christian König 2018-06-13 182 mutex_lock(&amn->read_lock);
b593fc01 Christian König 2018-06-13 183 if (atomic_inc_return(&amn->recursion) == 1)
b593fc01 Christian König 2018-06-13 184 down_read_non_owner(&amn->lock);
b593fc01 Christian König 2018-06-13 185 mutex_unlock(&amn->read_lock);
1ed3d256 Christian König 2017-09-05 186 }
1ed3d256 Christian König 2017-09-05 187
1ed3d256 Christian König 2017-09-05 188 /**
b55f236b Christian König 2018-06-05 189 * amdgpu_mn_read_unlock - drop the read side lock for this notifier
1ed3d256 Christian König 2017-09-05 190 *
b593fc01 Christian König 2018-06-13 191 * @amn: our notifier
1ed3d256 Christian König 2017-09-05 192 */
b593fc01 Christian König 2018-06-13 193 static void amdgpu_mn_read_unlock(struct amdgpu_mn *amn)
1ed3d256 Christian König 2017-09-05 194 {
b593fc01 Christian König 2018-06-13 195 if (atomic_dec_return(&amn->recursion) == 0)
b593fc01 Christian König 2018-06-13 196 up_read_non_owner(&amn->lock);
1ed3d256 Christian König 2017-09-05 197 }
1ed3d256 Christian König 2017-09-05 198
d38ceaf9 Alex Deucher 2015-04-20 199 /**
ae20f12d Christian König 2016-03-18 200 * amdgpu_mn_invalidate_node - unmap all BOs of a node
d38ceaf9 Alex Deucher 2015-04-20 201 *
ae20f12d Christian König 2016-03-18 202 * @node: the node with the BOs to unmap
b55f236b Christian König 2018-06-05 203 * @start: start of address range affected
b55f236b Christian König 2018-06-05 204 * @end: end of address range affected
d38ceaf9 Alex Deucher 2015-04-20 205 *
b55f236b Christian König 2018-06-05 206 * Block for operations on BOs to finish and mark pages as accessed and
b55f236b Christian König 2018-06-05 207 * potentially dirty.
d38ceaf9 Alex Deucher 2015-04-20 208 */
ae20f12d Christian König 2016-03-18 209 static void amdgpu_mn_invalidate_node(struct amdgpu_mn_node *node,
d38ceaf9 Alex Deucher 2015-04-20 210 unsigned long start,
d38ceaf9 Alex Deucher 2015-04-20 211 unsigned long end)
d38ceaf9 Alex Deucher 2015-04-20 212 {
d38ceaf9 Alex Deucher 2015-04-20 213 struct amdgpu_bo *bo;
7ab7e8a4 Jack Xiao 2015-04-27 214 long r;
d38ceaf9 Alex Deucher 2015-04-20 215
d38ceaf9 Alex Deucher 2015-04-20 216 list_for_each_entry(bo, &node->bos, mn_list) {
d38ceaf9 Alex Deucher 2015-04-20 217
ae20f12d Christian König 2016-03-18 218 if (!amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm, start, end))
a961ea73 Christian König 2015-05-04 219 continue;
a961ea73 Christian König 2015-05-04 220
d38ceaf9 Alex Deucher 2015-04-20 221 r = reservation_object_wait_timeout_rcu(bo->tbo.resv,
d38ceaf9 Alex Deucher 2015-04-20 222 true, false, MAX_SCHEDULE_TIMEOUT);
7ab7e8a4 Jack Xiao 2015-04-27 223 if (r <= 0)
7ab7e8a4 Jack Xiao 2015-04-27 224 DRM_ERROR("(%ld) failed to wait for user bo\n", r);
d38ceaf9 Alex Deucher 2015-04-20 225
1b0c0f9d Christian König 2017-09-05 226 amdgpu_ttm_tt_mark_user_pages(bo->tbo.ttm);
d38ceaf9 Alex Deucher 2015-04-20 227 }
d38ceaf9 Alex Deucher 2015-04-20 228 }
0d2b42b0 Christian König 2016-03-18 229
ae20f12d Christian König 2016-03-18 230 /**
e52482de Felix Kuehling 2018-03-23 231 * amdgpu_mn_invalidate_range_start_gfx - callback to notify about mm change
ae20f12d Christian König 2016-03-18 232 *
ae20f12d Christian König 2016-03-18 233 * @mn: our notifier
b55f236b Christian König 2018-06-05 234 * @mm: the mm this callback is about
ae20f12d Christian König 2016-03-18 235 * @start: start of updated range
ae20f12d Christian König 2016-03-18 236 * @end: end of updated range
ae20f12d Christian König 2016-03-18 237 *
b55f236b Christian König 2018-06-05 238 * Block for operations on BOs to finish and mark pages as accessed and
b55f236b Christian König 2018-06-05 239 * potentially dirty.
ae20f12d Christian König 2016-03-18 240 */
e52482de Felix Kuehling 2018-03-23 241 static void amdgpu_mn_invalidate_range_start_gfx(struct mmu_notifier *mn,
ae20f12d Christian König 2016-03-18 242 struct mm_struct *mm,
ae20f12d Christian König 2016-03-18 243 unsigned long start,
ae20f12d Christian König 2016-03-18 244 unsigned long end)
ae20f12d Christian König 2016-03-18 245 {
b593fc01 Christian König 2018-06-13 246 struct amdgpu_mn *amn = container_of(mn, struct amdgpu_mn, mn);
ae20f12d Christian König 2016-03-18 247 struct interval_tree_node *it;
ae20f12d Christian König 2016-03-18 248
ae20f12d Christian König 2016-03-18 249 /* notification is exclusive, but interval is inclusive */
ae20f12d Christian König 2016-03-18 250 end -= 1;
ae20f12d Christian König 2016-03-18 251
b593fc01 Christian König 2018-06-13 252 amdgpu_mn_read_lock(amn);
ae20f12d Christian König 2016-03-18 253
b593fc01 Christian König 2018-06-13 254 it = interval_tree_iter_first(&amn->objects, start, end);
ae20f12d Christian König 2016-03-18 255 while (it) {
ae20f12d Christian König 2016-03-18 256 struct amdgpu_mn_node *node;
ae20f12d Christian König 2016-03-18 257
ae20f12d Christian König 2016-03-18 258 node = container_of(it, struct amdgpu_mn_node, it);
ae20f12d Christian König 2016-03-18 259 it = interval_tree_iter_next(it, start, end);
ae20f12d Christian König 2016-03-18 260
ae20f12d Christian König 2016-03-18 261 amdgpu_mn_invalidate_node(node, start, end);
ae20f12d Christian König 2016-03-18 262 }
1ed3d256 Christian König 2017-09-05 263 }
ae20f12d Christian König 2016-03-18 264
1ed3d256 Christian König 2017-09-05 265 /**
e52482de Felix Kuehling 2018-03-23 266 * amdgpu_mn_invalidate_range_start_hsa - callback to notify about mm change
e52482de Felix Kuehling 2018-03-23 267 *
e52482de Felix Kuehling 2018-03-23 268 * @mn: our notifier
e52482de Felix Kuehling 2018-03-23 269 * @mn: the mm this callback is about
e52482de Felix Kuehling 2018-03-23 270 * @start: start of updated range
e52482de Felix Kuehling 2018-03-23 271 * @end: end of updated range
e52482de Felix Kuehling 2018-03-23 272 *
e52482de Felix Kuehling 2018-03-23 273 * We temporarily evict all BOs between start and end. This
e52482de Felix Kuehling 2018-03-23 274 * necessitates evicting all user-mode queues of the process. The BOs
e52482de Felix Kuehling 2018-03-23 275 * are restorted in amdgpu_mn_invalidate_range_end_hsa.
e52482de Felix Kuehling 2018-03-23 276 */
e52482de Felix Kuehling 2018-03-23 277 static void amdgpu_mn_invalidate_range_start_hsa(struct mmu_notifier *mn,
e52482de Felix Kuehling 2018-03-23 278 struct mm_struct *mm,
e52482de Felix Kuehling 2018-03-23 279 unsigned long start,
e52482de Felix Kuehling 2018-03-23 280 unsigned long end)
e52482de Felix Kuehling 2018-03-23 281 {
b593fc01 Christian König 2018-06-13 @282 struct amdgpu_mn *amn = container_of(mn, struct amdgpu_mn, mn);
e52482de Felix Kuehling 2018-03-23 283 struct interval_tree_node *it;
e52482de Felix Kuehling 2018-03-23 284
e52482de Felix Kuehling 2018-03-23 285 /* notification is exclusive, but interval is inclusive */
e52482de Felix Kuehling 2018-03-23 286 end -= 1;
e52482de Felix Kuehling 2018-03-23 287
b593fc01 Christian König 2018-06-13 288 amdgpu_mn_read_lock(amn);
e52482de Felix Kuehling 2018-03-23 289
b593fc01 Christian König 2018-06-13 290 it = interval_tree_iter_first(&amn->objects, start, end);
e52482de Felix Kuehling 2018-03-23 291 while (it) {
e52482de Felix Kuehling 2018-03-23 292 struct amdgpu_mn_node *node;
e52482de Felix Kuehling 2018-03-23 293 struct amdgpu_bo *bo;
e52482de Felix Kuehling 2018-03-23 294
e52482de Felix Kuehling 2018-03-23 295 node = container_of(it, struct amdgpu_mn_node, it);
e52482de Felix Kuehling 2018-03-23 296 it = interval_tree_iter_next(it, start, end);
e52482de Felix Kuehling 2018-03-23 297
e52482de Felix Kuehling 2018-03-23 298 list_for_each_entry(bo, &node->bos, mn_list) {
e52482de Felix Kuehling 2018-03-23 299 struct kgd_mem *mem = bo->kfd_bo;
e52482de Felix Kuehling 2018-03-23 300
e52482de Felix Kuehling 2018-03-23 301 if (amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm,
e52482de Felix Kuehling 2018-03-23 302 start, end))
e52482de Felix Kuehling 2018-03-23 303 amdgpu_amdkfd_evict_userptr(mem, mm);
e52482de Felix Kuehling 2018-03-23 304 }
e52482de Felix Kuehling 2018-03-23 305 }
e52482de Felix Kuehling 2018-03-23 306 }
e52482de Felix Kuehling 2018-03-23 307
:::::: The code at line 90 was first introduced by commit
:::::: d38ceaf99ed015f2a0b9af3499791bd3a3daae21 drm/amdgpu: add core driver (v4)
:::::: TO: Alex Deucher <alexander.deucher at amd.com>
:::::: CC: Alex Deucher <alexander.deucher at amd.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 6362 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20180614/adb588e8/attachment-0001.gz>
More information about the dri-devel
mailing list