> On May 30, 2016, at 11:38 AM, Vladimir Olovyannikov 
> <[email protected]> wrote:
> 
> Hi Andrew,
> Please see below.
> The region of interest is marked as "Reserved".
> 
> Thanks,
> Vladimir
> 
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]]
>> Sent: Monday, May 30, 2016 11:32 AM
>> To: Vladimir Olovyannikov
>> Cc: [email protected]
>> Subject: Re: [edk2] EfiConvertPointer/AllocatePages for an address
> return
>> EFI_NOT FOUND
>> 
>> 
>>> On May 30, 2016, at 10:37 AM, Vladimir Olovyannikov
>> <[email protected]> wrote:
>>> 
>>> 
>>> Hello All,
>>> 
>>> I faced an issue with my UEFI implementation (Armv8 64 bit platform).
>>> I need to convert a device physical address to the virtual on
>>> VirtualAddressChange event.
>>> EfiConvertPointer always returns EFI_NOT_FOUND.
>>> 
>>> I tried to allocate just an address:
>>> gBS->AllocatePages(AllocateAddress, EfiRuntimeServicesCode, 1,
>>> &MyAddress); // Allocate one page
>>> where MyAddress is 0x65042000.
>>> Which also returns  EFI_NOT_FOUND.
>>> 
>>> I declared this device's memory in the Platform memory lib as
>>> 
>>> // Mydevice
>>> // 1MB @0x65000000 (0x65000000 - 0x650fffff)
>>> MMUTable[++Index].PhysicalBase    = MY_DEV_BASE;
>>> MMUTable[Index].VirtualBase            = MY_DEV_BASE;
>>> MMUTable[Index].Length                     = MY_DEV_SZ; // SIZE_1MB
>>> MMUTable[Index].Attributes              =
>>> ARM_MEMORY_REGION_ATTRIBUTE_DEVICE;
>>> 
>>> I can access this device perfectly from BootServices (read/write) with
> MMU
>>> (1:1) on.
>>> But it is nowhere in virtual table map which
>>> AllocatePages()/EfiConvertPointer() eventually use.
>>> 
>>> Please let me know what I am missing here?
>>> I have declared this memory as a Runtime with
>>> 
>>> Status = gDS->AddMemorySpace (
>>>               EfiGcdMemoryTypeMemoryMappedIo,
>>>               AlignedAddr, SIZE_64KB,
>>>               EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
>>>                 );
>>> if (!EFI_ERROR (Status)) {
>>>     Status = gDS->SetMemorySpaceAttributes (
>>>                   AlignedAddr,
>>>                   SIZE_64KB,
>>>                   EFI_MEMORY_UC | EFI_MEMORY_RUNTIME
>>>                     );
>>> }
>>> 
>> 
>> If you boot to the UEFI shell and dump the memory map what to do you
> see?
> 

The attribute is wrong, so it was not allocate correctly. 

#define EFI_MEMORY_RUNTIME       0x8000000000000000

Did you check all the return Status from your gDS calls? You can read up about 
them in the PI spec from the UEF Forum website. 

If you do a gDS->GetMemorySpaceDescriptor() for the  AlignedAddr does it 
succeed? If yes I think you want to get the descriptor and then set the memory 
space attribute. 

Thanks,

Andrew Fish

