On Tue, Nov 27, 2018 at 09:41:24PM -0800, James Bottomley wrote: > Yes, it's because dma_addr_t can be u64 on pae systems but > isa_virt_to_bus only ever returns unsigned long (because an ISA > physical address can only be 24 bits). > > I think this is the fix; there doesn't seem to be much point converting > to do_div given all the limitations. Yes, something along these lines should fix it. I don't have the code in front of me, but I vaguely remember there is a second division like this, though. It might be worth to factor the calculation into a helper with a comment like the message above explaining it.