[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/iocap.h: add documentation
On 24.02.2025 12:38, Grygorii Strashko wrote: > Change rangeset parameters to "start, last" as proposed in [1], > and add documentation for public interface. > > No functional changes. > > [1] https://patchwork.kernel.org/comment/26251962/ > Signed-off-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx> To be honest, this is getting too verbose for my taste. I also don't think title and description fit together: One says the main thing the patch does is add doc, the other says the main thing is the parameter renaming. When then there's at least one further parameter which is also renamed, despite not fitting the description. Jan > --- a/xen/include/xen/iocap.h > +++ b/xen/include/xen/iocap.h > @@ -12,11 +12,21 @@ > #include <asm/iocap.h> > #include <asm/p2m.h> > > -static inline int iomem_permit_access(struct domain *d, unsigned long s, > - unsigned long e) > +/** > + * @brief Gives domain permission to access IOMEM range > + * > + * @d: Domain to give IOMEM range access > + * @start: IOMEM range start address, inclusive > + * @last: IOMEM range last address, inclusive > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +static inline int iomem_permit_access(struct domain *d, unsigned long start, > + unsigned long last) > { > bool flush = cache_flush_permitted(d); > - int ret = rangeset_add_range(d->iomem_caps, s, e); > + int ret = rangeset_add_range(d->iomem_caps, start, last); > > if ( !ret && !is_iommu_enabled(d) && !flush ) > /* > @@ -29,10 +39,20 @@ static inline int iomem_permit_access(struct domain *d, > unsigned long s, > return ret; > } > > -static inline int iomem_deny_access(struct domain *d, unsigned long s, > - unsigned long e) > +/** > + * @brief Denies domain permission to access IOMEM range > + * > + * @d: Domain to deny IOMEM range access > + * @start: IOMEM range start address, inclusive > + * @last: IOMEM range last address, inclusive > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +static inline int iomem_deny_access(struct domain *d, unsigned long start, > + unsigned long last) > { > - int ret = rangeset_remove_range(d->iomem_caps, s, e); > + int ret = rangeset_remove_range(d->iomem_caps, start, last); > > if ( !ret && !is_iommu_enabled(d) && !cache_flush_permitted(d) ) > /* > @@ -45,23 +65,93 @@ static inline int iomem_deny_access(struct domain *d, > unsigned long s, > return ret; > } > > -#define iomem_access_permitted(d, s, e) \ > - rangeset_contains_range((d)->iomem_caps, s, e) > - > -#define irq_permit_access(d, i) \ > - rangeset_add_singleton((d)->irq_caps, i) > -#define irq_deny_access(d, i) \ > - rangeset_remove_singleton((d)->irq_caps, i) > -#define irqs_permit_access(d, s, e) \ > - rangeset_add_range((d)->irq_caps, s, e) > -#define irqs_deny_access(d, s, e) \ > - rangeset_remove_range((d)->irq_caps, s, e) > -#define irq_access_permitted(d, i) \ > - rangeset_contains_singleton((d)->irq_caps, i) > - > -#define pirq_access_permitted(d, i) ({ \ > +/** > + * @brief Checks if domain has permissions to access IOMEM range > + * > + * @d: Domain to check IOMEM range access > + * @start: IOMEM range start address, inclusive > + * @last: IOMEM range last address, inclusive > + * > + * @retval true if access permitted > + * @retval false if access denied > + */ > +#define iomem_access_permitted(d, start, last) \ > + rangeset_contains_range((d)->iomem_caps, start, last) > + > +/** > + * @brief Gives domain permission to access IRQ > + * > + * @d: Domain to give IRQ access > + * @irq: IRQ number > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +#define irq_permit_access(d, irq) \ > + rangeset_add_singleton((d)->irq_caps, irq) > + > +/** > + * @brief Denies domain permission to access IRQ > + * > + * @d: Domain to deny IRQ access > + * @irq: IRQ number > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +#define irq_deny_access(d, irq) \ > + rangeset_remove_singleton((d)->irq_caps, irq) > + > +/** > + * @brief Gives domain permission to access IRQ range > + * > + * @d: Domain to give IRQ range access > + * @start_irq: IRQ range start number, inclusive > + * @last_irq: IRQ range last number, inclusive > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +#define irqs_permit_access(d, start_irq, last_irq) \ > + rangeset_add_range((d)->irq_caps, start_irq, last_irq) > + > +/** > + * @brief Denies domain permission to access IRQ range > + * > + * @d: Domain to deny IRQ range access > + * @start_irq: IRQ range start number, inclusive > + * @last_irq: IRQ range last number, inclusive > + * > + * @retval 0 Is successful > + * @retval -ENOMEM if memory allocation failed > + */ > +#define irqs_deny_access(d, start_irq, last_irq) \ > + rangeset_remove_range((d)->irq_caps, start_irq, last_irq) > + > +/** > + * @brief Checks if domain has permissions to access IRQ > + * > + * @d: Domain to check IRQ access > + * @irq: IRQ number to check > + * > + * @retval true if access permitted > + * @retval false if access denied > + */ > +#define irq_access_permitted(d, irq) \ > + rangeset_contains_singleton((d)->irq_caps, irq) > + > +/** > + * @brief Checks if domain has permissions to access PIRQ > + * > + * @d: Domain to check PIRQ access > + * @pirq: PIRQ number to check > + * > + * @retval IRQ number if access permitted > + * @retval 0 if access denied > + */ > +#define pirq_access_permitted(d, pirq) ({ \ > struct domain *d__ = (d); \ > - int irq__ = domain_pirq_to_irq(d__, i); \ > + int irq__ = domain_pirq_to_irq(d__, pirq); \ > irq__ > 0 && irq_access_permitted(d__, irq__) \ > ? irq__ : 0; \ > })
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |