# git rev-parse -q --verify 463f46e114f74465cf8d01b124e7b74ad1ce2afd^{commit} 463f46e114f74465cf8d01b124e7b74ad1ce2afd already have revision, skipping fetch # git checkout -q -f -B kisskb 463f46e114f74465cf8d01b124e7b74ad1ce2afd # git clean -qxdf # < git log -1 # commit 463f46e114f74465cf8d01b124e7b74ad1ce2afd # Merge: ff269e2cd5ad b2b67c997bf7 # Author: Linus Torvalds # Date: Wed Nov 1 16:44:56 2023 -1000 # # Merge tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd # # Pull iommufd updates from Jason Gunthorpe: # "This brings three new iommufd capabilities: # # - Dirty tracking for DMA. # # AMD/ARM/Intel CPUs can now record if a DMA writes to a page in the # IOPTEs within the IO page table. This can be used to generate a # record of what memory is being dirtied by DMA activities during a # VM migration process. A VMM like qemu will combine the IOMMU dirty # bits with the CPU's dirty log to determine what memory to transfer. # # VFIO already has a DMA dirty tracking framework that requires PCI # devices to implement tracking HW internally. The iommufd version # provides an alternative that the VMM can select, if available. The # two are designed to have very similar APIs. # # - Userspace controlled attributes for hardware page tables # (HWPT/iommu_domain). There are currently a few generic attributes # for HWPTs (support dirty tracking, and parent of a nest). This is # an entry point for the userspace iommu driver to control the HW in # detail. # # - Nested translation support for HWPTs. This is a 2D translation # scheme similar to the CPU where a DMA goes through a first stage to # determine an intermediate address which is then translated trough a # second stage to a physical address. # # Like for CPU translation the first stage table would exist in VM # controlled memory and the second stage is in the kernel and matches # the VM's guest to physical map. # # As every IOMMU has a unique set of parameter to describe the S1 IO # page table and its associated parameters the userspace IOMMU driver # has to marshal the information into the correct format. # # This is 1/3 of the feature, it allows creating the nested # translation and binding it to VFIO devices, however the API to # support IOTLB and ATC invalidation of the stage 1 io page table, # and forwarding of IO faults are still in progress. # # The series includes AMD and Intel support for dirty tracking. Intel # support for nested translation. # # Along the way are a number of internal items: # # - New iommu core items: ops->domain_alloc_user(), # ops->set_dirty_tracking, ops->read_and_clear_dirty(), # IOMMU_DOMAIN_NESTED, and iommu_copy_struct_from_user # # - UAF fix in iopt_area_split() # # - Spelling fixes and some test suite improvement" # # * tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd: (52 commits) # iommufd: Organize the mock domain alloc functions closer to Joerg's tree # iommufd/selftest: Fix page-size check in iommufd_test_dirty() # iommufd: Add iopt_area_alloc() # iommufd: Fix missing update of domains_itree after splitting iopt_area # iommu/vt-d: Disallow read-only mappings to nest parent domain # iommu/vt-d: Add nested domain allocation # iommu/vt-d: Set the nested domain to a device # iommu/vt-d: Make domain attach helpers to be extern # iommu/vt-d: Add helper to setup pasid nested translation # iommu/vt-d: Add helper for nested domain allocation # iommu/vt-d: Extend dmar_domain to support nested domain # iommufd: Add data structure for Intel VT-d stage-1 domain allocation # iommu/vt-d: Enhance capability check for nested parent domain allocation # iommufd/selftest: Add coverage for IOMMU_HWPT_ALLOC with nested HWPTs # iommufd/selftest: Add nested domain allocation for mock domain # iommu: Add iommu_copy_struct_from_user helper # iommufd: Add a nested HW pagetable object # iommu: Pass in parent domain with user_data to domain_alloc_user op # iommufd: Share iommufd_hwpt_alloc with IOMMUFD_OBJ_HWPT_NESTED # iommufd: Derive iommufd_hwpt_paging from iommufd_hw_pagetable # ... # < /opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux-ld --version # < git log --format=%s --max-count=1 463f46e114f74465cf8d01b124e7b74ad1ce2afd # make -s -j 40 ARCH=m68k O=/kisskb/build/linus_sun3_defconfig_m68k-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux- sun3_defconfig # < make -s -j 40 ARCH=m68k O=/kisskb/build/linus_sun3_defconfig_m68k-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux- help # make -s -j 40 ARCH=m68k O=/kisskb/build/linus_sun3_defconfig_m68k-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux- olddefconfig # make -s -j 40 ARCH=m68k O=/kisskb/build/linus_sun3_defconfig_m68k-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux- /kisskb/src/kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_new': /kisskb/src/kernel/bpf/task_iter.c:917:14: error: 'CSS_TASK_ITER_PROCS' undeclared (first use in this function) 917 | case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED: | ^~~~~~~~~~~~~~~~~~~ /kisskb/src/kernel/bpf/task_iter.c:917:14: note: each undeclared identifier is reported only once for each function it appears in /kisskb/src/kernel/bpf/task_iter.c:917:36: error: 'CSS_TASK_ITER_THREADED' undeclared (first use in this function) 917 | case CSS_TASK_ITER_PROCS | CSS_TASK_ITER_THREADED: | ^~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/kernel/bpf/task_iter.c:925:60: error: invalid application of 'sizeof' to incomplete type 'struct css_task_iter' 925 | kit->css_it = bpf_mem_alloc(&bpf_global_ma, sizeof(struct css_task_iter)); | ^~~~~~ /kisskb/src/kernel/bpf/task_iter.c:928:9: error: implicit declaration of function 'css_task_iter_start'; did you mean 'task_seq_start'? [-Werror=implicit-function-declaration] 928 | css_task_iter_start(css, flags, kit->css_it); | ^~~~~~~~~~~~~~~~~~~ | task_seq_start /kisskb/src/kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_next': /kisskb/src/kernel/bpf/task_iter.c:938:16: error: implicit declaration of function 'css_task_iter_next'; did you mean 'class_dev_iter_next'? [-Werror=implicit-function-declaration] 938 | return css_task_iter_next(kit->css_it); | ^~~~~~~~~~~~~~~~~~ | class_dev_iter_next /kisskb/src/kernel/bpf/task_iter.c:938:16: warning: returning 'int' from a function with return type 'struct task_struct *' makes pointer from integer without a cast [-Wint-conversion] 938 | return css_task_iter_next(kit->css_it); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/kernel/bpf/task_iter.c: In function 'bpf_iter_css_task_destroy': /kisskb/src/kernel/bpf/task_iter.c:947:9: error: implicit declaration of function 'css_task_iter_end' [-Werror=implicit-function-declaration] 947 | css_task_iter_end(kit->css_it); | ^~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors make[5]: *** [/kisskb/src/scripts/Makefile.build:243: kernel/bpf/task_iter.o] Error 1 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:480: kernel/bpf] Error 2 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [/kisskb/src/scripts/Makefile.build:480: kernel] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/Makefile:1913: .] Error 2 make[1]: *** [/kisskb/src/Makefile:234: __sub-make] Error 2 make: *** [Makefile:234: __sub-make] Error 2 Command 'make -s -j 40 ARCH=m68k O=/kisskb/build/linus_sun3_defconfig_m68k-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.3.0-nolibc/m68k-linux/bin/m68k-linux- ' returned non-zero exit status 2. # rm -rf /kisskb/build/linus_sun3_defconfig_m68k-gcc11 # Build took: 0:00:56.828948