public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Andrew Fish <afish@apple.com>
To: Prem Kumar <perry.prem@gmail.com>
Cc: liming.gao@intel.com, edk2-devel@lists.01.org
Subject: Re: Building EmulatorPkg and EDK2 project issue.
Date: Sun, 04 Nov 2018 10:05:30 -0800	[thread overview]
Message-ID: <3679EADC-76D9-42E2-ADA7-029E7CC0D2C9@apple.com> (raw)
In-Reply-To: <CAG+YCe1WTHsmnknAP+Qo9HEPuJ9c--p1aDcQVULmLGKS4ngMHw@mail.gmail.com>



> On Nov 3, 2018, at 1:55 PM, Prem Kumar <perry.prem@gmail.com> wrote:
> 
> Hi Andrew,
>  Thanks for your explanation. 
> 
> After building for x64 I could see below error.
> 
> C:\UEFIWorkspace\edk2-master_2018_Latest\Build\EmulatorX64\DEBUG_VS2015x86\X64>WinHost.exe
> 
> EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ <http://www.tianocore.org/edk2/>
>   BootMode 0x00
>   OS Emulator passing in 128 KB of temp RAM at 0x65e70000 to SEC
> ERROR : Can not open Firmware Device File ../FV/FV_RECOVERY.fd (0xE).  Exiting.
> 
> 
> I've searched for FV_RECOVERY.fd in entire project and found no such file generated after built.
> 

Prem,

The FD (Flash Device) image should be constructed by the build, and end up in the generated Build directory. The start of the path is the target name, and then a directory that represents some of the flags to the build command. 

So the FD should live in: Build\EmulatorX64\DEBUG_VS2015x86\FV\FV_RECOVERY.fd. If it is not present it would seem like your build failed? Did you get error messages at the end of the build?


This is the fix for the Bugzilla and it does not seem to relate to your failure. 

/Volumes/Case/UDK2018(vUDK2018)>git show f4eaaf1a6d50c761e2af9a6dd0976fb8a3bd3c08
commit f4eaaf1a6d50c761e2af9a6dd0976fb8a3bd3c08
Author: Ruiyu Ni <ruiyu.ni@intel.com>
Date:   Fri Aug 31 16:55:36 2018 +0800

    Emulator/Win: Fix build failure using VS2015x86 or old WinSDK
    
    When build with WinSDK <= Win10 TH2, the terminal over CMD.exe
    doesn't work. Because Win10 later than TH2 starts to support VT
    terminal.
    
    Contributed-under: TianoCore Contribution Agreement 1.1
    Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
    Cc: Michael D Kinney <michael.d.kinney@intel.com>
    Reviewed-by: Hao A Wu <hao.a.wu@intel.com>

diff --git a/EmulatorPkg/Win/Host/WinHost.c b/EmulatorPkg/Win/Host/WinHost.c
index 9b98d5330f..65e8960eff 100644
--- a/EmulatorPkg/Win/Host/WinHost.c
+++ b/EmulatorPkg/Win/Host/WinHost.c
@@ -673,7 +673,7 @@ Returns:
   // Transfer control to the SEC Core
   //
   SwitchStack (
-    (SWITCH_STACK_ENTRY_POINT)SecCoreEntryPoint,
+    (SWITCH_STACK_ENTRY_POINT)(UINTN)SecCoreEntryPoint,
     SecCoreData,
     GetThunkPpiList (),
     TopOfStack
diff --git a/EmulatorPkg/Win/Host/WinThunk.c b/EmulatorPkg/Win/Host/WinThunk.c
index 306fe75ecd..6007db73b5 100644
--- a/EmulatorPkg/Win/Host/WinThunk.c
+++ b/EmulatorPkg/Win/Host/WinThunk.c
@@ -71,15 +71,23 @@ SecConfigStdIn (
     //
     // Disable buffer (line input), echo, mouse, window
     //
-    Success = SetConsoleMode (
-                GetStdHandle (STD_INPUT_HANDLE),
-                Mode | ENABLE_VIRTUAL_TERMINAL_INPUT & ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT)
-                );
-  }
-  if (Success) {
+    Mode &= ~(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT);
+
+#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2)
     //
-    // Enable terminal mode
+    // Enable virtual terminal input for Win10 above TH2
     //
+    Mode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
+#endif
+
+    Success = SetConsoleMode (GetStdHandle (STD_INPUT_HANDLE), Mode);
+  }
+
+#if defined(NTDDI_VERSION) && defined (NTDDI_WIN10_TH2) && (NTDDI_VERSION > NTDDI_WIN10_TH2)
+  //
+  // Enable terminal mode for Win10 above TH2
+  //
+  if (Success) {
     Success = GetConsoleMode (GetStdHandle (STD_OUTPUT_HANDLE), &Mode);
     if (Success) {
       Success = SetConsoleMode (
@@ -88,6 +96,7 @@ SecConfigStdIn (
       );
     }
   }
+#endif
   return Success ? EFI_SUCCESS : EFI_DEVICE_ERROR;
 }
 


