parisc: fix IOMMU's device boundary overflow bug on 32bits arch

On 32bits boxes, boundary_size becomes zero due to a overflow and we
hit BUG_ON in iommu_is_span_boundary.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Kyle McMartin <kyle@parisc-linux.org>
Cc: Matthew Wilcox <matthew@wil.cx>
Acked-by: Grant Grundler <grundler@parisc-linux.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by FUJITA Tomonori and committed by Linus Torvalds 4a0d3f3a 41f7f60d

+4 -4
+2 -2
drivers/parisc/ccio-dma.c
··· 366 366 ** ggg sacrifices another 710 to the computer gods. 367 367 */ 368 368 369 - boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, 1 << IOVP_SHIFT); 370 - boundary_size >>= IOVP_SHIFT; 369 + boundary_size = ALIGN((unsigned long long)dma_get_seg_boundary(dev) + 1, 370 + 1ULL << IOVP_SHIFT) >> IOVP_SHIFT; 371 371 372 372 if (pages_needed <= 8) { 373 373 /*
+2 -2
drivers/parisc/sba_iommu.c
··· 341 341 unsigned long shift; 342 342 int ret; 343 343 344 - boundary_size = ALIGN(dma_get_seg_boundary(dev) + 1, 1 << IOVP_SHIFT); 345 - boundary_size >>= IOVP_SHIFT; 344 + boundary_size = ALIGN((unsigned long long)dma_get_seg_boundary(dev) + 1, 345 + 1ULL << IOVP_SHIFT) >> IOVP_SHIFT; 346 346 347 347 #if defined(ZX1_SUPPORT) 348 348 BUG_ON(ioc->ibase & ~IOVP_MASK);