Loading Documentation/ABI/testing/sysfs-bus-pci +18 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,24 @@ Description: re-discover previously removed devices. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../msi_irqs/ Date: September, 2011 Contact: Neil Horman <nhorman@tuxdriver.com> Description: The /sys/devices/.../msi_irqs directory contains a variable set of sub-directories, with each sub-directory being named after a corresponding msi irq vector allocated to that device. Each numbered sub-directory N contains attributes of that irq. Note that this directory is not created for device drivers which do not support msi irqs What: /sys/bus/pci/devices/.../msi_irqs/<N>/mode Date: September 2011 Contact: Neil Horman <nhorman@tuxdriver.com> Description: This attribute indicates the mode that the irq vector named by the parent directory is in (msi vs. msix) What: /sys/bus/pci/devices/.../remove Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Loading Documentation/kernel-parameters.txt +5 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. is a lot of faster off - do not initialize any AMD IOMMU found in the system force_isolation - Force device isolation for all devices. The IOMMU driver is not allowed anymore to lift isolation requirements as needed. This option does not override iommu=pt amijoy.map= [HW,JOY] Amiga joystick support Map of devices attached to JOY0DAT and JOY1DAT Loading arch/arm/mach-omap2/devices.c +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <plat/board.h> #include <plat/mcbsp.h> #include <plat/mmc.h> #include <plat/iommu.h> #include <plat/dma.h> #include <plat/omap_hwmod.h> #include <plat/omap_device.h> Loading Loading @@ -211,9 +212,15 @@ static struct platform_device omap3isp_device = { .resource = omap3isp_resources, }; static struct omap_iommu_arch_data omap3_isp_iommu = { .name = "isp", }; int omap3_init_camera(struct isp_platform_data *pdata) { omap3isp_device.dev.platform_data = pdata; omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu; return platform_device_register(&omap3isp_device); } Loading arch/arm/plat-omap/include/plat/iommu.h +28 −3 Original line number Diff line number Diff line Loading @@ -111,6 +111,32 @@ struct iommu_platform_data { u32 da_end; }; /** * struct iommu_arch_data - omap iommu private data * @name: name of the iommu device * @iommu_dev: handle of the iommu device * * This is an omap iommu private data object, which binds an iommu user * to its iommu device. This object should be placed at the iommu user's * dev_archdata so generic IOMMU API can be used without having to * utilize omap-specific plumbing anymore. */ struct omap_iommu_arch_data { const char *name; struct omap_iommu *iommu_dev; }; /** * dev_to_omap_iommu() - retrieves an omap iommu object from a user device * @dev: iommu client device */ static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev) { struct omap_iommu_arch_data *arch_data = dev->archdata.iommu; return arch_data->iommu_dev; } /* IOMMU errors */ #define OMAP_IOMMU_ERR_TLB_MISS (1 << 0) #define OMAP_IOMMU_ERR_TRANS_FAULT (1 << 1) Loading Loading @@ -163,8 +189,8 @@ extern int omap_iommu_set_isr(const char *name, void *priv), void *isr_priv); extern void omap_iommu_save_ctx(struct omap_iommu *obj); extern void omap_iommu_restore_ctx(struct omap_iommu *obj); extern void omap_iommu_save_ctx(struct device *dev); extern void omap_iommu_restore_ctx(struct device *dev); extern int omap_install_iommu_arch(const struct iommu_functions *ops); extern void omap_uninstall_iommu_arch(const struct iommu_functions *ops); Loading @@ -176,6 +202,5 @@ extern ssize_t omap_iommu_dump_ctx(struct omap_iommu *obj, char *buf, ssize_t len); extern size_t omap_dump_tlb_entries(struct omap_iommu *obj, char *buf, ssize_t len); struct device *omap_find_iommu_device(const char *name); #endif /* __MACH_IOMMU_H */ arch/arm/plat-omap/include/plat/iovmm.h +6 −6 Original line number Diff line number Diff line Loading @@ -72,18 +72,18 @@ struct iovm_struct { #define IOVMF_DA_FIXED (1 << (4 + IOVMF_SW_SHIFT)) extern struct iovm_struct *omap_find_iovm_area(struct omap_iommu *obj, u32 da); extern struct iovm_struct *omap_find_iovm_area(struct device *dev, u32 da); extern u32 omap_iommu_vmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da, omap_iommu_vmap(struct iommu_domain *domain, struct device *dev, u32 da, const struct sg_table *sgt, u32 flags); extern struct sg_table *omap_iommu_vunmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da); struct device *dev, u32 da); extern u32 omap_iommu_vmalloc(struct iommu_domain *domain, struct omap_iommu *obj, omap_iommu_vmalloc(struct iommu_domain *domain, struct device *dev, u32 da, size_t bytes, u32 flags); extern void omap_iommu_vfree(struct iommu_domain *domain, struct omap_iommu *obj, omap_iommu_vfree(struct iommu_domain *domain, struct device *dev, const u32 da); extern void *omap_da_to_va(struct omap_iommu *obj, u32 da); extern void *omap_da_to_va(struct device *dev, u32 da); #endif /* __IOMMU_MMAP_H */ Loading
Documentation/ABI/testing/sysfs-bus-pci +18 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,24 @@ Description: re-discover previously removed devices. Depends on CONFIG_HOTPLUG. What: /sys/bus/pci/devices/.../msi_irqs/ Date: September, 2011 Contact: Neil Horman <nhorman@tuxdriver.com> Description: The /sys/devices/.../msi_irqs directory contains a variable set of sub-directories, with each sub-directory being named after a corresponding msi irq vector allocated to that device. Each numbered sub-directory N contains attributes of that irq. Note that this directory is not created for device drivers which do not support msi irqs What: /sys/bus/pci/devices/.../msi_irqs/<N>/mode Date: September 2011 Contact: Neil Horman <nhorman@tuxdriver.com> Description: This attribute indicates the mode that the irq vector named by the parent directory is in (msi vs. msix) What: /sys/bus/pci/devices/.../remove Date: January 2009 Contact: Linux PCI developers <linux-pci@vger.kernel.org> Loading
Documentation/kernel-parameters.txt +5 −0 Original line number Diff line number Diff line Loading @@ -329,6 +329,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. is a lot of faster off - do not initialize any AMD IOMMU found in the system force_isolation - Force device isolation for all devices. The IOMMU driver is not allowed anymore to lift isolation requirements as needed. This option does not override iommu=pt amijoy.map= [HW,JOY] Amiga joystick support Map of devices attached to JOY0DAT and JOY1DAT Loading
arch/arm/mach-omap2/devices.c +7 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <plat/board.h> #include <plat/mcbsp.h> #include <plat/mmc.h> #include <plat/iommu.h> #include <plat/dma.h> #include <plat/omap_hwmod.h> #include <plat/omap_device.h> Loading Loading @@ -211,9 +212,15 @@ static struct platform_device omap3isp_device = { .resource = omap3isp_resources, }; static struct omap_iommu_arch_data omap3_isp_iommu = { .name = "isp", }; int omap3_init_camera(struct isp_platform_data *pdata) { omap3isp_device.dev.platform_data = pdata; omap3isp_device.dev.archdata.iommu = &omap3_isp_iommu; return platform_device_register(&omap3isp_device); } Loading
arch/arm/plat-omap/include/plat/iommu.h +28 −3 Original line number Diff line number Diff line Loading @@ -111,6 +111,32 @@ struct iommu_platform_data { u32 da_end; }; /** * struct iommu_arch_data - omap iommu private data * @name: name of the iommu device * @iommu_dev: handle of the iommu device * * This is an omap iommu private data object, which binds an iommu user * to its iommu device. This object should be placed at the iommu user's * dev_archdata so generic IOMMU API can be used without having to * utilize omap-specific plumbing anymore. */ struct omap_iommu_arch_data { const char *name; struct omap_iommu *iommu_dev; }; /** * dev_to_omap_iommu() - retrieves an omap iommu object from a user device * @dev: iommu client device */ static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev) { struct omap_iommu_arch_data *arch_data = dev->archdata.iommu; return arch_data->iommu_dev; } /* IOMMU errors */ #define OMAP_IOMMU_ERR_TLB_MISS (1 << 0) #define OMAP_IOMMU_ERR_TRANS_FAULT (1 << 1) Loading Loading @@ -163,8 +189,8 @@ extern int omap_iommu_set_isr(const char *name, void *priv), void *isr_priv); extern void omap_iommu_save_ctx(struct omap_iommu *obj); extern void omap_iommu_restore_ctx(struct omap_iommu *obj); extern void omap_iommu_save_ctx(struct device *dev); extern void omap_iommu_restore_ctx(struct device *dev); extern int omap_install_iommu_arch(const struct iommu_functions *ops); extern void omap_uninstall_iommu_arch(const struct iommu_functions *ops); Loading @@ -176,6 +202,5 @@ extern ssize_t omap_iommu_dump_ctx(struct omap_iommu *obj, char *buf, ssize_t len); extern size_t omap_dump_tlb_entries(struct omap_iommu *obj, char *buf, ssize_t len); struct device *omap_find_iommu_device(const char *name); #endif /* __MACH_IOMMU_H */
arch/arm/plat-omap/include/plat/iovmm.h +6 −6 Original line number Diff line number Diff line Loading @@ -72,18 +72,18 @@ struct iovm_struct { #define IOVMF_DA_FIXED (1 << (4 + IOVMF_SW_SHIFT)) extern struct iovm_struct *omap_find_iovm_area(struct omap_iommu *obj, u32 da); extern struct iovm_struct *omap_find_iovm_area(struct device *dev, u32 da); extern u32 omap_iommu_vmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da, omap_iommu_vmap(struct iommu_domain *domain, struct device *dev, u32 da, const struct sg_table *sgt, u32 flags); extern struct sg_table *omap_iommu_vunmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da); struct device *dev, u32 da); extern u32 omap_iommu_vmalloc(struct iommu_domain *domain, struct omap_iommu *obj, omap_iommu_vmalloc(struct iommu_domain *domain, struct device *dev, u32 da, size_t bytes, u32 flags); extern void omap_iommu_vfree(struct iommu_domain *domain, struct omap_iommu *obj, omap_iommu_vfree(struct iommu_domain *domain, struct device *dev, const u32 da); extern void *omap_da_to_va(struct omap_iommu *obj, u32 da); extern void *omap_da_to_va(struct device *dev, u32 da); #endif /* __IOMMU_MMAP_H */