[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3 of 5] ats: Add new ATS helper functions
>>> On 03.11.11 at 16:48, Wei Wang <wei.wang2@xxxxxxx> wrote: > # HG changeset patch > # User Wei Wang <wei.wang2@xxxxxxx> > # Date 1320334760 -3600 > # Node ID f1b4373838dd5e082755201745f87654e2eaa59f > # Parent 1bf06c8d2c70e9af610e12a7592c466a799b0de1 > ats: Add new ATS helper functions > > Signed-off-by Wei Wang <wei.wang2@xxxxxxx> Acked-by: Jan Beulich <jbeulich@xxxxxxxx> > > diff -r 1bf06c8d2c70 -r f1b4373838dd xen/drivers/passthrough/ats.h > --- a/xen/drivers/passthrough/ats.h Thu Nov 03 16:35:53 2011 +0100 > +++ b/xen/drivers/passthrough/ats.h Thu Nov 03 16:39:20 2011 +0100 > @@ -16,6 +16,8 @@ > #ifndef _ATS_H_ > #define _ATS_H_ > > +#include <xen/pci_regs.h> > + > struct pci_ats_dev { > struct list_head list; > u16 seg; > @@ -36,6 +38,28 @@ extern bool_t ats_enabled; > > int enable_ats_device(int seg, int bus, int devfn); > void disable_ats_device(int seg, int bus, int devfn); > +struct pci_ats_dev *get_ats_device(int seg, int bus, int devfn); > + > +static inline int pci_ats_enabled(int seg, int bus, int devfn) > +{ > + u32 value; > + int pos; > + > + pos = pci_find_ext_capability(seg, bus, devfn, PCI_EXT_CAP_ID_ATS); > + BUG_ON(!pos); > + > + value = pci_conf_read16(seg, bus, PCI_SLOT(devfn), > + PCI_FUNC(devfn), pos + ATS_REG_CTL); > + return value & ATS_ENABLE; > +} > + > +static inline int pci_ats_device(int seg, int bus, int devfn) > +{ > + if ( !ats_enabled ) > + return 0; > + > + return pci_find_ext_capability(seg, bus, devfn, PCI_EXT_CAP_ID_ATS); > +} > > #else > > @@ -50,6 +74,22 @@ static inline void disable_ats_device(in > { > BUG(); > } > + > +static inline int pci_ats_enabled(int seg, int bus, int devfn) > +{ > + return 0; > +} > + > +static inline int pci_ats_device(int seg, int bus, int devfn) > +{ > + return 0; > +} > + > +static inline struct pci_ats_dev *get_ats_device(int seg, int bus, int > devfn) > +{ > + return NULL; > +} > + > #endif > > #endif /* _ATS_H_ */ > diff -r 1bf06c8d2c70 -r f1b4373838dd xen/drivers/passthrough/x86/ats.c > --- a/xen/drivers/passthrough/x86/ats.c Thu Nov 03 16:35:53 2011 +0100 > +++ b/xen/drivers/passthrough/x86/ats.c Thu Nov 03 16:39:20 2011 +0100 > @@ -134,3 +134,19 @@ void disable_ats_device(int seg, int bus > dprintk(XENLOG_INFO, "%04x:%02x:%02x.%u: ATS is disabled\n", > seg, bus, PCI_SLOT(devfn), PCI_FUNC(devfn)); > } > + > +struct pci_ats_dev *get_ats_device(int seg, int bus, int devfn) > +{ > + struct pci_ats_dev *pdev; > + > + if ( !pci_ats_device(seg, bus, devfn) ) > + return NULL; > + > + list_for_each_entry ( pdev, &ats_devices, list ) > + { > + if ( pdev->seg == seg && pdev->bus == bus && pdev->devfn == devfn ) > + return pdev; > + } > + > + return NULL; > +} > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |