|
@@ -45,6 +45,15 @@ int iommu_detected __read_mostly = 0;
|
|
*/
|
|
*/
|
|
int iommu_pass_through __read_mostly;
|
|
int iommu_pass_through __read_mostly;
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Group multi-function PCI devices into a single device-group for the
|
|
|
|
+ * iommu_device_group interface. This tells the iommu driver to pretend
|
|
|
|
+ * it cannot distinguish between functions of a device, exposing only one
|
|
|
|
+ * group for the device. Useful for disallowing use of individual PCI
|
|
|
|
+ * functions from userspace drivers.
|
|
|
|
+ */
|
|
|
|
+int iommu_group_mf __read_mostly;
|
|
|
|
+
|
|
extern struct iommu_table_entry __iommu_table[], __iommu_table_end[];
|
|
extern struct iommu_table_entry __iommu_table[], __iommu_table_end[];
|
|
|
|
|
|
/* Dummy device used for NULL arguments (normally ISA). */
|
|
/* Dummy device used for NULL arguments (normally ISA). */
|
|
@@ -169,6 +178,8 @@ static __init int iommu_setup(char *p)
|
|
#endif
|
|
#endif
|
|
if (!strncmp(p, "pt", 2))
|
|
if (!strncmp(p, "pt", 2))
|
|
iommu_pass_through = 1;
|
|
iommu_pass_through = 1;
|
|
|
|
+ if (!strncmp(p, "group_mf", 8))
|
|
|
|
+ iommu_group_mf = 1;
|
|
|
|
|
|
gart_parse_options(p);
|
|
gart_parse_options(p);
|
|
|
|
|