From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 7B47CAC10AB for ; Fri, 12 Jan 2024 19:16:19 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=nW5A1B2/gxvNST6mO0/JCNlrvC8/sT4gwzIbRz38s7c=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1705086978; v=1; b=RwC0ww+8n6PEXQACD/zgWTGesws6Og0NG9zI1cFbTbvJ7HHohH6B+DyyeNpT+hvRcugmhC7t 5/FWogJ68ucluChax5mDvMTx5pT3gVJkpTxgu8bSHNFzeTQDzXVWWdqZvJm5CwFCYG3dUnFhtN6 PRcBqOC28wI1PGpbFdUFXsoE= X-Received: by 127.0.0.2 with SMTP id qZL6YY7687511xhnofAu892e; Fri, 12 Jan 2024 11:16:18 -0800 X-Received: from mail-oo1-f48.google.com (mail-oo1-f48.google.com [209.85.161.48]) by mx.groups.io with SMTP id smtpd.web10.15591.1705084313250214215 for ; Fri, 12 Jan 2024 10:31:53 -0800 X-Received: by mail-oo1-f48.google.com with SMTP id 006d021491bc7-598a5448ef5so1481988eaf.0 for ; Fri, 12 Jan 2024 10:31:53 -0800 (PST) X-Gm-Message-State: sTO5yxCIc2zjmrIskJLYuxmxx7686176AA= X-Google-Smtp-Source: AGHT+IEf817M19aB2kaf75VFO/mmVC/vBQwBiA8Xq3q00RhVQtjfCwx+0DCQmZwzDnmo0L3tsJwbEQ== X-Received: by 2002:a05:6358:f1c:b0:175:643d:75ef with SMTP id b28-20020a0563580f1c00b00175643d75efmr1681961rwj.4.1705084312256; Fri, 12 Jan 2024 10:31:52 -0800 (PST) X-Received: from dev-hypervisor-01.hsd1.ca.comcast.net ([2601:645:8001:5750::6d3b]) by smtp.googlemail.com with ESMTPSA id w67-20020a626246000000b006d6b91c6eb6sm3699243pfb.13.2024.01.12.10.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Jan 2024 10:31:52 -0800 (PST) From: "Thomas Barrett" To: devel@edk2.groups.io Cc: Thomas Barrett , Anatol Belski , Ard Biesheuvel , Gerd Hoffmann , Jianyong Wu , Jiewen Yao , Laszlo Ersek , Rob Bradford Subject: [edk2-devel] [PATCH v3 1/3] OvmfPkg: Add CloudHv support to PlatformScanE820 utility function. Date: Fri, 12 Jan 2024 18:31:42 +0000 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tbarrett1200@gmail.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=RwC0ww+8; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io From: Thomas Barrett The PlatformScanE820 utility function is not currently compatible with CloudHv since it relies on the prescence of the "etc/e820" QemuFwCfg file. Update the PlatformScanE820 to iterate through the PVH e820 entries when running on a CloudHv guest. Cc: Anatol Belski Cc: Ard Biesheuvel Cc: Gerd Hoffmann Cc: Jianyong Wu Cc: Jiewen Yao Cc: Laszlo Ersek Cc: Rob Bradford Signed-off-by: Thomas Barrett --- OvmfPkg/Library/PlatformInitLib/MemDetect.c | 95 ++++++++++++++------- 1 file changed, 65 insertions(+), 30 deletions(-) diff --git a/OvmfPkg/Library/PlatformInitLib/MemDetect.c b/OvmfPkg/Library/= PlatformInitLib/MemDetect.c index 662e7e85bb..76a9dc9211 100644 --- a/OvmfPkg/Library/PlatformInitLib/MemDetect.c +++ b/OvmfPkg/Library/PlatformInitLib/MemDetect.c @@ -248,6 +248,67 @@ PlatformReservationConflictCB ( PlatformInfoHob->PcdPciMmio64Base =3D NewBase;=0D }=0D =0D +/**=0D + Returns PVH memmap=0D + @param Entries Pointer to PVH memmap=0D + @param Count Number of entries=0D + @return EFI_STATUS=0D +**/=0D +EFI_STATUS=0D +GetPvhMemmapEntries (=0D + struct hvm_memmap_table_entry **Entries,=0D + UINT32 *Count=0D + )=0D +{=0D + UINT32 *PVHResetVectorData;=0D + struct hvm_start_info *pvh_start_info;=0D +=0D + PVHResetVectorData =3D (VOID *)(UINTN)PcdGet32 (PcdXenPvhStartOfDayStruc= tPtr);=0D + if (PVHResetVectorData =3D=3D 0) {=0D + return EFI_NOT_FOUND;=0D + }=0D +=0D + pvh_start_info =3D (struct hvm_start_info *)(UINTN)PVHResetVectorData[0]= ;=0D +=0D + *Entries =3D (struct hvm_memmap_table_entry *)(UINTN)pvh_start_info->mem= map_paddr;=0D + *Count =3D pvh_start_info->memmap_entries;=0D +=0D + return EFI_SUCCESS;=0D +}=0D +=0D +STATIC=0D +EFI_STATUS=0D +PlatformScanE820Pvh (=0D + IN E820_SCAN_CALLBACK Callback,=0D + IN OUT EFI_HOB_PLATFORM_INFO *PlatformInfoHob=0D + )=0D +{=0D + struct hvm_memmap_table_entry *Memmap;=0D + UINT32 MemmapEntriesCount;=0D + struct hvm_memmap_table_entry *Entry;=0D + EFI_E820_ENTRY64 E820Entry;=0D + EFI_STATUS Status;=0D + UINT32 Loop;=0D +=0D + Status =3D GetPvhMemmapEntries (&Memmap, &MemmapEntriesCount);=0D + if (EFI_ERROR (Status)) {=0D + return Status;=0D + }=0D +=0D + for (Loop =3D 0; Loop < MemmapEntriesCount; Loop++) {=0D + Entry =3D Memmap + Loop;=0D +=0D + if (Entry->type =3D=3D XEN_HVM_MEMMAP_TYPE_RAM) {=0D + E820Entry.BaseAddr =3D Entry->addr;=0D + E820Entry.Length =3D Entry->size;=0D + E820Entry.Type =3D Entry->type;=0D + Callback (&E820Entry, PlatformInfoHob);=0D + }=0D + }=0D +=0D + return EFI_SUCCESS;=0D +}=0D +=0D /**=0D Iterate over the entries in QEMU's fw_cfg E820 RAM map, call the=0D passed callback for each entry.=0D @@ -279,6 +340,10 @@ PlatformScanE820 ( EFI_E820_ENTRY64 E820Entry;=0D UINTN Processed;=0D =0D + if (PlatformInfoHob->HostBridgeDevId =3D=3D CLOUDHV_DEVICE_ID) {=0D + return PlatformScanE820Pvh (Callback, PlatformInfoHob);=0D + }=0D +=0D Status =3D QemuFwCfgFindFile ("etc/e820", &FwCfgItem, &FwCfgSize);=0D if (EFI_ERROR (Status)) {=0D return Status;=0D @@ -297,36 +362,6 @@ PlatformScanE820 ( return EFI_SUCCESS;=0D }=0D =0D -/**=0D - Returns PVH memmap=0D -=0D - @param Entries Pointer to PVH memmap=0D - @param Count Number of entries=0D -=0D - @return EFI_STATUS=0D -**/=0D -EFI_STATUS=0D -GetPvhMemmapEntries (=0D - struct hvm_memmap_table_entry **Entries,=0D - UINT32 *Count=0D - )=0D -{=0D - UINT32 *PVHResetVectorData;=0D - struct hvm_start_info *pvh_start_info;=0D -=0D - PVHResetVectorData =3D (VOID *)(UINTN)PcdGet32 (PcdXenPvhStartOfDayStruc= tPtr);=0D - if (PVHResetVectorData =3D=3D 0) {=0D - return EFI_NOT_FOUND;=0D - }=0D -=0D - pvh_start_info =3D (struct hvm_start_info *)(UINTN)PVHResetVectorData[0]= ;=0D -=0D - *Entries =3D (struct hvm_memmap_table_entry *)(UINTN)pvh_start_info->mem= map_paddr;=0D - *Count =3D pvh_start_info->memmap_entries;=0D -=0D - return EFI_SUCCESS;=0D -}=0D -=0D STATIC=0D UINT64=0D GetHighestSystemMemoryAddressFromPvhMemmap (=0D --=20 2.34.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113772): https://edk2.groups.io/g/devel/message/113772 Mute This Topic: https://groups.io/mt/103689731/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-