nvdimm: Provide nvdimm location information

Provide the acpi handle path as the location string for the nvdimm
children of the nvdimm_root device.

Reviewed by:	kib
Approved by:	jhb (mentor)
MFC after:	1 week
Sponsored by:	Intel Corporation
Differential Revision:	https://reviews.freebsd.org/D20528
This commit is contained in:
D Scott Phillips 2019-06-06 20:12:04 +00:00
parent ce7fb386d8
commit 806adc6c00

View File

@ -560,6 +560,24 @@ nvdimm_root_write_ivar(device_t dev, device_t child, int index,
return (0);
}
static int
nvdimm_root_child_location_str(device_t dev, device_t child, char *buf,
size_t buflen)
{
ACPI_HANDLE handle;
int res;
handle = nvdimm_root_get_acpi_handle(child);
if (handle != NULL)
res = snprintf(buf, buflen, "handle=%s", acpi_name(handle));
else
res = snprintf(buf, buflen, "unknown");
if (res >= buflen)
return (EOVERFLOW);
return (0);
}
static device_method_t nvdimm_methods[] = {
DEVMETHOD(device_probe, nvdimm_probe),
DEVMETHOD(device_attach, nvdimm_attach),
@ -582,6 +600,7 @@ static device_method_t nvdimm_root_methods[] = {
DEVMETHOD(bus_add_child, bus_generic_add_child),
DEVMETHOD(bus_read_ivar, nvdimm_root_read_ivar),
DEVMETHOD(bus_write_ivar, nvdimm_root_write_ivar),
DEVMETHOD(bus_child_location_str, nvdimm_root_child_location_str),
DEVMETHOD_END
};