# git rev-parse -q --verify 7f92891778dff62303c070ac81de7b7d80de331a^{commit} 7f92891778dff62303c070ac81de7b7d80de331a already have revision, skipping fetch # git checkout -q -f -B kisskb 7f92891778dff62303c070ac81de7b7d80de331a # git clean -qxdf # < git log -1 # commit 7f92891778dff62303c070ac81de7b7d80de331a # Author: Alexey Kardashevskiy # Date: Thu Dec 20 12:10:36 2018 +1100 # # vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver # # POWER9 Witherspoon machines come with 4 or 6 V100 GPUs which are not # pluggable PCIe devices but still have PCIe links which are used # for config space and MMIO. In addition to that the GPUs have 6 NVLinks # which are connected to other GPUs and the POWER9 CPU. POWER9 chips # have a special unit on a die called an NPU which is an NVLink2 host bus # adapter with p2p connections to 2 to 3 GPUs, 3 or 2 NVLinks to each. # These systems also support ATS (address translation services) which is # a part of the NVLink2 protocol. Such GPUs also share on-board RAM # (16GB or 32GB) to the system via the same NVLink2 so a CPU has # cache-coherent access to a GPU RAM. # # This exports GPU RAM to the userspace as a new VFIO device region. This # preregisters the new memory as device memory as it might be used for DMA. # This inserts pfns from the fault handler as the GPU memory is not onlined # until the vendor driver is loaded and trained the NVLinks so doing this # earlier causes low level errors which we fence in the firmware so # it does not hurt the host system but still better be avoided; for the same # reason this does not map GPU RAM into the host kernel (usual thing for # emulated access otherwise). # # This exports an ATSD (Address Translation Shootdown) register of NPU which # allows TLB invalidations inside GPU for an operating system. The register # conveniently occupies a single 64k page. It is also presented to # the userspace as a new VFIO device region. One NPU has 8 ATSD registers, # each of them can be used for TLB invalidation in a GPU linked to this NPU. # This allocates one ATSD register per an NVLink bridge allowing passing # up to 6 registers. Due to the host firmware bug (just recently fixed), # only 1 ATSD register per NPU was actually advertised to the host system # so this passes that alone register via the first NVLink bridge device in # the group which is still enough as QEMU collects them all back and # presents to the guest via vPHB to mimic the emulated NPU PHB on the host. # # In order to provide the userspace with the information about GPU-to-NVLink # connections, this exports an additional capability called "tgt" # (which is an abbreviated host system bus address). The "tgt" property # tells the GPU its own system address and allows the guest driver to # conglomerate the routing information so each GPU knows how to get directly # to the other GPUs. # # For ATS to work, the nest MMU (an NVIDIA block in a P9 CPU) needs to # know LPID (a logical partition ID or a KVM guest hardware ID in other # words) and PID (a memory context ID of a userspace process, not to be # confused with a linux pid). This assigns a GPU to LPID in the NPU and # this is why this adds a listener for KVM on an IOMMU group. A PID comes # via NVLink from a GPU and NPU uses a PID wildcard to pass it through. # # This requires coherent memory and ATSD to be available on the host as # the GPU vendor only supports configurations with both features enabled # and other configurations are known not to work. Because of this and # because of the ways the features are advertised to the host system # (which is a device tree with very platform specific properties), # this requires enabled POWERNV platform. # # The V100 GPUs do not advertise any of these capabilities via the config # space and there are more than just one device ID so this relies on # the platform to tell whether these GPUs have special abilities such as # NVLinks. # # Signed-off-by: Alexey Kardashevskiy # Acked-by: Alex Williamson # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux-gcc --version # < /opt/cross/kisskb/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux-ld --version # < git log --format=%s --max-count=1 7f92891778dff62303c070ac81de7b7d80de331a # < make -s -j 48 ARCH=x86 O=/kisskb/build/powerpc-next_x86-allmodconfig_x86_64 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux- allmodconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_SAMPLES=n # yes \n | make -s -j 48 ARCH=x86 O=/kisskb/build/powerpc-next_x86-allmodconfig_x86_64 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux- oldconfig yes: standard output: Broken pipe # make -s -j 48 ARCH=x86 O=/kisskb/build/powerpc-next_x86-allmodconfig_x86_64 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux- /kisskb/src/kernel/cgroup/cgroup-v1.c: In function 'cgroup1_mount': /kisskb/src/kernel/cgroup/cgroup-v1.c:1256:20: warning: 'root' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:186:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/mm/vmstat.c: In function 'sysctl_vm_numa_stat_handler': /kisskb/src/mm/vmstat.c:89:5: warning: 'oldval' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/kernel/apic/io_apic.c: In function 'mp_map_pin_to_irq': /kisskb/src/arch/x86/kernel/apic/io_apic.c:1034:6: warning: 'irq' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/xen/mmu_pv.c: In function 'xen_remap_pfn': /kisskb/src/arch/x86/xen/mmu_pv.c:2787:12: warning: 'i' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/mm/hugetlb.c: In function 'alloc_pool_huge_page': /kisskb/src/mm/hugetlb.c:1433:5: warning: 'page' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/kernel/e820.c: In function 'e820__setup_pci_gap': /kisskb/src/arch/x86/kernel/e820.c:652:2: warning: 'gapstart' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/kernel/hw_breakpoint.c: In function 'hw_breakpoint_arch_parse': /kisskb/src/arch/x86/kernel/hw_breakpoint.c:366:18: warning: 'align' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/afs/dynroot.c: In function 'afs_lookup_atcell': /kisskb/src/fs/afs/dynroot.c:126:6: warning: 'len' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/kvm/svm.c: In function 'sev_dbg_crypt': /kisskb/src/arch/x86/kvm/svm.c:6754:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/arch/x86/kvm/svm.c: In function 'sev_launch_update_data': /kisskb/src/arch/x86/kvm/svm.c:6405:9: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/sched/psi.c: In function 'cgroup_move_task': /kisskb/src/kernel/sched/sched.h:1063:8: warning: 'rq' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/kernel/sched/psi.c:639:13: note: 'rq' was declared here /kisskb/src/fs/btrfs/ref-verify.c: In function 'process_extent_item.isra.2': /kisskb/src/fs/btrfs/ref-verify.c:503:2: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/btrfs/ref-verify.c: In function 'process_leaf.isra.3': /kisskb/src/fs/btrfs/ref-verify.c:555:2: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/lib/raid6/recov_avx512.c:387:2: warning: #warning "your version of binutils lacks AVX512 support" [-Wcpp] /kisskb/src/sound/hda/hdac_regmap.c: In function 'hda_reg_write': /kisskb/src/sound/hda/hdac_regmap.c:282:16: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/f2fs/file.c: In function 'f2fs_precache_extents': /kisskb/src/fs/f2fs/file.c:2926:6: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function 'regmap_raw_read': /kisskb/src/drivers/base/regmap/regmap.c:2594:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function '_regmap_raw_write': /kisskb/src/drivers/base/regmap/regmap.c:1855:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/f2fs/node.c: In function '__set_nat_cache_dirty': /kisskb/src/include/linux/list.h:93:12: warning: 'head' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/f2fs/node.c:237:24: note: 'head' was declared here /kisskb/src/fs/nfsd/nfs4xdr.c: In function 'nfsd4_encode_components_esc': /kisskb/src/fs/nfsd/nfs4xdr.c:2076:9: warning: 'str' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/nfsd/nfs4xdr.c:2081:11: warning: 'end' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:65:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:341:21: note: 'pdeo' was declared here /kisskb/src/net/bridge/br_netlink.c: In function 'br_process_vlan_info': /kisskb/src/net/bridge/br_netlink.c:589:10: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/sound/soc/codecs/arizona.c: In function 'arizona_hw_params': /kisskb/src/sound/soc/codecs/arizona.c:1893:3: warning: 'aif_rx_state' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/sound/soc/codecs/arizona.c:1890:3: warning: 'aif_tx_state' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/sound/soc/codecs/da7219-aad.c: In function 'da7219_aad_hptest_work': /kisskb/src/sound/soc/codecs/da7219-aad.c:321:17: warning: 'pll_ctrl' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/dma-buf/reservation.c: In function 'reservation_object_add_shared_replace': /kisskb/src/drivers/dma-buf/reservation.c:208:2: warning: 'k' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/dma-buf/reservation.c:211:7: warning: 'i' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/sound/soc/codecs/rt5665.c: In function 'rt5665_i2s_pin_event': /kisskb/src/sound/soc/codecs/rt5665.c:2666:33: warning: 'val2' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/sound/soc/codecs/rt5665.c:2663:33: warning: 'val1' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/ncsi/ncsi-manage.c: In function 'set_one_vid': /kisskb/src/net/ncsi/ncsi-manage.c:641:19: warning: 'vid' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/clk/sunxi-ng/ccu_mux.c: In function 'ccu_mux_helper_determine_rate': /kisskb/src/drivers/clk/sunxi-ng/ccu_mux.c:153:22: warning: 'best_parent' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/mac80211/mlme.c: In function 'ieee80211_handle_pwr_constr.isra.16': /kisskb/src/net/mac80211/mlme.c:1513:3: warning: 'pwr_level_cisco' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/mac80211/mesh_pathtbl.c: In function 'mesh_path_add': /kisskb/src/net/mac80211/mesh_pathtbl.c:417:28: warning: 'new_mpath' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c: In function 'amdgpu_set_pp_od_clk_voltage': /kisskb/src/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c:591:5: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/vmw_vsock/hyperv_transport.c: In function 'hvs_open_connection': /kisskb/src/net/vmw_vsock/hyperv_transport.c:399:24: warning: 'hvs_new' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/vmw_vsock/hyperv_transport.c:383:14: warning: 'hvs' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/vmw_vsock/hyperv_transport.c:202:20: warning: 'vnew' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/net/vmw_vsock/hyperv_transport.c:331:21: note: 'vnew' was declared here /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c: In function 'gmc_v8_0_process_interrupt': /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c:1452:10: warning: missing braces around initializer [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c:1452:10: warning: (near initialization for 'task_info.process_name') [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c: In function 'gmc_v9_0_process_interrupt': /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c:264:10: warning: missing braces around initializer [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c:264:10: warning: (near initialization for 'task_info.process_name') [-Wmissing-braces] /kisskb/src/drivers/i2c/i2c-core-base.c: In function 'i2c_generic_scl_recovery': /kisskb/src/drivers/i2c/i2c-core-base.c:235:5: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c: In function 'dcn10_log_hubbub_state': /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c:94:9: warning: missing braces around initializer [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer.c:94:9: warning: (near initialization for 'wm.sets') [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer_debug.c: In function 'dcn10_get_hubbub_state': /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer_debug.c:74:9: warning: missing braces around initializer [-Wmissing-braces] /kisskb/src/drivers/gpu/drm/amd/amdgpu/../display/dc/dcn10/dcn10_hw_sequencer_debug.c:74:9: warning: (near initialization for 'wm.sets') [-Wmissing-braces] /kisskb/src/drivers/iommu/io-pgtable-arm-v7s.c: In function '__arm_v7s_map.constprop.5': /kisskb/src/drivers/iommu/io-pgtable-arm-v7s.c:438:7: warning: 'cptep' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/lightnvm/core.c: In function 'nvm_get_bb_meta': /kisskb/src/drivers/lightnvm/core.c:977:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.c: In function 'gk104_top_oneinit': /kisskb/src/drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.c:102:1: warning: 'inst' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/gpu/drm/nouveau/nvkm/subdev/top/gk104.c:102:1: warning: 'type' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/nvme/host/lightnvm.c: In function 'nvme_nvm_get_chk_meta': /kisskb/src/drivers/nvme/host/lightnvm.c:580:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/pinctrl/intel/pinctrl-cherryview.c: In function 'chv_gpio_probe': /kisskb/src/drivers/pinctrl/intel/pinctrl-cherryview.c:1627:29: warning: 'irq_base' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/soc/qcom/rpmh.c: In function 'rpmh_write_batch': /kisskb/src/drivers/soc/qcom/rpmh.c:355:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/video/fbdev/intelfb/intelfbhw.c: In function 'calc_pll_params': /kisskb/src/drivers/video/fbdev/intelfb/intelfbhw.c:1012:2: warning: 'm2' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/video/fbdev/intelfb/intelfbhw.c:1012:2: warning: 'm1' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/xen-netback/hash.c: In function 'xenvif_find_hash': /kisskb/src/drivers/net/xen-netback/hash.c:118:6: warning: 'val' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c: In function 'tun_get_user': /kisskb/src/drivers/net/tun.c:1819:30: warning: 'copylen' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1513:34: warning: 'linear' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1729:46: note: 'linear' was declared here /kisskb/src/drivers/net/wireless/broadcom/b43/phy_n.c: In function 'b43_nphy_rf_ctl_override_rev7': /kisskb/src/drivers/net/wireless/broadcom/b43/phy_n.c:202:21: warning: 'val_addr' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/media/usb/dvb-usb/pctv452e.c: In function 'pctv452e_frontend_attach': /kisskb/src/drivers/media/usb/dvb-usb/pctv452e.c:922:2: warning: value computed is not used [-Wunused-value] /kisskb/src/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c: In function 'hclgevf_bind_ring_to_vector': /kisskb/src/drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c:839:16: warning: 'type' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c: In function 'update_root_ft_create': /kisskb/src/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:835:5: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c: In function 'rtl8723a_phy_lc_calibrate': /kisskb/src/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c:3481:23: warning: 'rf_amode' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/wireless/quantenna/qtnfmac/commands.c: In function 'qtnf_cmd_send_with_reply': /kisskb/src/drivers/net/wireless/quantenna/qtnfmac/commands.c:132:11: warning: 'resp' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/scripts/unifdef.c: In function 'Mpass': /kisskb/src/scripts/unifdef.c:453:28: warning: 'strncpy' output truncated before terminating nul copying 4 bytes from a string of the same length [-Wstringop-truncation] static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~ ./usr/include/linux/v4l2-controls.h:1105: found __[us]{8,16,32,64} type without #include Completed OK # rm -rf /kisskb/build/powerpc-next_x86-allmodconfig_x86_64 # Build took: 0:13:18.329533