Hi Chaitra, >> for (i = 0; i < ioc->combined_reply_index_count; i++) { >> - ioc->replyPostRegisterIndex[i] = (resource_size_t > *) >> - ((u8 *)&ioc->chip->Doorbell + >> + ioc->replyPostRegisterIndex[i] = >> + (volatile void __iomem *) >> + ((u8 __force *)&ioc->chip->Doorbell + >> MPI25_SUP_REPLY_POST_HOST_INDEX_OFFSET + >> (i * > MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET)); > > Why the double type casts? You've already changed replyPostRegisterIndex > to be 'volatile void __iomem **' in the header file. So why not: > > ioc->replyPostRegisterIndex[i] = > &ioc->chip->Doorbell + > MPI25_SUP_REPLY_POST_HOST_INDEX_OFFSET + > i * MPT3_SUP_REPLY_POST_HOST_INDEX_REG_OFFSET; You didn't address my question about why the type casts were required in the first place? I get cautious when I see nested casting... > Also looks like ioc->reply_post_host_index handling a few lines further > down could lose the type casts. See above. -- Martin K. Petersen Oracle Linux Engineering