>> The idea is to differentiate the Kseg0/Kseg1 segments in the physical area. >> Beyond these areas lies the mapped area (or the HIGHMEM). What complicates >> this matter further is their overlapping nature. The __pa()/__va() treated >> all addresses mapped into PAGE_OFFSET (8000_0000) area. The effort is to >> correctly differentiate these areas. > > Yes, __va() and __pa() are used to convert an physical address from/to > an kernel logical address (i.e. low unmapped virtual address). > > I think passing another sort of addresses to them is simply wrong. Agreed. But, then again treating all addresses as above PAGE_OFFSET is also wrong :) I looked at it just as a work around. These macros are called from so many other places that if an access is made at say 4000_0000 the kernel will oops telling it was C000_0000 access error. Now that confused me a lot! With this change now kernel oops on 4000_0000 :) Anyway, you may ignore __pa/__va macros. Could you please look into other changes I proposed? > > P.S. > Please do not reply to git-commits@xxxxxxxxxxxxxxx I am sorry. It was a stupid mistake in creating address book entry.