Messages in this thread | | | Date | Thu, 2 Aug 2007 10:25:10 -0700 | From | "Keshavamurthy, Anil S" <> | Subject | Re: [patch -mm][Intel-IOMMU] Optimize sg map/unmap calls |
| |
On Wed, Aug 01, 2007 at 04:45:54PM -0700, Andrew Morton wrote: > On Wed, 1 Aug 2007 13:06:23 -0700 > "Keshavamurthy, Anil S" <anil.s.keshavamurthy@intel.com> wrote: > > > +/* Computes the padding size required, to make the > > + * the start address naturally aligned on its size > > + */ > > +static int > > +iova_get_pad_size(int size, unsigned int limit_pfn) > > +{ > > + unsigned int pad_size = 0; > > + unsigned int order = ilog2(size); > > + > > + if (order) > > + pad_size = (limit_pfn + 1) % (1 << order); > > + > > + return pad_size; > > +} > > This isn't obviously doing the right thing for non-power-of-2 inputs. > ilog2() rounds down... Andrew, The call chain to iova_get_pad_size() is like this alloc_iova()--->__alloc_iova_range()--->iova_get_pad_size().
Inside the alloc_iova() we are rounding the size to __roundup_pow_of_two(size) iff the caller of alloc_iova() request by setting size_aligned bool. And in every call to iova_get_pad_size() we check the size_aligned bool before calling iova_get_pad_size. Hence I don;t see any issues. If you want I can insert a BUG_ON() statement inside the above iova_get_pad_size() function. Please do let me know.
thanks, Anil - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |