diff --git a/sys/dev/ipmi/ipmi_acpi.c b/sys/dev/ipmi/ipmi_acpi.c --- a/sys/dev/ipmi/ipmi_acpi.c +++ b/sys/dev/ipmi/ipmi_acpi.c @@ -37,6 +37,7 @@ #include #include #include +#include #include @@ -212,3 +213,6 @@ DRIVER_MODULE(ipmi_acpi, acpi, ipmi_acpi_driver, ipmi_devclass, 0, 0); MODULE_DEPEND(ipmi_acpi, acpi, 1, 1, 1); +#ifdef ARCH_MAY_USE_EFI +MODULE_DEPEND(ipmi_acpi, efirt, 1, 1, 1); +#endif diff --git a/sys/dev/ipmi/ipmi_isa.c b/sys/dev/ipmi/ipmi_isa.c --- a/sys/dev/ipmi/ipmi_isa.c +++ b/sys/dev/ipmi/ipmi_isa.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -286,3 +287,6 @@ }; DRIVER_MODULE(ipmi_isa, isa, ipmi_isa_driver, ipmi_devclass, 0, 0); +#ifdef ARCH_MAY_USE_EFI +MODULE_DEPEND(ipmi_isa, efirt, 1, 1, 1); +#endif diff --git a/sys/dev/ipmi/ipmi_pci.c b/sys/dev/ipmi/ipmi_pci.c --- a/sys/dev/ipmi/ipmi_pci.c +++ b/sys/dev/ipmi/ipmi_pci.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -292,3 +293,6 @@ }; DRIVER_MODULE(ipmi2_pci, pci, ipmi2_pci_driver, ipmi_devclass, 0, 0); +#ifdef ARCH_MAY_USE_EFI +MODULE_DEPEND(ipmi2_pci, efirt, 1, 1, 1); +#endif diff --git a/sys/dev/ipmi/ipmi_smbios.c b/sys/dev/ipmi/ipmi_smbios.c --- a/sys/dev/ipmi/ipmi_smbios.c +++ b/sys/dev/ipmi/ipmi_smbios.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -150,15 +151,25 @@ static void ipmi_smbios_probe(struct ipmi_get_info *info) { +#ifdef ARCH_MAY_USE_EFI + struct uuid efi_smbios = EFI_TABLE_SMBIOS; + void *addr_efi; +#endif struct smbios_eps *header; void *table; - u_int32_t addr; + u_int32_t addr = 0; bzero(info, sizeof(struct ipmi_get_info)); - /* Find the SMBIOS table header. */ - addr = bios_sigsearch(SMBIOS_START, SMBIOS_SIG, SMBIOS_LEN, - SMBIOS_STEP, SMBIOS_OFF); +#ifdef ARCH_MAY_USE_EFI + if (!efi_get_table(&efi_smbios, &addr_efi)) + addr = (vm_paddr_t)addr_efi; +#endif + + if (addr == 0) + /* Find the SMBIOS table header. */ + addr = bios_sigsearch(SMBIOS_START, SMBIOS_SIG, SMBIOS_LEN, + SMBIOS_STEP, SMBIOS_OFF); if (addr == 0) return; diff --git a/sys/dev/ipmi/ipmi_smbus.c b/sys/dev/ipmi/ipmi_smbus.c --- a/sys/dev/ipmi/ipmi_smbus.c +++ b/sys/dev/ipmi/ipmi_smbus.c @@ -38,6 +38,7 @@ #include #include #include +#include #include #include @@ -131,3 +132,6 @@ DRIVER_MODULE(ipmi_smbus, smbus, ipmi_smbus_driver, ipmi_devclass, 0, 0); MODULE_DEPEND(ipmi_smbus, smbus, SMBUS_MINVER, SMBUS_PREFVER, SMBUS_MAXVER); +#ifdef ARCH_MAY_USE_EFI +MODULE_DEPEND(ipmi_smbus, efirt, 1, 1, 1); +#endif