From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.0.62; helo=eur01-he1-obe.outbound.protection.outlook.com; envelope-from=alexei.fedorov@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0062.outbound.protection.outlook.com [104.47.0.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id D8680222A3349 for ; Wed, 24 Jan 2018 03:21:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=xlJo466itzhdDNwx8HP23/83f1dw1oopwicdbU4NFik=; b=n93iSw+Ab9WAhL03EwjIBi0EvnnlqLp3G74mVQoIOy/B/NWU01YBXNyf/Tc8jzFlmpPgIrL3965o5/XiuphB/jCz9MFsOGi0JmS5UcrNbOA7sECcEl81pBYe96bKh0c7ehUuitSfM51DDrWbaRXIdKdZCeFzux3E46Nn7rG5tf4= Received: from DB5PR08MB1014.eurprd08.prod.outlook.com (10.166.14.11) by AM5PR0801MB1618.eurprd08.prod.outlook.com (10.169.246.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Wed, 24 Jan 2018 11:27:12 +0000 Received: from DB5PR08MB1014.eurprd08.prod.outlook.com ([fe80::c543:a54c:53b9:70da]) by DB5PR08MB1014.eurprd08.prod.outlook.com ([fe80::c543:a54c:53b9:70da%14]) with mapi id 15.20.0428.023; Wed, 24 Jan 2018 11:27:11 +0000 From: Alexei Fedorov To: Evan Lloyd , Ard Biesheuvel CC: "\"Matteo.Carlini@arm.com\"@arm.com" <"Matteo.Carlini@arm.com"@arm.com>, "\"leif.lindholm@linaro.org\"@arm.com" <"leif.lindholm@linaro.org"@arm.com>, "\"nd@arm.com\"@arm.com" <"nd@arm.com"@arm.com>, "edk2-devel@lists.01.org" , Arvind Chauhan , "\"ard.biesheuvel@linaro.org\"@arm.com" <"ard.biesheuvel@linaro.org"@arm.com>, Thomas Abraham , Sami Mujawar , Mitch Ishihara Thread-Topic: [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP500/DP550/DP650 platform library. Thread-Index: AQHTiLG2OhRFjK4JOECX6Y7eTlQ7O6OC8yGH Date: Wed, 24 Jan 2018 11:27:11 +0000 Message-ID: References: <20171222190821.12440-1-evan.lloyd@arm.com> <20171222190821.12440-16-evan.lloyd@arm.com> , In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alexei.Fedorov@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM5PR0801MB1618; 7:bx/RW573/DEpwIV8NjhuV73hCrWKedx0tLOkwUingbcT6FLDhw0nK1OPdbB+nqg1jDIcg0Fs90fJGRWzKrYFJAISLJSteMMq2bSRdTbX99tYkcPo1w294k+PKGMSYcgBjWWW8++y2uzAGvQ1ldACXIKINZF9vm+Rl57SWyew5PDJyBmy+7+y+kdB0v9ep1Fi3cRZwDYbw7xro7jLfPPlRvOB7z+s+m3F1nCCyDFWErfMZYmv/Z0OyjsBfZPi0FzM x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: d9cf0cd2-6626-4ed1-13c5-08d5631d699a x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:AM5PR0801MB1618; x-ms-traffictypediagnostic: AM5PR0801MB1618: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(162533806227266)(17755550239193); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3002001)(93006095)(93001095)(10201501046)(3231023)(2400081)(944501161)(6055026)(6041288)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:AM5PR0801MB1618; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1618; x-forefront-prvs: 056297E276 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(366004)(346002)(376002)(39380400002)(39860400002)(40434004)(189003)(199004)(13464003)(8936002)(81156014)(59450400001)(2950100002)(8676002)(81166006)(9686003)(54896002)(33656002)(236005)(6606003)(68736007)(6306002)(105586002)(6246003)(106356001)(19627405001)(606006)(53936002)(66066001)(5660300001)(6436002)(4326008)(229853002)(26005)(5250100002)(5890100001)(2900100001)(14454004)(25786009)(55016002)(74316002)(7736002)(966005)(72206003)(478600001)(93886005)(53546011)(6506007)(76176011)(102836004)(3280700002)(575784001)(3660700001)(97736004)(6116002)(316002)(110136005)(86362001)(99286004)(3846002)(2906002)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1618; H:DB5PR08MB1014.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: uPM8gnOfVewR0vTeIZsOegu6oBKWqhL8XMhjyTnzZeHJxjh2tkwv2InhKCMpeM+eqiMA1F96Vh2yaIpSFqVVXA== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9cf0cd2-6626-4ed1-13c5-08d5631d699a X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2018 11:27:11.8606 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1618 X-Content-Filtered-By: Mailman/MimeDel 2.1.23 Subject: Re: [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP500/DP550/DP650 platform library. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Jan 2018 11:21:49 -0000 Content-Language: en-GB Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Ard, You wrote: > > + Status =3D gDS->SetMemorySpaceAttributes ( > > + *VramBaseAddress, > > + *VramSize, > > + EFI_MEMORY_WC > > Please add EFI_MEMORY_XP here > Setting EFI_MEMORY_XP causes assertion because gDS->SetMemorySpaceAttribut= es() returns Unsupported in edk2\MdeModulePkg\Core\Dxe\Gcd\Gcd.c with Stat= us set at line #834: if ((Entry->Capabilities & Attributes) !=3D Attributes) { //***AF DEBUG ((DEBUG_GCD, " @%d EFI_UNSUPPORTED: Capabilitie=3D0x%lX Attri= butes=3D0x%lX\n", __LINE__, Entry->Capabilities, Attributes)); Status =3D EFI_UNSUPPORTED; goto Done; } because Entry->Capabilities don't have EFI_MEMORY_XP set, see debug output = below: =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Framebuffer @0xF98A4000 0x4000000 GCD:SetMemorySpaceAttributes(Base=3D00000000F98A4000,Length=3D0000000004000= 000) Attributes =3D 0000000000004002 @834 EFI_UNSUPPORTED: Capabilities=3D0x800000000000000E Attributes=3D0x400= 2 Status =3D Unsupported GCDMemType Range Capabilities Attributes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D NonExist 0000000000000000-0000000007FFFFFF 0000000000000000 0000000000000= 000 MMIO 0000000008000000-000000000BFFFFFF C000000000000001 8000000000000= 001 NonExist 000000000C000000-000000001C16FFFF 0000000000000000 0000000000000= 000 MMIO 000000001C170000-000000001C170FFF C000000000000001 8000000000000= 001 NonExist 000000001C171000-000000004FFFFFFF 0000000000000000 0000000000000= 000 MMIO 0000000050000000-00000000501FFFFF C000000000000001 0000000000000= 001* MMIO 0000000050200000-0000000057FFFFFF C000000000000001 0000000000000= 001 NonExist 0000000058000000-000000007FFFFFFF 0000000000000000 0000000000000= 000 SystemMem 0000000080000000-00000000FEFFFFFF 800000000000000E 0000000000000= 008* NonExist 00000000FF000000-000000087FFFFFFF 0000000000000000 0000000000000= 000 SystemMem 0000000880000000-00000009FFFFFFFF 800000000000000E 0000000000000= 008* NonExist 0000000A00000000-0000003FFFFFFFFF 0000000000000000 0000000000000= 000 MMIO 0000004000000000-00000040000FFFFF C000000000000001 0000000000000= 001* MMIO 0000004000100000-00000040FFFFFFFF C000000000000001 0000000000000= 001 NonExist 0000004100000000-0000FFFFFFFFFFFF 0000000000000000 0000000000000= 000 ASSERT_EFI_ERROR (Status =3D Unsupported) ASSERT [HdLcdGraphicsDxe] n:\edk2\ArmPlatformPkg\ArmJunoPkg\Library\HdLcdAr= mJunoLib\HdLcdArmJuno.c(254): !EFI_ERROR (Status) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D If gDS->SetMemorySpaceAttributes() call is replaced with Cpu->SetMemoryAtt= ributes(), attributes are set successfully with eXecute bit for frame buffe= r being cleared. Alexei. ________________________________ From: edk2-devel on behalf of Evan Lloyd = Sent: 08 January 2018 18:51:12 To: Ard Biesheuvel Cc: "Matteo.Carlini@arm.com"@arm.com; "leif.lindholm@linaro.org"@arm.com; "= nd@arm.com"@arm.com; edk2-devel@lists.01.org; Arvind Chauhan; "ard.biesheuv= el@linaro.org"@arm.com; Thomas Abraham Subject: Re: [edk2] [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New DP= 500/DP550/DP650 platform library. > -----Original Message----- > From: Ard Biesheuvel [mailto:ard.biesheuvel@linaro.org] > Sent: 23 December 2017 16:07 > To: Evan Lloyd > Cc: edk2-devel@lists.01.org; Arvind Chauhan ; > Daniil Egranov ; Thomas Abraham > ; "ard.biesheuvel@linaro.org"@arm.com; > "leif.lindholm@linaro.org"@arm.com; > "Matteo.Carlini@arm.com"@arm.com; "nd@arm.com"@arm.com > Subject: Re: [PATCH edk2-platforms v2 15/18] ARM/VExpressPkg: New > DP500/DP550/DP650 platform library. > > On 22 December 2017 at 19:08, wrote: > > From: Girish Pathak > > ... > > + > > +/* Internal helper function to allocate memory if memory is not > > +already > > + reserved for framebuffer > > + > > + @param[in] VramSize Requested framebuffer size in bytes. > > + @param[out] VramBaseAddress Pointer to memory allocated for > framebuffer. > > + > > + @retval EFI_SUCCESS Framebuffer memory allocated successfu= lly. > > + @retval EFI_UNSUPPORTED Allocated address wider than 40 bits. > > + @retval !EFI_SUCCESS Other errors. > > +**/ > > +STATIC > > +EFI_STATUS > > +GetVram ( > > + IN UINTN CONST VramSize, > > + OUT EFI_PHYSICAL_ADDRESS *CONST VramBaseAddress > > + ) > > +{ > > + EFI_STATUS Status; > > + > > + // Check if memory is already reserved for the framebuffer. > > +#if (FixedPcdGet64 (PcdArmLcdDdrFrameBufferBase) !=3D 0) > > + > > Please don't use CPP conditionals for control flow > > > +#if (!DP_VALID_BASE_ADDR (FixedPcdGet64 > > +(PcdArmLcdDdrFrameBufferBase))) #error ARM Mali DP framebuffer > base address cannot be wider than 40 bits. > > +#else > > + *VramBaseAddress =3D > > + (EFI_PHYSICAL_ADDRESS)FixedPcdGet64 > > +(PcdArmLcdDdrFrameBufferBase); > > + > > + Status =3D EFI_SUCCESS; > > +#endif > > + > > +#else > > + // If not already reserved, attempt to allocate the VRAM from the > DRAM. > > + Status =3D gBS->AllocatePages ( > > + AllocateAnyPages, > > + EfiBootServicesData, > > + EFI_SIZE_TO_PAGES (*VramSize), > > + VramBaseAddress > > + ); > > + if (EFI_ERROR (Status)) { > > + DEBUG ((DEBUG_ERROR, "ArmMaliDpLib: Failed to allocate > framebuffer.\n")); > > + ASSERT (FALSE); > > + return Status; > > + } > > + > > + // ARM Mali DP framebuffer base address can not be wider than 40 bit= s. > > + if (!DP_VALID_BASE_ADDR (*VramBaseAddress)) { > > + gBS->FreePages (*VramBaseAddress, EFI_SIZE_TO_PAGES > (*VramSize)); > > + ASSERT (DP_VALID_BASE_ADDR (*VramBaseAddress)); > > + return EFI_UNSUPPORTED; > > + } > > + > > + // Mark the VRAM as write-combining. The VRAM is inside the DRAM, > > + which is // cacheable, for ARM/AArch64 EFI_MEMORY_WC memory is > actually uncached. > > + Status =3D gDS->SetMemorySpaceAttributes ( > > + *VramBaseAddress, > > + *VramSize, > > + EFI_MEMORY_WC > > Please add EFI_MEMORY_XP here > [[Evan Lloyd]] We can do that, happily. However, in looking at this we fo= und that the UEFI spec has in "2.3.6 AArch64 Platforms", section "2.3.6.1 M= emory types": EFI_MEMORY_XP, ... = Not used or defined Does that suggest we need a minor spec update? > > + ); > > + if (EFI_ERROR (Status)) { > > + ASSERT (FALSE); > > + gBS->FreePages (*VramBaseAddress, EFI_SIZE_TO_PAGES > (*VramSize)); > > + } > > +#endif > > + > > + return Status; > > +} > > + > > +/** Allocate VRAM memory in DRAM for the framebuffer > > + (unless it is reserved already). > > + > > + The allocated address can be used to set the framebuffer as a base > > + buffer address for any layer of the ARM Mali DP. > > + > > + @param[out] VramBaseAddress A pointer to the framebuffer > address. > > + @param[out] VramSize A pointer to the size of the frame > > + buffer in bytes > > + > > + @retval EFI_SUCCESS Frame buffer memory allocation succe= ss. > > + @retval EFI_UNSUPPORTED Allocated address wider than 40 bits > > + @retval !EFI_SUCCESS Other errors. > > +**/ > > +EFI_STATUS > > +LcdPlatformGetVram ( > > + OUT EFI_PHYSICAL_ADDRESS * CONST VramBaseAddress, > > + OUT UINTN * CONST VramSize > > + ) > > +{ > > + ASSERT (VramBaseAddress !=3D NULL); > > + ASSERT (VramSize !=3D NULL); > > + > > + // Set the VRAM size. > > + *VramSize =3D (UINTN)FixedPcdGet32 (PcdArmLcdDdrFrameBufferSize); > > + > > + return GetVram (*VramSize, VramBaseAddress); } > > + > > +/** Return total number of modes supported. > > + > > + Note: Valid mode numbers are 0 to MaxMode - 1 See Section 12.9 of > > + the UEFI Specification 2.7 > > + > > + @retval UINT32 Mode Number. > > +**/ > > +UINT32 > > +LcdPlatformGetMaxMode (VOID) > > +{ > > + return mMaxMode; > > +} > > + > > +/** Set the requested display mode. > > + > > + @param[in] ModeNumber Mode Number. > > + > > + @retval EFI_SUCCESS Mode set successful. > > + @retval EFI_INVALID_PARAMETER Requested mode not found. > > +**/ > > +EFI_STATUS > > +LcdPlatformSetMode ( > > + IN CONST UINT32 ModeNumber > > + ) > > +{ > > + > > + if (ModeNumber >=3D mMaxMode) { > > + ASSERT (ModeNumber < mMaxMode); > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + // On models, platform specific clock/mux settings are not required. > > + // Display controller specific settings for Mali DP are done in > LcdSetMode. > > + return EFI_SUCCESS; > > +} > > + > > +/** Return information for the requested mode number. > > + > > + @param[in] ModeNumber Mode Number. > > + @param[out] Info Pointer for returned mode informatio= n > > + (on success). > > + > > + @retval EFI_SUCCESS Display mode information of the > requested > > + mode returned successfully. > > +**/ > > +EFI_STATUS > > +LcdPlatformQueryMode ( > > + IN CONST UINT32 ModeNumber, > > + OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION * CONST Info > > + ) > > +{ > > + ASSERT (ModeNumber < mMaxMode); > > + ASSERT (Info !=3D NULL); > > + > > + Info->Version =3D 0; > > + Info->HorizontalResolution =3D > > + mDisplayModes[ModeNumber].Horizontal.Resolution; > > + Info->VerticalResolution =3D > > + mDisplayModes[ModeNumber].Vertical.Resolution; > > + Info->PixelsPerScanLine =3D > > + mDisplayModes[ModeNumber].Horizontal.Resolution; > > + > > + Info->PixelFormat =3D FixedPcdGet32 (PcdGopPixelFormat); > > + > > + return EFI_SUCCESS; > > +} > > + > > +/** Return the display timing information for the requested mode > number. > > + > > + @param[in] ModeNumber Mode Number. > > + > > + @param[out] Horizontal Pointer to horizontal timing paramete= rs. > > + (Resolution, Sync, Back porch, Front = porch) > > + @param[out] Vertical Pointer to vertical timing parameters= . > > + (Resolution, Sync, Back porch, Front > > + porch) > > + > > + @retval EFI_SUCCESS Display timing information of the > requested > > + mode returned successfully. > > + @retval EFI_INVALID_PARAMETER Requested mode not found. > > +**/ > > +EFI_STATUS > > +LcdPlatformGetTimings ( > > + IN UINT32 ModeNumber, > > + OUT CONST SCAN_TIMINGS ** Horizontal, > > + OUT CONST SCAN_TIMINGS ** Vertical > > + ) > > +{ > > + ASSERT (Horizontal !=3D NULL); > > + ASSERT (Vertical !=3D NULL); > > + > > + if (ModeNumber >=3D mMaxMode) { > > + ASSERT (ModeNumber < mMaxMode); > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + *Horizontal =3D &mDisplayModes[ModeNumber].Horizontal; > > + *Vertical =3D &mDisplayModes[ModeNumber].Vertical; > > + > > + return EFI_SUCCESS; > > +} > > + > > +/** Return bits per pixel information for a mode number. > > + > > + @param[in] ModeNumber Mode Number. > > + @param[out] Bpp Pointer to value Bytes Per Pixel. > > + > > + @retval EFI_SUCCESS Bits per pixel information of the di= splay > > + mode returned successfully. > > + @retval EFI_INVALID_PARAMETER Requested mode not found. > > +**/ > > +EFI_STATUS > > +LcdPlatformGetBpp ( > > + IN CONST UINT32 ModeNumber, > > + OUT LCD_BPP * CONST Bpp > > + ) > > +{ > > + ASSERT (Bpp !=3D NULL); > > + if (ModeNumber >=3D mMaxMode) { > > + // Check valid ModeNumber. > > + ASSERT (ModeNumber < mMaxMode); > > + return EFI_INVALID_PARAMETER; > > + } > > + > > + *Bpp =3D LCD_BITS_PER_PIXEL_24; > > + > > + return EFI_SUCCESS; > > +} > > diff --git > > > a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > > > b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > > index > > > 1e8f3205312ebf30fa1666130bc944261384359a..f0b482f91a84d91ac9914 > c18b794 > > 1dd32ab8c8a7 100644 > > --- > a/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > > +++ > b/Platform/ARM/VExpressPkg/Library/ArmVExpressLibRTSM/RTSMMem.c > > @@ -21,9 +21,10 @@ > > #include > > > > #define FRAME_BUFFER_DESCRIPTOR ((FixedPcdGet64 > > (PcdArmLcdDdrFrameBufferBase) !=3D 0) ? 1 : 0) > > +#define DP_BASE_DESCRIPTOR ((FixedPcdGet64 > (PcdArmMaliDpBase) !=3D 0) ? 1 : 0) > > > > // Number of Virtual Memory Map Descriptors -#define > > MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS (9 + > FRAME_BUFFER_DESCRIPTOR) > > +#define MAX_VIRTUAL_MEMORY_MAP_DESCRIPTORS (9 + > > +FRAME_BUFFER_DESCRIPTOR + DP_BASE_DESCRIPTOR) > > > > // DDR attributes > > #define DDR_ATTRIBUTES_CACHED > ARM_MEMORY_REGION_ATTRIBUTE_WRITE_BACK > > @@ -158,6 +159,13 @@ ArmPlatformGetVirtualMemoryMap ( > > VirtualMemoryTable[Index].Attributes =3D > > ARM_MEMORY_REGION_ATTRIBUTE_UNCACHED_UNBUFFERED; > > #endif > > > > +#if (FixedPcdGet64 (PcdArmMaliDpBase) !=3D 0) > > + // DP500/DP550/DP650 peripheral memory region > > + VirtualMemoryTable[++Index].PhysicalBase =3D FixedPcdGet64 > > +(PcdArmMaliDpBase); > > + VirtualMemoryTable[Index].VirtualBase =3D FixedPcdGet64 > > +(PcdArmMaliDpBase); > > + VirtualMemoryTable[Index].Length =3D FixedPcdGet32 > > +(PcdArmMaliDpMemoryRegionLength); > > + VirtualMemoryTable[Index].Attributes =3D > > +ARM_MEMORY_REGION_ATTRIBUTE_DEVICE; > > +#endif > > // Map sparse memory region if present > > if (HasSparseMemory) { > > VirtualMemoryTable[++Index].PhysicalBase =3D SparseMemoryBase; > > -- > > Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") > > IMPORTANT NOTICE: The contents of this email and any attachments are confid= ential and may also be privileged. If you are not the intended recipient, p= lease notify the sender immediately and do not disclose the contents to any= other person, use it for any purpose, or store or copy the information in = any medium. Thank you. _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel IMPORTANT NOTICE: The contents of this email and any attachments are confid= ential and may also be privileged. If you are not the intended recipient, p= lease notify the sender immediately and do not disclose the contents to any= other person, use it for any purpose, or store or copy the information in = any medium. Thank you.