> Shell> memmap
> Type       Start            End              # Pages          Attributes
> Available  0000000080000000-0000000084FFFFFF 0000000000005000
> 000000000000000F
> Available  00000000850F0000-00000000B986FFFF 0000000000034780
> 000000000000000F
> RT_Data    00000000B9870000-00000000B98DFFFF 0000000000000070
> 800000000000000F
> Available  00000000B98E0000-00000000B98E5FFF 0000000000000006
> 000000000000000F
> LoaderCode 00000000B98E6000-00000000B9A12FFF 000000000000012D
> 000000000000000F
> BS_Code    00000000B9A13000-00000000B9B8FFFF 000000000000017D
> 000000000000000F
> RT_Data    00000000B9B90000-00000000B9BDFFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9BE0000-00000000B9C2FFFF 0000000000000050
> 800000000000000F
> RT_Data    00000000B9C30000-00000000B9C7FFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9C80000-00000000B9CCFFFF 0000000000000050
> 800000000000000F
> RT_Data    00000000B9CD0000-00000000B9D1FFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9D20000-00000000B9D7FFFF 0000000000000060
> 800000000000000F
> ACPI_Recl  00000000B9D80000-00000000B9D9FFFF 0000000000000020
> 000000000000000F
> RT_Data    00000000B9DA0000-00000000B9DEFFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9DF0000-00000000B9E3FFFF 0000000000000050
> 800000000000000F
> RT_Data    00000000B9E40000-00000000B9E8FFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9E90000-00000000B9EDFFFF 0000000000000050
> 800000000000000F
> RT_Data    00000000B9EE0000-00000000B9F2FFFF 0000000000000050
> 800000000000000F
> RT_Code    00000000B9F30000-00000000B9F7FFFF 0000000000000050
> 800000000000000F
> Available  00000000B9F80000-00000000B9F80FFF 0000000000000001
> 000000000000000F
> 
> Reserved   00000000B9F81000-00000000B9F84FFF 0000000000000004
> 000000000000000F
> 
> BS_Code    00000000B9F85000-00000000B9F8BFFF 0000000000000007
> 000000000000000F
> 
> Available  00000000B9F8C000-00000000BCA7AFFF 0000000000002AEF
> 000000000000000F
> 
> BS_Data    00000000BCA7B000-00000000BEDBFFFF 0000000000002345
> 000000000000000F
> 
> Available  00000000BEDC0000-00000000BEDC5FFF 0000000000000006
> 000000000000000F
> 
> BS_Code    00000000BEDC6000-00000000BEF4FFFF 000000000000018A
> 000000000000000F
> 
> Available  00000000BEF50000-00000000BEFBFFFF 0000000000000070
> 000000000000000F
> 
> RT_Data    00000000BEFC0000-00000000BEFEFFFF 0000000000000030
> 800000000000000F
> 
> Available  00000000BEFF0000-00000000BEFFEFFF 000000000000000F
> 000000000000000F
> 
> BS_Data    00000000BEFFF000-00000000BEFFFFFF 0000000000000001
> 000000000000000F
> 
> Available  00000000BF000000-00000000BF293FFF 0000000000000294
> 000000000000000F
> 
> BS_Data    00000000BF294000-00000000BFFFFFFF 0000000000000D6C
> 000000000000000F
> 
> Reserved   0000000065020000-000000006502FFFF 0000000000000010
> 0000000000000001
> 
> 
> 
>  Reserved  :             20 Pages (81,920 Bytes)
> 
>  LoaderCode:            301 Pages (1,232,896 Bytes)
> 
>  LoaderData:              0 Pages (0 Bytes)
> 
>  BS_Code   :            782 Pages (3,203,072 Bytes)
> 
>  BS_Data   :         12,466 Pages (51,060,736 Bytes)
> 
>  RT_Code   :            496 Pages (2,031,616 Bytes)
> 
>  RT_Data   :            640 Pages (2,621,440 Bytes)
> 
>  ACPI_Recl :             32 Pages (131,072 Bytes)
> 
>  ACPI_NVS  :              0 Pages (0 Bytes)
> 
>  MMIO      :              0 Pages (0 Bytes)
> 
>  MMIO_Port :              0 Pages (0 Bytes)
> 
>  PalCode   :              0 Pages (0 Bytes)
> 
>  Available :        247,183 Pages (1,012,461,568 Bytes)
> 
>              --------------
> 
> Total Memory:          1,023 MB (1,072,742,400 Bytes)
> 
> 
>> 
>> Thanks,
>> 
>> Andrew Fish
>> 
>>> Thank you,
>>> Vladimir
>>> _______________________________________________
>>> edk2-devel mailing list
>>> [email protected]
>>> https://urldefense.proofpoint.com/v2/url?u=https-
>> 3A__lists.01.org_mailman_listinfo_edk2-2Ddevel&d=CwICAg&c=Hw-
>> EJUFt2_D9PK5csBJ29kRV40HqSDXWTLPyZ6W8u84&r=4sdzHKz0eU1vXqaUyS
>> VmyA&m=dj-
>> PLSCQ4D53smC8eOprHa7aKtcLYkZDhDWnczTquDU&s=jb4N3rlGt6jI92m5sab
>> AKDmsB2T9jdtvYQhw_A91Xi4&e=
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to