hi Andrew,

On Thu, 2014-09-11 at 06:59 -0700, Andrew Fish wrote:
> 
> On Sep 11, 2014, at 2:43 AM, Chen, Fan <[email protected]>
> wrote:
> 
> > > > 
> > > > Why did you get rid of sending IPI to wake up APs? Do you
> > > > encounter any issue with it?
> > > > From your patch, I don't know why StarupThisAP () cannot work
> > > > correctly.  Could you send me your AP routine test code and test
> > > > procedure?
> > [Chen] I use the StartCorePkg to test Mp service. which is located
> > at
> > https://svn.code.sf.net/p/edk2-startcore/code/StartCorePkg
> > 
> > I found that after APs run a period of time, they failed assert at  
> >  MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c: (163)
> > I don't know why. but if I got rid of frequent lock requests.
> > at Ap-loop. it can largely reduce the chance of assertion. 
> 
> The issue is the IoLib depends on the DebugLib. If the DebugLib
> instance in your driver is not MP safe (no a module type of BASE) then
> the code is not MP safe.
> 
> 
> 
> 
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Library/BaseIoLibIntrinsic/IoLibGcc.c
> UINT32
> EFIAPI
> IoRead32 (
>   IN      UINTN                     Port
>   )
> {
>   UINT32   Data;
> 
>   ASSERT ((Port & 3) == 0);
>   __asm__ __volatile__ ("inl %w1,%0" : "=a" (Data) : "d" ((UINT16)Port));
>   return Data;
> }
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
> [LibraryClasses]
>   DebugLib
>   BaseLib
> If you add --report-file=build.log to the build command you can see
> what instance of the DebugLib is being used with your driver in the
> build.log file.
> 
I had built edk2 as you said. and in the build.log file, I only can
found:


887 
/home/chenfan/data/edk2/OvmfPkg/Library/PlatformDebugLibIoPort/PlatformDebugLibIoPort.inf
888 {DebugLib:  C = PlatformDebugLibIoPortConstructor}

Does this indicates the PlatformDebugLibIoPortConstructor() is not MP
safe? and I found the PlatformDebugLibIoPortConstructor() is always
return RFI_SUCCESS. have I something wrong? Please let me know.

Thanks,
Chen



> 
> Thanks,
> 
> 
> Andrew Fish
> 
> 

------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to