The original implementation only support get address from legacy BIOS (search the SMBIOS_SIG pattern in fix address space).
This new patch would try to get the SMBIOS table from EFI through efirt (EFI Runtime Services) firstly and would continuous search in the legacy BIOS if NULL address returned from EFI.
By this way the ipmi function could support both legacy BIOS and UEFI system.
This solution is also based on the following commits.
https://reviews.freebsd.org/D29270
ipmi,smbios: move smbios_walk_table to smbios.h
https://reviews.freebsd.org/D29276
smbios: support getting address from EFI