Ok, I'm finally realized, that my driver doesn't start on the DH67BL ( http://www.intel.com/content/www/us/en/motherboards/desktop-motherboards/desktop-board-dh67bl.html )
My experiments: 1) This code at the Entrypoint: > [...] > > UINTN msgSize; > CHAR16 msg[] = L"Hello, is this thing on..."; > > msgSize = StrLen (msg) * sizeof(CHAR16); > > gRT->SetVariable (L"TEST", &gEfiGlobalVariableGuid, > EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | > EFI_VARIABLE_RUNTIME_ACCESS, msgSize, msg); > [...] Variable TEST not found at dmpstore output. 2) This code at the Entrypoint: gRT->ResetSystem (EfiResetWarm, EFI_SUCCESS, 0, NULL); CpuDeadLoop (); doesn't reboot my PC. 3) No any messages at the boot screen. On the DG41TX motherboard all 3 methods works fine. DH67BL has old-style BIOS Setup. So, "UEFI Setup -> PCI device-> <BDF>->Option Rom Execution " option isn't present in the BIOS settings. "UEFI Boot -> Enable", and all optimizations disabled, of course. i'm no idea, what i do wrong... Maybe reason in platform policy? 07.03.2014, 22:08, "Bill Paul" <wp...@windriver.com>: > Of all the gin joints in all the towns in all the world, Neeraj Ladkani had > to > walk into mine at 00:16:26 on Friday 07 March 2014 and say: >> very basic input... sometime on specific platforms, PCIe oprom execution is >> disabled by default , please check in UEFI Setup -> PCI device-> >> <BDF>->Option Rom Execution might be disabled. > In the same vein, I've found that some systems have an option to set the PCI > option ROM priority. That is, a device can have multiple option ROM images, > and if it has both a legacy BIOS ROM and a UEFI ROM, the priority setting > lets > you choose which one is selected. (Obviously this only applies to firmware > with CSM support.) > > Another way to check if your driver is even being executed is to add some > code > do your driver entry point that creates an environment variable in the > datastore. Something like this: > > #include <Uefi.h> > #include <Library/UefiDriverEntryPoint.h> > #include <Library/UefiLib.h> > #include <Library/UefiRuntimeServicesTableLib.h> > #include <Guid/GlobalVariable.h> > > [...] > > UINTN msgSize; > CHAR16 msg[] = L"Hello, is this thing on..."; > > msgSize = StrLen (msg) * sizeof(CHAR16); > > gRT->SetVariable (L"TEST", &gEfiGlobalVariableGuid, > EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | > EFI_VARIABLE_RUNTIME_ACCESS, msgSize, msg); > [...] > > Do this first thing in your driver's entry point function. Later, when you > get > to the UEFI shell prompt, check to see if the TEST variable was created using > the dmpstore command: > > Shell> dmpstore TEST > > If it worked, you should see the variable and a dump of its contents (it'll > do > a hex dump so the message "Hello, is this thing on..." in unicode should be > clearly evident). This will tell you if your driver entry point is actually > being called. > > If you don't see the message, your driver isn't being run for some reason. If > you do, then it's being run, but failing to register itself. > > -Bill >> Thanks >> Neeraj >> >> On Fri, Mar 7, 2014 at 1:25 PM, Onipchuk Vladimir <v- ------------------------------------------------------------------------------ Learn Graph Databases - Download FREE O'Reilly Book "Graph Databases" is the definitive new guide to graph databases and their applications. Written by three acclaimed leaders in the field, this first edition is now available. Download your free book today! http://p.sf.net/sfu/13534_NeoTech _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel