On Fri, Aug 19, 2016 at 1:32 AM, <Valdis.Kletnieks@vt.edu> wrote:

Step 1: Figure out whether your driver is returning a physical or logical
address for the CMA, and which of the two /dev/mem requires.

Step 2: Take a look at the address returned and make sure it at least
looks valid (is someplace the E820 map says is RAM, isn't a PCI BAR or
something like that, etc etc)

Those are the two biggest sources of error I can think of...

First of all, just want to make my problem clear, the "bad address" is returned when I call vmsplice(), not mmap().

1. I have verified the address is a physical one
2. It indeed is within the RAM range

What bugs me is that write() works just fine but vmsplice() complains about the address.