On 4/29/15, 09:47, "Arnd Bergmann" <arnd@xxxxxxxx> wrote: >On Wednesday 29 April 2015 09:45:43 Suravee Suthikulpanit wrote: >> On 04/29/2015 09:03 AM, Arnd Bergmann wrote: >> > On Wednesday 29 April 2015 08:44:09 Suravee Suthikulpanit wrote: >> >> + device->flags.cca_seen = 1; >> >> + } else if (IS_ENABLED(CONFIG_ACPI_MUST_HAVE_CCA)) { >> >> + /* >> >> + * Architecture has specified that if the >>device >> >> + * can do DMA, it must have ACPI _CCA object. >> >> + * Here, there could be two cases: >> >> + * 1. Not DMA-able device. >> >> + * 2. DMA-able device, but missing _CCA >>object. >> >> + * >> >> + * In both cases, we will default to dma >>non-coherent. >> >> + */ >> >> + cca = 0; >> >> + } else { >> >> + /* >> >> + * If architecture does not specify that >>device must >> >> + * specify ACPI _CCA (e.g. x86), we default >>to use >> >> + * dma coherent. >> >> + */ >> >> + cca = 1; >> >> + } >> >> >> > >> > What does it mean here if a device does DMA but is not coherent? Do >>you >> > have an example of a server that needs this? >> > >> > Can we please make the default for ARM64 cca=1 as well? >> > >> > Arnd >> > >> >> Actually, I am trying to implement the logic for when missing _CCA to >>be >> consistent with the behavior when the devicetree entry does not specify >> "dma-coherent" property. IIUC, in such case, Linux will default to >>using >> non-coherent DMA. > >Why? > > Arnd Otherwise, it would seem inconsistent with what states in the ACPI spec: CCA objects are only relevant for devices that can access CPU-visible memory, such as devices that are DMA capable. On ARM based systems, the _CCA object must be supplied all such devices. On Intel platforms, if the _CCA object is not supplied, the OSPM will assume the devices are hardware cache coherent. >From the statement above, I interpreted as if it is not present, it would be non-coherent. Suravee -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html