Hi Kevin,
filed bug number is FB21888307. I provide partial code on bug.
Reply to your question:
That address should have come from your driver, so how did it exceed 32 bits? All of our APIs for retrieving a bus address should either provide an address that meets your specification or fail entirely. More to the point, even if they some how did return a larger address, why/how would your driver have written a larger address when it was only prepared to handle a 32 bit address?
Yes, address comes from my driver by gen64IOVMSegments API. And at the beginning, I didn't know that the address allocated through the API were always >32 bit, so when I received an address >32 bit, I didn't directly return, but continued to use it, resulting in a kernel panic.
Next, the big question is how much memory are you actually trying to map? And have you done any experimentation with smaller mappings?
I trying to map 20 KB memory, I have already tried 1 Byte or 4 KB, still get 64-bit address. And maximum DMA data size would set to 8 MB, but I haven't set 8M yet.
Thanks!
Topic:
App & System Services
SubTopic:
Drivers
Tags: