The Issue, as stated by LSI is
Initially set the consistent DMA mask to 32 bit and then change
it
to 64 bit mask after allocating RDPQ pools by calling the
function
_base_change_consistent_dma_mask. This is to ensure that all the
upper 32 bits of RDPQ entries's base address to be same.
If you set a 64 bit coherent mask before this point, you're benefiting
from being lucky that all the upper 32 bits of the allocations are the
same ... we can't code a driver to rely on luck. Particularly not when
the failure mode looks like it would be silent and deadly.
>Another comment here from you.What do you mean "fix the code"? The code isn't broken, it's
>https://lkml.org/lkml/2015/4/2/28
>
>"Well, it was originally a hack for altix, because they had no regions
>below 4GB and had to specifically manufacture them. As you know, in
>Linux, if Intel doesn't need it, no-one cares and the implementation
>bitrots."
>
>Maybe, it is time to fix the code for more recent (even decent) hardware?
parametrising issues with particular hardware. There's no software work
around (except allocating memory with the correct characteristics).