Thanks,

Andrew Fish


> --
> Thanks & Regards,
> Prem.
> 
> 
> 
> On Sun, Nov 4, 2018 at 1:56 AM Andrew Fish <afish@apple.com <mailto:afish@apple.com>> wrote:
> Prem,
> 
> I've not run the emulator on Windows in a very very long time. But lets take a look at your error message. 
> 
> /Volumes/Case/UDK2018(vUDK2018)>git grep "Could not allocate PeiServicesTablePage"
> EmulatorPkg/Unix/Host/Host.c:508:      printf ("MapFd0(): Could not allocate PeiServicesTablePage @ %lx\n", (long unsigned int)EmuMagicPage);
> 
> That seems to point to PcdPeiServicesTablePage
> /Volumes/Case/UDK2018(vUDK2018)>git grep PcdPeiServicesTablePage -- *.dec
> EmulatorPkg/EmulatorPkg.dec:73:  gEmulatorPkgTokenSpaceGuid.PcdPeiServicesTablePage|0x1003000000|UINT64|0x0000101b
> 
> Which has a default value of 0x1003000000. But since you built for IA32 it gets truncated to 0x03000000
> 
> Do you need 32-bit IA32? Can do a 64-bit build and use X64. Something like:
> 
> build -p EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -D WIN_SEC_BUILD -a X64 -m EmulatorPkg/Win/Host/WinHost.inf
> 
> It looks like that is hard coded address that needs to get allocated in the emulator, and in your case that allocation is failing. 
> 
> Thanks,
> 
> Andrew Fish
> 
> PS I'm not sure the printf is correct:       printf ("MapFd0(): Could not allocate PeiServicesTablePage @ %lx\n", (long unsigned int)EmuMagicPage);
> Given the width of long is different on different platforms. UINT64 uses long long to make sure things are 64-bits. Not to mention EmuMagicPage is a pointer, not an long unsigned int.
> 
> 
>> On Nov 3, 2018, at 12:26 PM, Prem Kumar <perry.prem@gmail.com <mailto:perry.prem@gmail.com>> wrote:
>> 
>> Hi Andrew,
>>  Thanks for your reply.
>> 
>> Below is the error when trying to launch Emulator after successful build,
>> 
>> 1.Launching Emulator using below command:
>> C:\UEFIWorkspace\edk2-master_2018_Latest>cd Build\EmulatorIA32\DEBUG_VS2015x86\IA32\ && WinHost.exe
>> 
>> EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ <http://www.tianocore.org/edk2/>
>>   BootMode 0x00
>>   OS Emulator passing in 128 KB of temp RAM at 0x04400000 to SEC
>> ERROR : Could not allocate PeiServicesTablePage @ 03000000
>> 
>> 2. Launching WinHose.exe directly:
>> C:\UEFIWorkspace\edk2-master_2018_Latest\Build\EmulatorIA32\DEBUG_VS2015x86\IA32>WinHost.exe
>> 
>> EDK II WIN Host Emulation Environment from http://www.tianocore.org/edk2/ <http://www.tianocore.org/edk2/>
>>   BootMode 0x00
>>   OS Emulator passing in 128 KB of temp RAM at 0x04ab0000 to SEC
>> ERROR : Could not allocate PeiServicesTablePage @ 03000000
>> 
>> 
>> 
>> --
>> Regards,
>> Prem.
> 



  parent reply	other threads:[~2018-11-04 18:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-30 14:04 Building EmulatorPkg and EDK2 project issue Prem Kumar
2018-10-30 23:57 ` Gao, Liming
2018-10-31 12:18   ` Prem Kumar
2018-11-03  8:42     ` Prem Kumar
2018-11-03 17:11       ` Andrew Fish
2018-11-03 19:26         ` Prem Kumar
2018-11-03 20:26           ` Andrew Fish
2018-11-03 20:55             ` Prem Kumar
2018-11-03 23:45               ` Tian, Hot
2018-11-04  2:04                 ` Prem Kumar
2018-11-04  2:18                   ` Prem Kumar
2018-11-04 18:05               ` Andrew Fish [this message]
2018-11-04 18:41                 ` Prem Kumar
2018-11-05  6:31                   ` Ni, Ruiyu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3679EADC-76D9-42E2-ADA7-029E7CC0D2C9@apple.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox