On Thu, Mar 24, 2022 at 09:14:50AM -0700, Michael Kelley wrote: > Hyper-V VMs have VMbus synthetic devices and PCI pass-thru devices that are added > dynamically via the VMbus protocol and are not represented in the ACPI DSDT. Only > the top level VMbus node exists in the DSDT. As such, on ARM64 these devices don't > pick up coherence information and default to not hardware coherent. This results > in extra software coherence management overhead since the synthetic devices are > always hardware coherent. PCI pass-thru devices are also hardware coherent in all > current usage scenarios. > > Fix this by propagating coherence information from the top level VMbus node in > the DSDT to all VMbus synthetic devices and PCI pass-thru devices. While smaller > granularity of control would be better, basing on the VMbus node in the DSDT > gives as escape path if a future scenario arises with devices that are not > hardware coherent. > > Changes since v2: > * Move coherence propagation for VMbus synthetic devices to a separate > .dma_configure function instead of the .probe fucntion [Robin Murphy] > > Changes since v1: > * Use device_get_dma_attr() instead of acpi_get_dma_attr(), eliminating the > need to export acpi_get_dma_attr() [Robin Murphy] > * Use arch_setup_dma_ops() to set device coherence [Robin Murphy] > * Move handling of missing _CCA to vmbus_acpi_add() so it is only done once > * Rework handling of PCI devices so existing code in pci_dma_configure() > just works > > Michael Kelley (2): > Drivers: hv: vmbus: Propagate VMbus coherence to each VMbus device > PCI: hv: Propagate coherence from VMbus device to PCI device Patch 2 will not be very useful without patch 1 so I've applied the whole series to hyperv-fixes. Thanks.