Messages in this thread | | | Date | Wed, 22 Jun 2022 03:54:19 -0700 | From | Christoph Hellwig <> | Subject | Re: [RFC PATCH V4 1/1] swiotlb: Split up single swiotlb lock |
| |
Thanks,
this looks pretty good to me. A few comments below:
On Fri, Jun 17, 2022 at 10:47:41AM -0400, Tianyu Lan wrote: > +/** > + * struct io_tlb_area - IO TLB memory area descriptor > + * > + * This is a single area with a single lock. > + * > + * @used: The number of used IO TLB block. > + * @index: The slot index to start searching in this area for next round. > + * @lock: The lock to protect the above data structures in the map and > + * unmap calls. > + */ > +struct io_tlb_area { > + unsigned long used; > + unsigned int index; > + spinlock_t lock; > +};
This can go into swiotlb.c.
> +void __init swiotlb_adjust_nareas(unsigned int nareas);
And this should be marked static.
> +#define DEFAULT_NUM_AREAS 1
I'd drop this define, the magic 1 and a > 1 comparism seems to convey how it is used much better as the checks aren't about default or not, but about larger than one.
I also think that we want some good way to size the default, e.g. by number of CPUs or memory size.
> +void __init swiotlb_adjust_nareas(unsigned int nareas) > +{ > + if (!is_power_of_2(nareas)) { > + pr_err("swiotlb: Invalid areas parameter %d.\n", nareas); > + return; > + } > + > + default_nareas = nareas; > + > + pr_info("area num %d.\n", nareas); > + /* Round up number of slabs to the next power of 2. > + * The last area is going be smaller than the rest if > + * default_nslabs is not power of two. > + */
Please follow the normal kernel comment style with a /* on its own line.
| |