History

Merge tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd

Pull iommufd implementation from Jason Gunthorpe: "iommufd is the user API to control the IOMMU subsystem as it relates to managing IO page tables that point at user space memory. It takes over from drivers/vfio/vfio_iommu_type1.c (aka the VFIO container) which is the VFIO specific interface for a similar idea. We see a broad need for extended features, some being highly IOMMU device specific: - Binding iommu_domain's to PASID/SSID - Userspace IO page tables, for ARM, x86 and S390 - Kernel bypassed invalidation of user page tables - Re-use of the KVM page table in the IOMMU - Dirty page tracking in the IOMMU - Runtime Increase/Decrease of IOPTE size - PRI support with faults resolved in userspace Many of these HW features exist to support VM use cases - for instance the combination of PASID, PRI and Userspace IO Page Tables allows an implementation of DMA Shared Virtual Addressing (vSVA) within a guest. Dirty tracking enables VM live migration with SRIOV devices and PASID support allow creating "scalable IOV" devices, among other things. As these features are fundamental to a VM platform they need to be uniformly exposed to all the driver families that do DMA into VMs, which is currently VFIO and VDPA" For more background, see the extended explanations in Jason's pull request: https://lore.kernel.org/lkml/Y5dzTU8dlmXTbzoJ@nvidia.com/ * tag 'for-linus-iommufd' of git://git.kernel.org/pub/scm/linux/kernel/git/jgg/iommufd: (62 commits) iommufd: Change the order of MSI setup iommufd: Improve a few unclear bits of code iommufd: Fix comment typos vfio: Move vfio group specific code into group.c vfio: Refactor dma APIs for emulated devices vfio: Wrap vfio group module init/clean code into helpers vfio: Refactor vfio_device open and close vfio: Make vfio_device_open() truly device specific vfio: Swap order of vfio_device_container_register() and open_device() vfio: Set device->group in helper function vfio: Create wrappers for group register/unregister vfio: Move the sanity check of the group to vfio_create_group() vfio: Simplify vfio_create_group() iommufd: Allow iommufd to supply /dev/vfio/vfio vfio: Make vfio_container optionally compiled vfio: Move container related MODULE_ALIAS statements into container.c vfio-iommufd: Support iommufd for emulated VFIO devices vfio-iommufd: Support iommufd for physical VFIO devices vfio-iommufd: Allow iommufd to be used in place of a container fd vfio: Use IOMMU_CAP_ENFORCE_CACHE_COHERENCY for vfio_file_enforced_coherent() ...

Linus Torvalds committed 3 years ago

Commit 08cdc212 parents aa5ad10 d6c55c083 files · +12804 −1466Browse files

Showing the changes to scripts (1 of 83 files). Show all

Unified · Split

scripts/kernel-doc+8−4
@@ -256,6 +256,7 @@ my $doc_inline_sect = '\s*\*\s*(@\s*[\w][\w\.]*\s*):(.*)'; · 255 unmodified lines
256my $doc_inline_end = '^\s*\*/\s*$';256my $doc_inline_end = '^\s*\*/\s*$';
257my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';257my $doc_inline_oneline = '^\s*/\*\*\s*(@[\w\s]+):\s*(.*)\s*\*/\s*$';
258my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';258my $export_symbol = '^\s*EXPORT_SYMBOL(_GPL)?\s*\(\s*(\w+)\s*\)\s*;';
259my $export_symbol_ns = '^\s*EXPORT_SYMBOL_NS(_GPL)?\s*\(\s*(\w+)\s*,\s*\w+\)\s*;';
259my $function_pointer = qr{([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)};260my $function_pointer = qr{([^\(]*\(\*)\s*\)\s*\(([^\)]*)\)};
260my $attribute = qr{__attribute__\s*\(\([a-z0-9,_\*\s\(\)]*\)\)}i;261my $attribute = qr{__attribute__\s*\(\([a-z0-9,_\*\s\(\)]*\)\)}i;
261 262
@@ -1960,6 +1961,10 @@ sub process_export_file($) { · 1698 unmodified lines
1960 next if (defined($nosymbol_table{$2}));1961 next if (defined($nosymbol_table{$2}));
1961 $function_table{$2} = 1;1962 $function_table{$2} = 1;
1962 }1963 }
1964 if (/$export_symbol_ns/) {
1965 next if (defined($nosymbol_table{$2}));
1966 $function_table{$2} = 1;
1967 }
1963 }1968 }
1964 1969
1965 close(IN);1970 close(IN);
@@ -2431,12 +2436,12 @@ found on PATH. · 465 unmodified lines
2431=item -export2436=item -export
2432 2437
2433Only output documentation for the symbols that have been exported using2438Only output documentation for the symbols that have been exported using
2434EXPORT_SYMBOL() or EXPORT_SYMBOL_GPL() in any input FILE or -export-file FILE.2439EXPORT_SYMBOL() and related macros in any input FILE or -export-file FILE.
2435 2440
2436=item -internal2441=item -internal
2437 2442
2438Only output documentation for the symbols that have NOT been exported using2443Only output documentation for the symbols that have NOT been exported using
2439EXPORT_SYMBOL() or EXPORT_SYMBOL_GPL() in any input FILE or -export-file FILE.2444EXPORT_SYMBOL() and related macros in any input FILE or -export-file FILE.
2440 2445
2441=item -function NAME2446=item -function NAME
2442 2447
@@ -2463,8 +2468,7 @@ Do not output DOC: sections. · 20 unmodified lines
2463 2468
2464=item -export-file FILE2469=item -export-file FILE
2465 2470
2466Specify an additional FILE in which to look for EXPORT_SYMBOL() and2471Specify an additional FILE in which to look for EXPORT_SYMBOL information.
2467EXPORT_SYMBOL_GPL().
2468 2472
2469To be used with -export or -internal.2473To be used with -export or -internal.
2470 2474