lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 28 Nov 2008 10:50:20 +0800 From: "Han, Weidong" <weidong.han@...el.com> To: 'Joerg Roedel' <joerg.roedel@....com>, "'kvm@...r.kernel.org'" <kvm@...r.kernel.org>, "'linux-kernel@...r.kernel.org'" <linux-kernel@...r.kernel.org>, "'iommu@...ts.linux-foundation.org'" <iommu@...ts.linux-foundation.org> CC: "'avi@...hat.com'" <avi@...hat.com>, "'mingo@...hat.com'" <mingo@...hat.com>, "'dwmw2@...radead.org'" <dwmw2@...radead.org>, "'amit.shah@...hat.com'" <amit.shah@...hat.com> Subject: RE: [PATCH 2/9] introcude linux/iommu.h for an iommu api Joerg Roedel wrote: > This patch introduces the API to abstract the exported VT-d functions > for KVM into a generic API. This way the AMD IOMMU implementation can > plug into this API later. > > Signed-off-by: Joerg Roedel <joerg.roedel@....com> > --- > include/linux/iommu.h | 100 > +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, > 100 insertions(+), 0 deletions(-) create mode 100644 > include/linux/iommu.h > > diff --git a/include/linux/iommu.h b/include/linux/iommu.h > new file mode 100644 > index 0000000..6dbc279 > --- /dev/null > +++ b/include/linux/iommu.h > @@ -0,0 +1,100 @@ > +/* > + * Copyright (C) 2007-2008 Advanced Micro Devices, Inc. > + * Author: Joerg Roedel <joerg.roedel@....com> > + * > + * This program is free software; you can redistribute it and/or > modify it + * under the terms of the GNU General Public License > version 2 as published + * by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > 02111-1307 USA + */ > + > +#ifndef __LINUX_IOMMU_H > +#define __LINUX_IOMMU_H > + > +struct device; > + > +struct iommu_domain { > + void *priv; > +}; > + > +struct iommu_ops { > + int (*domain_init)(struct iommu_domain *domain, struct device *dev); needn't parameter dev, use attach_dev to assign dev to domain. > + void (*domain_destroy)(struct iommu_domain *domain); > + int (*attach_dev)(struct iommu_domain *domain, struct device *dev); > + void (*detach_dev)(struct iommu_domain *domain, struct device *dev); > + int (*map)(struct iommu_domain *domain, dma_addr_t iova, > + phys_addr_t paddr, size_t size, int prot); It maps/unmaps pages for iommu in kvm, so I think it's better change to int (*map_pages)(struct iommu_domain *domain, unsigned long gfn, unsigned long pfn, unsigned long npages, int prot); and also add unmap op: int (*unmap_pages)(struct iommu_domain *domain, unsigned long gfn, unsigned long npages); > + phys_addr_t (*iova_to_phys)(struct iommu_domain *domain, > + dma_addr_t iova); > +}; > + > +#ifdef CONFIG_IOMMU_API > + > +extern void register_iommu(struct iommu_ops *ops); > +extern bool iommu_found(void); > +extern struct iommu_domain *iommu_domain_alloc(struct device *dev); > +extern void iommu_domain_free(struct iommu_domain *domain); > +extern int iommu_attach_device(struct iommu_domain *domain, > + struct device *dev); > +extern void iommu_detach_device(struct iommu_domain *domain, > + struct device *dev); > +extern int iommu_map_address(struct iommu_domain *domain, dma_addr_t > iova, + phys_addr_t paddr, size_t size, int prot); similarly: extern int iommu_map_pages(struct iommu_domain *domain, unsigned long gfn, unsigned long pfn, unsigned long npages, int prot); extern int iommu_unmap_pages(struct iommu_domain *domain, unsigned long gfn, unsigned long npages); Regards, Weidong -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists