mirror of
https://github.com/Fennix-Project/Kernel.git
synced 2025-07-08 05:49:17 +00:00
SMBIOS support
This commit is contained in:
77
Kernel.cpp
77
Kernel.cpp
@ -10,6 +10,9 @@
|
||||
#include <smp.hpp>
|
||||
#include <cargs.h>
|
||||
#include <io.h>
|
||||
#include <dumper.hpp>
|
||||
|
||||
#include "Core/smbios.hpp"
|
||||
|
||||
NewLock(KernelLock);
|
||||
|
||||
@ -97,6 +100,80 @@ EXTERNC void Entry(BootInfo *Info)
|
||||
Interrupts::InitializeTimer(0);
|
||||
KPrint("Initializing SMP");
|
||||
SMP::Initialize(PowerManager->GetMADT());
|
||||
|
||||
if (SMBIOS::CheckSMBIOS())
|
||||
{
|
||||
SMBIOS::SMBIOSEntryPoint *smbios = SMBIOS::GetSMBIOSEntryPoint();
|
||||
SMBIOS::SMBIOSBIOSInformation *bios = SMBIOS::GetBIOSInformation();
|
||||
SMBIOS::SMBIOSSystemInformation *system = SMBIOS::GetSystemInformation();
|
||||
SMBIOS::SMBIOSBaseBoardInformation *baseboard = SMBIOS::GetBaseBoardInformation();
|
||||
|
||||
debug("SMBIOS: %p", smbios);
|
||||
debug("BIOS: %p", bios);
|
||||
debug("System: %p", system);
|
||||
debug("Baseboard: %p", baseboard);
|
||||
DumpData("SMBIOS ALL DUMP", (void *)(uint64_t)smbios->TableAddress, smbios->TableLength);
|
||||
if (smbios)
|
||||
DumpData("SMBIOS", smbios, sizeof(SMBIOS::SMBIOSEntryPoint));
|
||||
if (bios)
|
||||
DumpData("BIOS", bios, sizeof(SMBIOS::SMBIOSBIOSInformation));
|
||||
if (system)
|
||||
DumpData("System", system, sizeof(SMBIOS::SMBIOSSystemInformation));
|
||||
if (baseboard)
|
||||
DumpData("Baseboard", baseboard, sizeof(SMBIOS::SMBIOSBaseBoardInformation));
|
||||
|
||||
if (smbios)
|
||||
KPrint("SMBIOS: \eCCCCCCString:\e8888FF%.4s \eCCCCCCVersion (Major Minor):\e8888FF%d %d \eCCCCCCTable:\e8888FF%#x \eCCCCCCLength:\e8888FF%d",
|
||||
smbios->EntryPointString, smbios->MajorVersion, smbios->MinorVersion,
|
||||
smbios->TableAddress, smbios->TableLength);
|
||||
else
|
||||
KPrint("SMBIOS: \e8888FFSMBIOS found but not supported?");
|
||||
|
||||
if (bios)
|
||||
{
|
||||
const char *BIOSVendor = bios->GetString(bios->Vendor);
|
||||
const char *BIOSVersion = bios->GetString(bios->Version);
|
||||
const char *BIOSReleaseDate = bios->GetString(bios->ReleaseDate);
|
||||
debug("%d %d %d", bios->Vendor, bios->Version, bios->ReleaseDate);
|
||||
KPrint("BIOS: \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s",
|
||||
BIOSVendor, BIOSVersion, BIOSReleaseDate);
|
||||
}
|
||||
|
||||
if (system)
|
||||
{
|
||||
const char *SystemManufacturer = system->GetString(system->Manufacturer);
|
||||
const char *SystemProductName = system->GetString(system->ProductName);
|
||||
const char *SystemVersion = system->GetString(system->Version);
|
||||
const char *SystemSerialNumber = system->GetString(system->SerialNumber);
|
||||
const char *SystemSKU = system->GetString(system->SKU);
|
||||
const char *SystemFamily = system->GetString(system->Family);
|
||||
debug("%d %d %d %d %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c %d %d", system->Manufacturer, system->ProductName, system->Version,
|
||||
system->SerialNumber,
|
||||
system->UUID[0], system->UUID[1], system->UUID[2], system->UUID[3],
|
||||
system->UUID[4], system->UUID[5], system->UUID[6], system->UUID[7],
|
||||
system->UUID[8], system->UUID[9], system->UUID[10], system->UUID[11],
|
||||
system->UUID[12], system->UUID[13], system->UUID[14], system->UUID[15],
|
||||
system->SKU, system->Family);
|
||||
KPrint("System: \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s",
|
||||
SystemManufacturer, SystemProductName, SystemVersion, SystemSerialNumber, SystemSKU, SystemFamily);
|
||||
}
|
||||
|
||||
if (baseboard)
|
||||
{
|
||||
const char *Manufacturer = baseboard->GetString(baseboard->Manufacturer);
|
||||
const char *Product = baseboard->GetString(baseboard->Product);
|
||||
const char *Version = baseboard->GetString(baseboard->Version);
|
||||
const char *SerialNumber = baseboard->GetString(baseboard->SerialNumber);
|
||||
debug("%d %d %d %d", baseboard->Manufacturer, baseboard->Product, baseboard->Version, baseboard->SerialNumber);
|
||||
KPrint("Baseboard: \eCCCCCC\e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s \eCCCCCC/ \e8888FF%s",
|
||||
Manufacturer, Product, Version, SerialNumber);
|
||||
}
|
||||
}
|
||||
else
|
||||
KPrint("SMBIOS: \eFF0000Not Found");
|
||||
|
||||
CPU::Halt(true);
|
||||
|
||||
TaskManager = new Tasking::Task((Tasking::IP)KernelMainThread);
|
||||
KPrint("\e058C19################################");
|
||||
CPU::Halt(true);
|
||||
|
Reference in New Issue
Block a user