Messages in this thread | | | From | Ard Biesheuvel <> | Date | Mon, 21 Jan 2019 16:33:27 +0100 | Subject | Re: [RFC PATCH] drm: disable WC optimization for cache coherent devices on non-x86 |
| |
On Mon, 21 Jan 2019 at 16:07, Christoph Hellwig <hch@infradead.org> wrote: > > > +#include <linux/dma-noncoherent.h> > > This header is not for usage in device drivers, but purely for > dma-mapping implementations! >
Is that documented anywhere?
> > +static inline bool drm_device_can_wc_memory(struct drm_device *ddev) > > { > > + if (IS_ENABLED(CONFIG_PPC)) > > + return IS_ENABLED(CONFIG_NOT_COHERENT_CACHE); > > + else if (IS_ENABLED(CONFIG_MIPS)) > > + return !IS_ENABLED(CONFIG_CPU_LOONGSON3); > > + else if (IS_ENABLED(CONFIG_X86)) > > + return true; > > + > > + return !dev_is_dma_coherent(ddev->dev); > > And even if something like this was valid to do, it would have to be > a core function with an arch hook, and not hidden in a random driver.
Why would it not be valid to do? Is it wrong for a driver to be aware of whether a device is cache coherent or not?
And in case it isn't, do you have an alternative suggestion on how to fix this mess?
| |