# 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-12.2.0-nolibc/sh4-linux/bin/sh4-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux-ld --version # < git log --format=%s --max-count=1 463f46e114f74465cf8d01b124e7b74ad1ce2afd # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux- allyesconfig # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # < make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux- help # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux- olddefconfig # make -s -j 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux- Generating include/generated/machtypes.h :1519:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S: Assembler messages: /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:85: Warning: overflow in branch to __restore_all; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:357: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence /kisskb/src/arch/sh/kernel/cpu/sh2/../../entry-common.S:360: Warning: overflow in branch to syscall_exit_work; converted into longer instruction sequence {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}: Error: .size expression for xpcs_config_aneg_c73 does not evaluate to a constant sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1 Please submit a full bug report, with preprocessed source (by using -freport-bug). See for instructions. make[6]: *** [/kisskb/src/scripts/Makefile.build:243: drivers/net/pcs/pcs-xpcs.o] Error 4 make[6]: *** Waiting for unfinished jobs.... make[5]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/net/pcs] Error 2 make[5]: *** Waiting for unfinished jobs.... {standard input}: Assembler messages: {standard input}: Warning: end of file not at end of a line; newline inserted {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive {standard input}:580: Error: displacement to undefined symbol .L76 overflows 8-bit field {standard input}:588: Error: displacement to undefined symbol .L104 overflows 8-bit field {standard input}:589: Error: displacement to undefined symbol .L75 overflows 12-bit field {standard input}:602: Error: displacement to undefined symbol .L96 overflows 12-bit field {standard input}:607: Error: displacement to undefined symbol .L80 overflows 8-bit field {standard input}:610: Error: displacement to undefined symbol .L81 overflows 8-bit field {standard input}:572: Error: pcrel too far {standard input}:593: Error: pcrel too far {standard input}:599: Error: pcrel too far sh4-linux-gcc: internal compiler error: Segmentation fault signal terminated program cc1 Please submit a full bug report, with preprocessed source (by using -freport-bug). See for instructions. make[6]: *** [/kisskb/src/scripts/Makefile.build:243: drivers/hwmon/pmbus/mp2975.o] Error 4 make[6]: *** Waiting for unfinished jobs.... make[5]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/hwmon/pmbus] Error 2 make[5]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/hwmon] Error 2 make[4]: *** Waiting for unfinished jobs.... make[4]: *** [/kisskb/src/scripts/Makefile.build:480: drivers/net] Error 2 make[3]: *** [/kisskb/src/scripts/Makefile.build:480: drivers] 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 160 ARCH=sh O=/kisskb/build/linus_allyesconfig_sh4-gcc12 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-12.2.0-nolibc/sh4-linux/bin/sh4-linux- ' returned non-zero exit status 2. # rm -rf /kisskb/build/linus_allyesconfig_sh4-gcc12 # Build took: 0:05:37.989622