OSDN Git Service

Merge tag 'iommu-updates-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Nov 2021 18:11:24 +0000 (11:11 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 4 Nov 2021 18:11:24 +0000 (11:11 -0700)
Pull iommu updates from Joerg Roedel:

 - Intel IOMMU Updates fro Lu Baolu:
     - Dump DMAR translation structure when DMA fault occurs
     - An optimization in the page table manipulation code
     - Use second level for GPA->HPA translation
     - Various cleanups

 - Arm SMMU Updates from Will
     - Minor optimisations to SMMUv3 command creation and submission
     - Numerous new compatible string for Qualcomm SMMUv2 implementations

 - Fixes for the SWIOTLB based implemenation of dma-iommu code for
   untrusted devices

 - Add support for r8a779a0 to the Renesas IOMMU driver and DT matching
   code for r8a77980

 - A couple of cleanups and fixes for the Apple DART IOMMU driver

 - Make use of generic report_iommu_fault() interface in the AMD IOMMU
   driver

 - Various smaller fixes and cleanups

* tag 'iommu-updates-v5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (35 commits)
  iommu/dma: Fix incorrect error return on iommu deferred attach
  iommu/dart: Initialize DART_STREAMS_ENABLE
  iommu/dma: Use kvcalloc() instead of kvzalloc()
  iommu/tegra-smmu: Use devm_bitmap_zalloc when applicable
  iommu/dart: Use kmemdup instead of kzalloc and memcpy
  iommu/vt-d: Avoid duplicate removing in __domain_mapping()
  iommu/vt-d: Convert the return type of first_pte_in_page to bool
  iommu/vt-d: Clean up unused PASID updating functions
  iommu/vt-d: Delete dev_has_feat callback
  iommu/vt-d: Use second level for GPA->HPA translation
  iommu/vt-d: Check FL and SL capability sanity in scalable mode
  iommu/vt-d: Remove duplicate identity domain flag
  iommu/vt-d: Dump DMAR translation structure when DMA fault occurs
  iommu/vt-d: Do not falsely log intel_iommu is unsupported kernel option
  iommu/arm-smmu-qcom: Request direct mapping for modem device
  iommu: arm-smmu-qcom: Add compatible for QCM2290
  dt-bindings: arm-smmu: Add compatible for QCM2290 SoC
  iommu/arm-smmu-qcom: Add SM6350 SMMU compatible
  dt-bindings: arm-smmu: Add compatible for SM6350 SoC
  iommu/arm-smmu-v3: Properly handle the return value of arm_smmu_cmdq_build_cmd()
  ...

1  2 
arch/x86/include/asm/fpu/api.h
drivers/iommu/amd/iommu.c
drivers/iommu/iommu.c
kernel/dma/swiotlb.c

@@@ -108,58 -106,4 +108,56 @@@ extern int cpu_has_xfeatures(u64 xfeatu
   */
  #define PASID_DISABLED        0
  
- static inline void update_pasid(void) { }
 +/* Trap handling */
 +extern int  fpu__exception_code(struct fpu *fpu, int trap_nr);
 +extern void fpu_sync_fpstate(struct fpu *fpu);
 +extern void fpu_reset_from_exception_fixup(void);
 +
 +/* Boot, hotplug and resume */
 +extern void fpu__init_cpu(void);
 +extern void fpu__init_system(struct cpuinfo_x86 *c);
 +extern void fpu__init_check_bugs(void);
 +extern void fpu__resume_cpu(void);
 +
 +#ifdef CONFIG_MATH_EMULATION
 +extern void fpstate_init_soft(struct swregs_state *soft);
 +#else
 +static inline void fpstate_init_soft(struct swregs_state *soft) {}
 +#endif
 +
 +/* State tracking */
 +DECLARE_PER_CPU(struct fpu *, fpu_fpregs_owner_ctx);
 +
 +/* Process cleanup */
 +#ifdef CONFIG_X86_64
 +extern void fpstate_free(struct fpu *fpu);
 +#else
 +static inline void fpstate_free(struct fpu *fpu) { }
 +#endif
 +
 +/* fpstate-related functions which are exported to KVM */
 +extern void fpstate_clear_xstate_component(struct fpstate *fps, unsigned int xfeature);
 +
 +/* KVM specific functions */
 +extern bool fpu_alloc_guest_fpstate(struct fpu_guest *gfpu);
 +extern void fpu_free_guest_fpstate(struct fpu_guest *gfpu);
 +extern int fpu_swap_kvm_fpstate(struct fpu_guest *gfpu, bool enter_guest);
 +
 +extern void fpu_copy_guest_fpstate_to_uabi(struct fpu_guest *gfpu, void *buf, unsigned int size, u32 pkru);
 +extern int fpu_copy_uabi_to_guest_fpstate(struct fpu_guest *gfpu, const void *buf, u64 xcr0, u32 *vpkru);
 +
 +static inline void fpstate_set_confidential(struct fpu_guest *gfpu)
 +{
 +      gfpu->fpstate->is_confidential = true;
 +}
 +
 +static inline bool fpstate_is_confidential(struct fpu_guest *gfpu)
 +{
 +      return gfpu->fpstate->is_confidential;
 +}
 +
 +/* prctl */
 +struct task_struct;
 +extern long fpu_xstate_prctl(struct task_struct *tsk, int option, unsigned long arg2);
 +
  #endif /* _ASM_X86_FPU_API_H */
Simple merge
Simple merge
Simple merge