On Thu, 2017-03-30 at 22:13 -0700, Sukadev Bhattiprolu wrote: > +static void *map_mmio_region(char *name, uint64_t start, int len) > +{ > + void *map; > + > + if (!request_mem_region(start, len, name)) { > + pr_devel("%s(): request_mem_region(0x%llx, %d) failed\n", > + __func__, start, len); > + return NULL; > + } > + > + map = __ioremap(start, len, pgprot_val(pgprot_cached(__pgprot(0)))); > + if (!map) { > + pr_devel("%s(): ioremap(0x%llx, %d) failed\n", __func__, > start, > + len); > + return NULL; > + } > + > + return map; > +}
That's very wrong. I assume this never worked right ? MMIO regions must be mapped non-cachable. Only the paste region requires being mapped cachable. Ask Aneesh for a cleaner way of doing it too while at it. > +/* > + * Unmap the MMIO regions for a window. > + */ > +static void unmap_wc_paste_kaddr(struct vas_window *window) > +{ > + int len; Don't use "wc"... that usually means "write combine". Cheers, Ben.