Lines Matching +full:dev +full:- +full:handle
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
33 * https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/virtual-machine-generation-identifier ,
34 * https://azure.microsoft.com/en-us/blog/accessing-and-using-azure-vm-unique-id/
39 * - QEMU: https://bugzilla.redhat.com/show_bug.cgi?id=1118834
40 * - VMware/ESXi: https://kb.vmware.com/s/article/2032586
41 …* - Xen: https://github.com/xenserver/xen-4.5/blob/master/tools/firmware/hvmloader/acpi/dsdt.asl#L…
56 #include <contrib/dev/acpica/include/acpi.h>
58 #include <dev/acpica/acpivar.h>
59 #include <dev/random/random_harvestq.h>
60 #include <dev/vmgenc/vmgenc_acpi.h>
73 MODULE_PNP_INFO("Z:_CID", acpi, vmgenc, vmgenc_ids, nitems(vmgenc_ids) - 1);
88 sizeof(((struct harvest_event *)0)->he_entropy)); in vmgenc_harvest_all()
91 sz -= nbytes; in vmgenc_harvest_all()
100 device_t dev; in vmgenc_status_changed() local
102 dev = context; in vmgenc_status_changed()
103 sc = device_get_softc(dev); in vmgenc_status_changed()
106 memcpy(guid, __DEVOLATILE(void *, sc->vmg_pguid), sizeof(guid)); in vmgenc_status_changed()
107 if (memcmp(guid, sc->vmg_cache_guid, GUID_BYTES) == 0) in vmgenc_status_changed()
111 memcpy(sc->vmg_cache_guid, guid, GUID_BYTES); in vmgenc_status_changed()
113 vmgenc_harvest_all(sc->vmg_cache_guid, sizeof(sc->vmg_cache_guid)); in vmgenc_status_changed()
116 acpi_UserNotify("VMGenerationCounter", acpi_get_handle(dev), 0); in vmgenc_status_changed()
122 device_t dev; in vmgenc_notify() local
124 dev = context; in vmgenc_notify()
131 AcpiOsExecute(OSL_NOTIFY_HANDLER, vmgenc_status_changed, dev); in vmgenc_notify()
134 device_printf(dev, "unknown notify %#x\n", notify); in vmgenc_notify()
140 vmgenc_probe(device_t dev) in vmgenc_probe() argument
146 rv = ACPI_ID_PROBE(device_get_parent(dev), dev, in vmgenc_probe()
149 device_set_desc(dev, "VM Generation Counter"); in vmgenc_probe()
154 vmgenc_acpi_getname(ACPI_HANDLE handle, char data[static 256]) in vmgenc_acpi_getname() argument
161 if (ACPI_SUCCESS(AcpiGetName(handle, ACPI_FULL_PATHNAME, &buf))) in vmgenc_acpi_getname()
167 acpi_GetPackedUINT64(device_t dev, ACPI_HANDLE handle, char *path, in acpi_GetPackedUINT64() argument
177 status = AcpiEvaluateObject(handle, path, NULL, &buf); in acpi_GetPackedUINT64()
179 device_printf(dev, "%s(%s::%s()): %s\n", __func__, in acpi_GetPackedUINT64()
180 vmgenc_acpi_getname(handle, hpath), path, in acpi_GetPackedUINT64()
185 device_printf(dev, "%s(%s::%s()): Wrong type %#x\n", __func__, in acpi_GetPackedUINT64()
186 vmgenc_acpi_getname(handle, hpath), path, in acpi_GetPackedUINT64()
191 device_printf(dev, "%s(%s::%s()): Wrong number of results %u\n", in acpi_GetPackedUINT64()
192 __func__, vmgenc_acpi_getname(handle, hpath), path, in acpi_GetPackedUINT64()
198 device_printf(dev, "%s(%s::%s()): Wrong type results %#x, %#x\n", in acpi_GetPackedUINT64()
199 __func__, vmgenc_acpi_getname(handle, hpath), path, in acpi_GetPackedUINT64()
214 vmgenc_attach(device_t dev) in vmgenc_attach() argument
221 h = acpi_get_handle(dev); in vmgenc_attach()
222 sc = device_get_softc(dev); in vmgenc_attach()
224 error = acpi_GetPackedUINT64(dev, h, "ADDR", &guid_physaddr); in vmgenc_attach()
228 SYSCTL_ADD_OPAQUE(device_get_sysctl_ctx(dev), in vmgenc_attach()
229 SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "guid", in vmgenc_attach()
230 CTLFLAG_RD, sc->vmg_cache_guid, GUID_BYTES, "", in vmgenc_attach()
231 "latest cached VM generation counter (128-bit UUID)"); in vmgenc_attach()
233 sc->vmg_pguid = AcpiOsMapMemory(guid_physaddr, GUID_BYTES); in vmgenc_attach()
234 memcpy(sc->vmg_cache_guid, __DEVOLATILE(void *, sc->vmg_pguid), in vmgenc_attach()
235 sizeof(sc->vmg_cache_guid)); in vmgenc_attach()
238 vmgenc_harvest_all(sc->vmg_cache_guid, sizeof(sc->vmg_cache_guid)); in vmgenc_attach()
240 AcpiInstallNotifyHandler(h, ACPI_DEVICE_NOTIFY, vmgenc_notify, dev); in vmgenc_attach()