On 24-07-08 11:39:54, CLEMENT MATHIEU--DRIF wrote: > From: Clément Mathieu--Drif <clement.mathieu--d...@eviden.com> > > The mask we are trying to store into VTDIOTLBPageInvInfo.mask might not > fit in an uint8_t. Use uint64_t to avoid overflows. > > Per the below code, it can overflow as am can be larger than 8 according > to the CH 6.5.2.3 IOTLB Invalidate. And you may want a fix tag as well. > > info.mask = ~((1 << am) - 1); > > CH 6.5.2.3 IOTLB Invalidate > > Address Mask (AM): For page-selective-within-domain invalidations, > the Address Mask specifies the number of low order bits of the ADDR > field that must be masked for the invalidation operation. This field > enables software to request invalidation of contiguous mappings for > size-aligned regions. Refer to Table 19 for encodings of this field. > When invalidating a large-page translation, software must use the > appropriate Address Mask value (0 for 4KByte page, 9 for 2-MByte page, > and 18 for 1-GByte page). Hardware implementations report the maximum > supported address mask value through the Capability register. > > Signed-off-by: Clément Mathieu--Drif <clement.mathieu--d...@eviden.com>
Reviewed-by: Minwoo Im <minwoo...@samsung.com>