Message ID | 20181008163216.97436-2-swboyd@chromium.org |
---|---|
State | New |
Headers | show |
Series | gpio chip cascade fixes | expand |
Hi Stephen,
I love your patch! Perhaps something to improve:
[auto build test WARNING on gpio/for-next]
[also build test WARNING on v4.19-rc7 next-20181008]
[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/Stephen-Boyd/gpio-chip-cascade-fixes/20181009-041639
base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next
reproduce: make htmldocs
All warnings (new ones prefixed by >>):
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/cfg80211.h:4869: warning: Excess function parameter 'ptr' description in 'reg_query_regdb_wmm'
include/net/mac80211.h:2328: warning: Function parameter or member 'radiotap_timestamp.units_pos' not described in 'ieee80211_hw'
include/net/mac80211.h:2328: warning: Function parameter or member 'radiotap_timestamp.accuracy' not described in 'ieee80211_hw'
include/net/mac80211.h:977: warning: Function parameter or member 'control.rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.rts_cts_rate_idx' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.use_rts' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.use_cts_prot' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.short_preamble' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.skip_table' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.jiffies' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.vif' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.hw_key' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.flags' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'control.enqueue_time' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'ack' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'ack.cookie' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.ack_signal' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.ampdu_ack_len' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.ampdu_len' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.antenna' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.tx_time' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.is_valid_ack_signal' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'status.status_driver_data' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'driver_rates' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'pad' not described in 'ieee80211_tx_info'
include/net/mac80211.h:977: warning: Function parameter or member 'rate_driver_data' not described in 'ieee80211_tx_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg.signal' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'rx_stats_avg.chain_signal' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.filtered' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.retry_failed' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.retry_count' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.lost_packets' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_tdls_pkt_time' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.msdu_retries' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.msdu_failed' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_ack' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.last_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.ack_signal_filled' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'status_stats.avg_ack_signal' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info'
net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info'
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/gpio/driver.h:105: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source private: For use by gpiochip_set_cascaded_irqchip()
>> include/linux/gpio/driver.h:167: warning: Function parameter or member 'parent_irq' not described in 'gpio_irq_chip'
Error: Cannot open file drivers/gpio/devres.c
Error: Cannot open file drivers/gpio/devres.c
WARNING: kernel-doc 'scripts/kernel-doc -rst -enable-lineno -export drivers/gpio/devres.c' failed with return code 2
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/pci/pci.c:218: warning: Excess function parameter 'p' description in 'pci_dev_str_match_path'
include/linux/regulator/driver.h:227: warning: Function parameter or member 'resume' not described in 'regulator_ops'
drivers/regulator/core.c:4479: warning: Excess function parameter 'state' description in 'regulator_suspend'
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
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:183: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_read_lock'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:254: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_invalidate_range_start_gfx'
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c:302: warning: Function parameter or member 'blockable' not described in 'amdgpu_mn_invalidate_range_start_hsa'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3011: warning: Excess function parameter 'dev' description in 'amdgpu_vm_get_task_info'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3012: warning: Function parameter or member 'adev' not described in 'amdgpu_vm_get_task_info'
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c:3012: warning: Excess function parameter 'dev' description in 'amdgpu_vm_get_task_info'
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'
include/drm/drm_panel.h:98: warning: Function parameter or member 'link' not described in 'drm_panel'
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:553: warning: cannot understand function prototype: 'struct guc_log_buffer_state '
drivers/gpu/drm/i915/i915_trace.h:1: warning: no structured comments found
include/linux/skbuff.h:860: warning: Function parameter or member 'dev_scratch' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'list' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'ip_defrag_offset' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'skb_mstamp' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member '__cloned_offset' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'head_frag' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member '__pkt_type_offset' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'encapsulation' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'encap_hdr_csum' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'csum_valid' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'csum_complete_sw' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'csum_level' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'inner_protocol_type' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'remcsum_offload' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'offload_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'offload_mr_fwd_mark' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'sender_cpu' not described in 'sk_buff'
include/linux/skbuff.h:860: warning: Function parameter or member 'reserved_tailroom' not described in 'sk_buff'
include/linux/skbuff.h:860: 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:509: warning: Function parameter or member 'sk_backlog.rmem_alloc' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.len' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.head' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_backlog.tail' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_wq_raw' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'tcp_rtx_queue' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_route_forced_caps' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_txtime_report_errors' not described in 'sock'
include/net/sock.h:509: warning: Function parameter or member 'sk_validate_xmit_skb' not described in 'sock'
include/linux/netdevice.h:2018: warning: Function parameter or member 'adj_list.upper' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'adj_list.lower' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'gso_partial_features' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'switchdev_ops' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'l3mdev_ops' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'xfrmdev_ops' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'tlsdev_ops' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'name_assign_type' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'ieee802154_ptr' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'mpls_ptr' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'xdp_prog' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'gro_flush_timeout' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'nf_hooks_ingress' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member '____cacheline_aligned_in_smp' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'qdisc_hash' not described in 'net_device'
include/linux/netdevice.h:2018: warning: Function parameter or member 'xps_cpus_map' not described in 'net_device'
include/linux/netdevice.h:2018: 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'
vim +167 include/linux/gpio/driver.h
bb1e88cc Alexandre Courbot 2014-02-09 22
c44eafd7 Thierry Reding 2017-11-07 23 #ifdef CONFIG_GPIOLIB_IRQCHIP
c44eafd7 Thierry Reding 2017-11-07 24 /**
c44eafd7 Thierry Reding 2017-11-07 25 * struct gpio_irq_chip - GPIO interrupt controller
c44eafd7 Thierry Reding 2017-11-07 26 */
c44eafd7 Thierry Reding 2017-11-07 27 struct gpio_irq_chip {
c44eafd7 Thierry Reding 2017-11-07 28 /**
da80ff81 Thierry Reding 2017-11-07 29 * @chip:
da80ff81 Thierry Reding 2017-11-07 30 *
da80ff81 Thierry Reding 2017-11-07 31 * GPIO IRQ chip implementation, provided by GPIO driver.
da80ff81 Thierry Reding 2017-11-07 32 */
da80ff81 Thierry Reding 2017-11-07 33 struct irq_chip *chip;
da80ff81 Thierry Reding 2017-11-07 34
da80ff81 Thierry Reding 2017-11-07 35 /**
f0fbe7bc Thierry Reding 2017-11-07 36 * @domain:
f0fbe7bc Thierry Reding 2017-11-07 37 *
f0fbe7bc Thierry Reding 2017-11-07 38 * Interrupt translation domain; responsible for mapping between GPIO
f0fbe7bc Thierry Reding 2017-11-07 39 * hwirq number and Linux IRQ number.
f0fbe7bc Thierry Reding 2017-11-07 40 */
f0fbe7bc Thierry Reding 2017-11-07 41 struct irq_domain *domain;
f0fbe7bc Thierry Reding 2017-11-07 42
f0fbe7bc Thierry Reding 2017-11-07 43 /**
c44eafd7 Thierry Reding 2017-11-07 44 * @domain_ops:
c44eafd7 Thierry Reding 2017-11-07 45 *
c44eafd7 Thierry Reding 2017-11-07 46 * Table of interrupt domain operations for this IRQ chip.
c44eafd7 Thierry Reding 2017-11-07 47 */
c44eafd7 Thierry Reding 2017-11-07 48 const struct irq_domain_ops *domain_ops;
c44eafd7 Thierry Reding 2017-11-07 49
c44eafd7 Thierry Reding 2017-11-07 50 /**
c7a0aa59 Thierry Reding 2017-11-07 51 * @handler:
c7a0aa59 Thierry Reding 2017-11-07 52 *
c7a0aa59 Thierry Reding 2017-11-07 53 * The IRQ handler to use (often a predefined IRQ core function) for
c7a0aa59 Thierry Reding 2017-11-07 54 * GPIO IRQs, provided by GPIO driver.
c7a0aa59 Thierry Reding 2017-11-07 55 */
c7a0aa59 Thierry Reding 2017-11-07 56 irq_flow_handler_t handler;
c7a0aa59 Thierry Reding 2017-11-07 57
c7a0aa59 Thierry Reding 2017-11-07 58 /**
3634eeb0 Thierry Reding 2017-11-07 59 * @default_type:
3634eeb0 Thierry Reding 2017-11-07 60 *
3634eeb0 Thierry Reding 2017-11-07 61 * Default IRQ triggering type applied during GPIO driver
3634eeb0 Thierry Reding 2017-11-07 62 * initialization, provided by GPIO driver.
3634eeb0 Thierry Reding 2017-11-07 63 */
3634eeb0 Thierry Reding 2017-11-07 64 unsigned int default_type;
3634eeb0 Thierry Reding 2017-11-07 65
3634eeb0 Thierry Reding 2017-11-07 66 /**
ca9df053 Thierry Reding 2017-11-07 67 * @lock_key:
ca9df053 Thierry Reding 2017-11-07 68 *
02ad0437 Randy Dunlap 2018-09-03 69 * Per GPIO IRQ chip lockdep class for IRQ lock.
ca9df053 Thierry Reding 2017-11-07 70 */
ca9df053 Thierry Reding 2017-11-07 71 struct lock_class_key *lock_key;
02ad0437 Randy Dunlap 2018-09-03 72
02ad0437 Randy Dunlap 2018-09-03 73 /**
02ad0437 Randy Dunlap 2018-09-03 74 * @request_key:
02ad0437 Randy Dunlap 2018-09-03 75 *
02ad0437 Randy Dunlap 2018-09-03 76 * Per GPIO IRQ chip lockdep class for IRQ request.
02ad0437 Randy Dunlap 2018-09-03 77 */
39c3fd58 Andrew Lunn 2017-12-02 78 struct lock_class_key *request_key;
ca9df053 Thierry Reding 2017-11-07 79
ca9df053 Thierry Reding 2017-11-07 80 /**
c44eafd7 Thierry Reding 2017-11-07 81 * @parent_handler:
c44eafd7 Thierry Reding 2017-11-07 82 *
c44eafd7 Thierry Reding 2017-11-07 83 * The interrupt handler for the GPIO chip's parent interrupts, may be
c44eafd7 Thierry Reding 2017-11-07 84 * NULL if the parent interrupts are nested rather than cascaded.
c44eafd7 Thierry Reding 2017-11-07 85 */
c44eafd7 Thierry Reding 2017-11-07 86 irq_flow_handler_t parent_handler;
c44eafd7 Thierry Reding 2017-11-07 87
c44eafd7 Thierry Reding 2017-11-07 88 /**
c44eafd7 Thierry Reding 2017-11-07 89 * @parent_handler_data:
c44eafd7 Thierry Reding 2017-11-07 90 *
c44eafd7 Thierry Reding 2017-11-07 91 * Data associated, and passed to, the handler for the parent
c44eafd7 Thierry Reding 2017-11-07 92 * interrupt.
c44eafd7 Thierry Reding 2017-11-07 93 */
c44eafd7 Thierry Reding 2017-11-07 94 void *parent_handler_data;
39e5f096 Thierry Reding 2017-11-07 95
39e5f096 Thierry Reding 2017-11-07 96 /**
39e5f096 Thierry Reding 2017-11-07 97 * @num_parents:
39e5f096 Thierry Reding 2017-11-07 98 *
39e5f096 Thierry Reding 2017-11-07 99 * The number of interrupt parents of a GPIO chip.
39e5f096 Thierry Reding 2017-11-07 100 */
39e5f096 Thierry Reding 2017-11-07 101 unsigned int num_parents;
39e5f096 Thierry Reding 2017-11-07 102
39e5f096 Thierry Reding 2017-11-07 103 /**
7f91778d Stephen Boyd 2018-10-08 104 * private: For use by gpiochip_set_cascaded_irqchip()
7f91778d Stephen Boyd 2018-10-08 @105 */
7f91778d Stephen Boyd 2018-10-08 106 unsigned int parent_irq;
7f91778d Stephen Boyd 2018-10-08 107
7f91778d Stephen Boyd 2018-10-08 108 /**
39e5f096 Thierry Reding 2017-11-07 109 * @parents:
39e5f096 Thierry Reding 2017-11-07 110 *
39e5f096 Thierry Reding 2017-11-07 111 * A list of interrupt parents of a GPIO chip. This is owned by the
39e5f096 Thierry Reding 2017-11-07 112 * driver, so the core will only reference this list, not modify it.
39e5f096 Thierry Reding 2017-11-07 113 */
39e5f096 Thierry Reding 2017-11-07 114 unsigned int *parents;
dc6bafee Thierry Reding 2017-11-07 115
dc6bafee Thierry Reding 2017-11-07 116 /**
e0d89728 Thierry Reding 2017-11-07 117 * @map:
e0d89728 Thierry Reding 2017-11-07 118 *
e0d89728 Thierry Reding 2017-11-07 119 * A list of interrupt parents for each line of a GPIO chip.
e0d89728 Thierry Reding 2017-11-07 120 */
e0d89728 Thierry Reding 2017-11-07 121 unsigned int *map;
e0d89728 Thierry Reding 2017-11-07 122
e0d89728 Thierry Reding 2017-11-07 123 /**
60ed54ca Thierry Reding 2017-11-07 124 * @threaded:
dc6bafee Thierry Reding 2017-11-07 125 *
60ed54ca Thierry Reding 2017-11-07 126 * True if set the interrupt handling uses nested threads.
dc6bafee Thierry Reding 2017-11-07 127 */
60ed54ca Thierry Reding 2017-11-07 128 bool threaded;
dc7b0387 Thierry Reding 2017-11-07 129
dc7b0387 Thierry Reding 2017-11-07 130 /**
dc7b0387 Thierry Reding 2017-11-07 131 * @need_valid_mask:
dc7b0387 Thierry Reding 2017-11-07 132 *
dc7b0387 Thierry Reding 2017-11-07 133 * If set core allocates @valid_mask with all bits set to one.
dc7b0387 Thierry Reding 2017-11-07 134 */
dc7b0387 Thierry Reding 2017-11-07 135 bool need_valid_mask;
dc7b0387 Thierry Reding 2017-11-07 136
dc7b0387 Thierry Reding 2017-11-07 137 /**
dc7b0387 Thierry Reding 2017-11-07 138 * @valid_mask:
dc7b0387 Thierry Reding 2017-11-07 139 *
dc7b0387 Thierry Reding 2017-11-07 140 * If not %NULL holds bitmask of GPIOs which are valid to be included
dc7b0387 Thierry Reding 2017-11-07 141 * in IRQ domain of the chip.
dc7b0387 Thierry Reding 2017-11-07 142 */
dc7b0387 Thierry Reding 2017-11-07 143 unsigned long *valid_mask;
8302cf58 Thierry Reding 2017-11-07 144
8302cf58 Thierry Reding 2017-11-07 145 /**
8302cf58 Thierry Reding 2017-11-07 146 * @first:
8302cf58 Thierry Reding 2017-11-07 147 *
8302cf58 Thierry Reding 2017-11-07 148 * Required for static IRQ allocation. If set, irq_domain_add_simple()
8302cf58 Thierry Reding 2017-11-07 149 * will allocate and map all IRQs during initialization.
8302cf58 Thierry Reding 2017-11-07 150 */
8302cf58 Thierry Reding 2017-11-07 151 unsigned int first;
461c1a7d Hans Verkuil 2018-09-08 152
461c1a7d Hans Verkuil 2018-09-08 153 /**
461c1a7d Hans Verkuil 2018-09-08 154 * @irq_enable:
461c1a7d Hans Verkuil 2018-09-08 155 *
461c1a7d Hans Verkuil 2018-09-08 156 * Store old irq_chip irq_enable callback
461c1a7d Hans Verkuil 2018-09-08 157 */
461c1a7d Hans Verkuil 2018-09-08 158 void (*irq_enable)(struct irq_data *data);
461c1a7d Hans Verkuil 2018-09-08 159
461c1a7d Hans Verkuil 2018-09-08 160 /**
461c1a7d Hans Verkuil 2018-09-08 161 * @irq_disable:
461c1a7d Hans Verkuil 2018-09-08 162 *
461c1a7d Hans Verkuil 2018-09-08 163 * Store old irq_chip irq_disable callback
461c1a7d Hans Verkuil 2018-09-08 164 */
461c1a7d Hans Verkuil 2018-09-08 165 void (*irq_disable)(struct irq_data *data);
c44eafd7 Thierry Reding 2017-11-07 166 };
da80ff81 Thierry Reding 2017-11-07 @167
:::::: The code at line 167 was first introduced by commit
:::::: da80ff81a8f54611b834d73149f8ac0d59151c87 gpio: Move irqchip into struct gpio_irq_chip
:::::: TO: Thierry Reding <treding@nvidia.com>
:::::: CC: Linus Walleij <linus.walleij@linaro.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Quoting kbuild test robot (2018-10-08 21:56:25) > Hi Stephen, > > I love your patch! Perhaps something to improve: [...] > net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.packets' not described in 'sta_info' > net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.bytes' not described in 'sta_info' > net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.last_rate' not described in 'sta_info' > net/mac80211/sta_info.h:588: warning: Function parameter or member 'tx_stats.msdu' not described in 'sta_info' > 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/gpio/driver.h:105: warning: Incorrect use of kernel-doc format: Documentation Makefile include scripts source private: For use by gpiochip_set_cascaded_irqchip() > >> include/linux/gpio/driver.h:167: warning: Function parameter or member 'parent_irq' not described in 'gpio_irq_chip' Ok! That was a little rough to pick out. Is there any way to mark something as private with inline kernel doc?
On Mon, Oct 8, 2018 at 6:32 PM Stephen Boyd <swboyd@chromium.org> wrote: > gpiochip_set_cascaded_irqchip() is passed 'parent_irq' as an argument > and then the address of that argument is assigned to the gpio chips > gpio_irq_chip 'parents' pointer shortly thereafter. This can't ever > work, because we've just assigned some stack address to a pointer that > we plan to dereference later in gpiochip_irq_map(). I ran into this > issue with the KASAN report below when gpiochip_irq_map() tried to setup > the parent irq with a total junk pointer for the 'parents' array. > > BUG: KASAN: stack-out-of-bounds in gpiochip_irq_map+0x228/0x248 > Read of size 4 at addr ffffffc0dde472e0 by task swapper/0/1 > > CPU: 7 PID: 1 Comm: swapper/0 Not tainted 4.14.72 #34 > Call trace: > [<ffffff9008093638>] dump_backtrace+0x0/0x718 > [<ffffff9008093da4>] show_stack+0x20/0x2c > [<ffffff90096b9224>] __dump_stack+0x20/0x28 > [<ffffff90096b91c8>] dump_stack+0x80/0xbc > [<ffffff900845a350>] print_address_description+0x70/0x238 > [<ffffff900845a8e4>] kasan_report+0x1cc/0x260 > [<ffffff900845aa14>] __asan_report_load4_noabort+0x2c/0x38 > [<ffffff900897e098>] gpiochip_irq_map+0x228/0x248 > [<ffffff900820cc08>] irq_domain_associate+0x114/0x2ec > [<ffffff900820d13c>] irq_create_mapping+0x120/0x234 > [<ffffff900820da78>] irq_create_fwspec_mapping+0x4c8/0x88c > [<ffffff900820e2d8>] irq_create_of_mapping+0x180/0x210 > [<ffffff900917114c>] of_irq_get+0x138/0x198 > [<ffffff9008dc70ac>] spi_drv_probe+0x94/0x178 > [<ffffff9008ca5168>] driver_probe_device+0x51c/0x824 > [<ffffff9008ca6538>] __device_attach_driver+0x148/0x20c > [<ffffff9008ca14cc>] bus_for_each_drv+0x120/0x188 > [<ffffff9008ca570c>] __device_attach+0x19c/0x2dc > [<ffffff9008ca586c>] device_initial_probe+0x20/0x2c > [<ffffff9008ca18bc>] bus_probe_device+0x80/0x154 > [<ffffff9008c9b9b4>] device_add+0x9b8/0xbdc > [<ffffff9008dc7640>] spi_add_device+0x1b8/0x380 > [<ffffff9008dcbaf0>] spi_register_controller+0x111c/0x1378 > [<ffffff9008dd6b10>] spi_geni_probe+0x4dc/0x6f8 > [<ffffff9008cab058>] platform_drv_probe+0xdc/0x130 > [<ffffff9008ca5168>] driver_probe_device+0x51c/0x824 > [<ffffff9008ca59cc>] __driver_attach+0x100/0x194 > [<ffffff9008ca0ea8>] bus_for_each_dev+0x104/0x16c > [<ffffff9008ca58c0>] driver_attach+0x48/0x54 > [<ffffff9008ca1edc>] bus_add_driver+0x274/0x498 > [<ffffff9008ca8448>] driver_register+0x1ac/0x230 > [<ffffff9008caaf6c>] __platform_driver_register+0xcc/0xdc > [<ffffff9009c4b33c>] spi_geni_driver_init+0x1c/0x24 > [<ffffff9008084cb8>] do_one_initcall+0x240/0x3dc > [<ffffff9009c017d0>] kernel_init_freeable+0x378/0x468 > [<ffffff90096e8240>] kernel_init+0x14/0x110 > [<ffffff9008086fcc>] ret_from_fork+0x10/0x18 > > The buggy address belongs to the page: > page:ffffffbf037791c0 count:0 mapcount:0 mapping: (null) index:0x0 > flags: 0x4000000000000000() > raw: 4000000000000000 0000000000000000 0000000000000000 00000000ffffffff > raw: ffffffbf037791e0 ffffffbf037791e0 0000000000000000 0000000000000000 > page dumped because: kasan: bad access detected > > Memory state around the buggy address: > ffffffc0dde47180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > ffffffc0dde47200: f1 f1 f1 f1 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f2 f2 > >ffffffc0dde47280: f2 f2 00 00 00 00 00 00 00 00 00 00 f3 f3 f3 f3 > ^ > ffffffc0dde47300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > ffffffc0dde47380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > > Let's leave around one unsigned int in the gpio_irq_chip struct for the > single parent irq case and repoint the 'parents' array at it. This way > code is left mostly intact to setup parents and we waste an extra few > bytes per structure of which there should be only a handful in a system. > > Cc: Evan Green <evgreen@chromium.org> > Cc: Thierry Reding <treding@nvidia.com> > Cc: Grygorii Strashko <grygorii.strashko@ti.com> > Fixes: e0d897289813 ("gpio: Implement tighter IRQ chip integration") > Signed-off-by: Stephen Boyd <swboyd@chromium.org> OMG critical fix. I fixed up the thing the kbuild robot was complaining about with some vanilla kerneldoc and applied for fixes since it's kind of urgent. Please check the result. Yours, Linus Walleij
Quoting Linus Walleij (2018-10-10 05:05:18) > On Mon, Oct 8, 2018 at 6:32 PM Stephen Boyd <swboyd@chromium.org> wrote: > > > > > Let's leave around one unsigned int in the gpio_irq_chip struct for the > > single parent irq case and repoint the 'parents' array at it. This way > > code is left mostly intact to setup parents and we waste an extra few > > bytes per structure of which there should be only a handful in a system. > > > > Cc: Evan Green <evgreen@chromium.org> > > Cc: Thierry Reding <treding@nvidia.com> > > Cc: Grygorii Strashko <grygorii.strashko@ti.com> > > Fixes: e0d897289813 ("gpio: Implement tighter IRQ chip integration") > > Signed-off-by: Stephen Boyd <swboyd@chromium.org> > > OMG critical fix. I fixed up the thing the kbuild robot was complaining > about with some vanilla kerneldoc and applied for fixes since it's kind > of urgent. > > Please check the result. > Looks good. Thanks!
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 86c147b3f4af..d9d823e3761b 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1684,7 +1684,8 @@ static void gpiochip_set_cascaded_irqchip(struct gpio_chip *gpiochip, irq_set_chained_handler_and_data(parent_irq, parent_handler, gpiochip); - gpiochip->irq.parents = &parent_irq; + gpiochip->irq.parent_irq = parent_irq; + gpiochip->irq.parents = &gpiochip->irq.parent_irq; gpiochip->irq.num_parents = 1; } diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index f6b95734073f..31e47b1d264e 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -100,6 +100,11 @@ struct gpio_irq_chip { */ unsigned int num_parents; + /** + * private: For use by gpiochip_set_cascaded_irqchip() + */ + unsigned int parent_irq; + /** * @parents: *