ahci: Check if bus is cache-coherent

We do this for FDT systems but not for ACPI ones.
Check the presence of the _CCA attribute.

Sponsored by: Ampere Computing, LLC
Reviewed by:	andrew
Differential Revision:	https://reviews.freebsd.org/D20144
This commit is contained in:
Emmanuel Vadot 2019-05-10 16:43:53 +00:00
parent 7f75bbd066
commit 73f707e259
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=347440

View File

@ -89,6 +89,7 @@ ahci_fdt_probe(device_t dev)
static int
ahci_acpi_probe(device_t dev)
{
struct ahci_controller *ctlr = device_get_softc(dev);
ACPI_HANDLE h;
if ((h = acpi_get_handle(dev)) == NULL)
@ -98,6 +99,12 @@ ahci_acpi_probe(device_t dev)
pci_get_subclass(dev) == PCIS_STORAGE_SATA &&
pci_get_progif(dev) == PCIP_STORAGE_SATA_AHCI_1_0) {
device_set_desc_copy(dev, "AHCI SATA controller");
if (ACPI_FAILURE(acpi_GetInteger(h, "_CCA",
&ctlr->dma_coherent)))
ctlr->dma_coherent = 0;
if (bootverbose)
device_printf(dev, "Bus is%s cache-coherent\n",
ctlr->dma_coherent ? "" : " not");
return (BUS_PROBE_DEFAULT);
}