This patch reverts my previous "fix", and replace it with the correct
fix from Russell.
And as Russell pointed out -- dma_set_mask_and_coherent() (and the other
dma_set_mask() functions) are really supposed to be used by drivers
only.
Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
 
                /* needed to ensure proper operation of coherent allocations
                 * later, in case driver doesn't set it explicitly */
-               dma_coerce_mask_and_coherent(&viodev->dev, DMA_BIT_MASK(64));
+               viodev->dev.coherent_dma_mask = DMA_BIT_MASK(64);
+               viodev->dev.dma_mask = &viodev->dev.coherent_dma_mask;
        }
 
        /* register with generic device framework */