If a word is missing in cache, then corresponding entire block 128B request is made to MainMem and brought into cache.I terms of time we add only Main Mem penalty for that transfer (Tm) .why ? because all those 128B will be parallely accessed from Main Memory for which overall latency is Tm only. That's why we write missrate*(Tm+Tc+etc..) in a cache miss situation to calculate TIME
That being said, my question is are you counting memory reference in terms ok blocks ? Because they are asking in terms of bytes..please complete it in terms of Byte.
This is not related to your solution.
When you write on a hit in cache, you considered write through to lower level , ( you given it as 0.9*1 block) . So, whenever you make something dirty in cache, It can be remain dirty. Lower and upper both levels remains same in terms of data,because of write through policy implementation. Then why there is again possibility of 0.25 dirty ?