[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v4 1/8] swiotlb: make io_tlb_default_mem local to swiotlb.c
On Mon, 17 Jul 2023 08:06:07 +0200 Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> wrote: > Hi Petr, > > On 13/7/23 17:23, Petr Tesarik wrote: > > From: Petr Tesarik <petr.tesarik.ext@xxxxxxxxxx> > > > > SWIOTLB implementation details should not be exposed to the rest of the > > kernel. This will allow to make changes to the implementation without > > modifying non-swiotlb code. > > > > To avoid breaking existing users, provide helper functions for the few > > required fields. > > > > As a bonus, using a helper function to initialize struct device allows to > > get rid of an #ifdef in driver core. > > > > Signed-off-by: Petr Tesarik <petr.tesarik.ext@xxxxxxxxxx> > > --- > > arch/arm/xen/mm.c | 2 +- > > arch/mips/pci/pci-octeon.c | 2 +- > > arch/x86/kernel/pci-dma.c | 2 +- > > drivers/base/core.c | 4 +--- > > drivers/xen/swiotlb-xen.c | 2 +- > > include/linux/swiotlb.h | 25 +++++++++++++++++++++++- > > kernel/dma/swiotlb.c | 39 +++++++++++++++++++++++++++++++++++++- > > 7 files changed, 67 insertions(+), 9 deletions(-) > > > > diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h > > index 4e52cd5e0bdc..07216af59e93 100644 > > --- a/include/linux/swiotlb.h > > +++ b/include/linux/swiotlb.h > > @@ -110,7 +110,6 @@ struct io_tlb_mem { > > atomic_long_t used_hiwater; > > #endif > > }; > > -extern struct io_tlb_mem io_tlb_default_mem; > > > > static inline bool is_swiotlb_buffer(struct device *dev, phys_addr_t > > paddr) > > { > > @@ -128,13 +127,22 @@ static inline bool is_swiotlb_force_bounce(struct > > device *dev) > > > > void swiotlb_init(bool addressing_limited, unsigned int flags); > > void __init swiotlb_exit(void); > > +void swiotlb_dev_init(struct device *dev); > > size_t swiotlb_max_mapping_size(struct device *dev); > > +bool is_swiotlb_allocated(void); > > bool is_swiotlb_active(struct device *dev); > > void __init swiotlb_adjust_size(unsigned long size); > > +phys_addr_t default_swiotlb_start(void); > > +phys_addr_t default_swiotlb_limit(void); > > Usually we use start/end, base/limit, low[est]/high[est] tuples. I'm no big fan of start/end, because the "end" sometimes means "highest within range" and sometimes "one past range", being responsible for an impressive amount of off-by-one errors. But I agree. When I decided against "end", I should have also replaced "start" with "base". Well, this patch series will certainly see a v5, so I'll change it there. Thanks for the suggestion! Petr T > Possibly clearer to rename, regardless: > Reviewed-by: Philippe Mathieu-Daudé <philmd@xxxxxxxxxx> > > > diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c > > index 2b83e3ad9dca..873b077d7e37 100644 > > --- a/kernel/dma/swiotlb.c > > +++ b/kernel/dma/swiotlb.c > > > > @@ -958,6 +975,26 @@ bool is_swiotlb_active(struct device *dev) > > } > > EXPORT_SYMBOL_GPL(is_swiotlb_active); > > > > +/** > > + * default_swiotlb_start() - get the start of the default SWIOTLB > > + * > > + * Get the lowest physical address used by the default software IO TLB > > pool. > > + */ > > +phys_addr_t default_swiotlb_start(void) > > +{ > > + return io_tlb_default_mem.start; > > +} > > + > > +/** > > + * default_swiotlb_limit() - get the highest address in the default SWIOTLB > > + * > > + * Get the highest physical address used by the default software IO TLB > > pool. > > (note you describe lowest/highest). > > > + */ > > +phys_addr_t default_swiotlb_limit(void) > > +{ > > + return io_tlb_default_mem.end - 1; > > +} > > + > > #ifdef CONFIG_DEBUG_FS > > > > static int io_tlb_used_get(void *data, u64 *val) >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |