From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-002e3701.pphosted.com (mx0b-002e3701.pphosted.com [148.163.143.35]) by mx.groups.io with SMTP id smtpd.web12.5795.1574425697914461505 for ; Fri, 22 Nov 2019 04:28:18 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: hpe.com, ip: 148.163.143.35, mailfrom: prvs=0229d066a2=abner.chang@hpe.com) Received: from pps.filterd (m0148664.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAMCRk2R022922; Fri, 22 Nov 2019 12:28:16 GMT Received: from g2t2354.austin.hpe.com (g2t2354.austin.hpe.com [15.233.44.27]) by mx0b-002e3701.pphosted.com with ESMTP id 2we517m3g7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 22 Nov 2019 12:28:16 +0000 Received: from G1W8106.americas.hpqcorp.net (g1w8106.austin.hp.com [16.193.72.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g2t2354.austin.hpe.com (Postfix) with ESMTPS id 3721581; Fri, 22 Nov 2019 12:28:16 +0000 (UTC) Received: from G4W10204.americas.hpqcorp.net (16.207.82.16) by G1W8106.americas.hpqcorp.net (16.193.72.61) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Fri, 22 Nov 2019 12:28:04 +0000 Received: from NAM01-SN1-obe.outbound.protection.outlook.com (15.241.52.12) by G4W10204.americas.hpqcorp.net (16.207.82.16) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Fri, 22 Nov 2019 12:28:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PpseADhKZNoGb7+iSDO+Y1mvdEhtFDjNWK56hjtjd3hWP4BaDcgFBMeKUsaBdn2vCXQMnsprXkV0jg+aoR7vmS27MxM0RViCAoCq9XcgSbjacCKGiqMh7b+lHPZFEMy/GkxFwf4mTIU22BiOrpBW2wts389/enJne67lp5FXj1y3JdSOa1CY4fHWXGzdB88mAcm+UAvydMJ9NUVd3semEycsO4y2VD/LlsLAPBvsi0d4UMowWhH2FlTIYaUIB7TamGD9SbzBPIRYFVrpUkldIlG5BL6y1qse2kD31FSr8cCuq0nkq15ivMQrqf7uUxBd4Bc7CPlHY6BB0LRmlc78HQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oshLuum/AssgIoSnrBL90GJO5O2A4kjD9iPJUsVXi7w=; b=N7DPH1p4FGgtQKFSdaRzTc442TVIjssu+XfwBJWCJRIv3wvOoc/e8tf1S/xQGWk1ltOzXRlo4VWm0mVV8fV/lxGeuuDYhOvB6hjNerNr9CIz5pIpnlx+TywbiZX3OUv2HOf5EV4yJ5QGDJF3GP0WLzSGcV6ZvsdwDUzuWVHf2neHIYcyw5vvuaog1BklxvzM2nIZWzdoE6uJ//GUy7QORmesaNbupAwEPaZDmI/o+oHumE3Hw35PAyobsEjz8rgqzaDlOpSQw+dS/ztJ98SbnwaQ0R97Nb200Jb9VAWg2AC8rcalB1hiQuVGNE6Y0yar2qFYVtyXWNVbKlUV9bRxvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1192.NAMPRD84.PROD.OUTLOOK.COM (10.169.12.151) by CS1PR8401MB1061.NAMPRD84.PROD.OUTLOOK.COM (10.169.96.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2474.17; Fri, 22 Nov 2019 12:28:01 +0000 Received: from CS1PR8401MB1192.NAMPRD84.PROD.OUTLOOK.COM ([fe80::b49a:cecb:54b0:29ac]) by CS1PR8401MB1192.NAMPRD84.PROD.OUTLOOK.COM ([fe80::b49a:cecb:54b0:29ac%7]) with mapi id 15.20.2474.018; Fri, 22 Nov 2019 12:28:01 +0000 From: "Abner Chang" To: Leif Lindholm CC: "devel@edk2.groups.io" , "Chen, Gilbert" Subject: Re: [edk2-staging/RISC-V-V2 PATCH v3 29/39] RiscVPlatformPkg/RealTimeClockLibNull: Null instance of RTC lib. Thread-Topic: [edk2-staging/RISC-V-V2 PATCH v3 29/39] RiscVPlatformPkg/RealTimeClockLibNull: Null instance of RTC lib. Thread-Index: AQHVoI2PH/hWeyRqeUy47mnpjpmXpKeXHqGA Date: Fri, 22 Nov 2019 12:28:01 +0000 Message-ID: References: <1572227957-13169-1-git-send-email-abner.chang@hpe.com> <1572227957-13169-30-git-send-email-abner.chang@hpe.com> <20191121170254.GP7359@bivouac.eciton.net> In-Reply-To: <20191121170254.GP7359@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 87dfc737-59a0-4055-6c7e-08d76f476a61 x-ms-traffictypediagnostic: CS1PR8401MB1061: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-forefront-prvs: 02296943FF x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(366004)(39860400002)(376002)(136003)(396003)(346002)(13464003)(199004)(189003)(6116002)(14454004)(478600001)(8676002)(11346002)(8936002)(81166006)(81156014)(52536014)(305945005)(76176011)(5660300002)(7736002)(86362001)(66446008)(7696005)(76116006)(66556008)(66476007)(66946007)(6916009)(53546011)(3846002)(229853002)(6506007)(64756008)(74316002)(26005)(4326008)(102836004)(71190400001)(55016002)(71200400001)(6246003)(54906003)(2906002)(6436002)(316002)(186003)(66066001)(25786009)(33656002)(99286004)(256004)(14444005)(446003)(9686003)(213903007)(44824005);DIR:OUT;SFP:1102;SCL:1;SRVR:CS1PR8401MB1061;H:CS1PR8401MB1192.NAMPRD84.PROD.OUTLOOK.COM;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: hpe.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: =?us-ascii?Q?QZj5O6oqzapa7eN5DS3fRjXgEw3QBSKPhdsgFxiZvXkZ8j52W2fB80r2VxUP?= =?us-ascii?Q?UhoJi/zC9s+tDCSZAIO/8Jf79iP/nJ3FwqLdedZT3uJIpqt/D0FmUQVi3mTA?= =?us-ascii?Q?vbgXU8JbGXZ8TA363+lkaBafxT/pfNSZ+pYa9f2SPp7xkbYTkLBVUdBKaaMo?= =?us-ascii?Q?1wRPflKE8VfdiyBLpzcbFO2q8a0j2YVa5rIK/DvUOZjNOd6/KqFRyfbkq9hi?= =?us-ascii?Q?Ti+H2y2a0WRX+LEfUPOtZ2jJXTZ20tyRrrWwEVsG2dfIQvCCddiOs8co9LJi?= =?us-ascii?Q?rbhEgWfuvIl20ztJmsdGoidEDeXIX3U626rXkyaj9O28q4fbNQ98fwUrBfQo?= =?us-ascii?Q?jSMXNiUSVSXjUIgMXxyIcR4+i2IY0hQ2B483qCfrdfUmqq841yAXihIk5Gqv?= =?us-ascii?Q?JSYLaZ7m11cVfEAyTFdsV95X+1AzoavZWLN2sFRpRcfUquPJv+dm8VusiR6b?= =?us-ascii?Q?2r3xRaBdbFpQlsiE1Y2/0votImtSMVmRcYwLv7GaBfo6JR22pPNqbIhJ0S9S?= =?us-ascii?Q?AJ2M9d55K0IL2AUVhGtmCYsX9oxvora97LiiHaGVeqMZamPuNg5XjTxTQ9dP?= =?us-ascii?Q?apm8Y5GbXxDlhdggsCPatWhnQhtJdSb+TCwIB9fiust1d2YwkJzd2yrWjlZ1?= =?us-ascii?Q?X6/bmk1Rf7+Ji6Q0/MHV2HZukeGHaRfSjg8RNk2KDAx07e6Mio9uJG7SbTH0?= =?us-ascii?Q?K8ssHeSxggRG7aHHfweUsmTNsCXdEDoT5dwAkS5Cj1pKUiwxpXRBcDtr9E/t?= =?us-ascii?Q?KVCvbYLqxNQXuNh8ARqi3DLsp3dTgpSKUQ3CS/cNH7pRa6NOXsE3V4MxBaHV?= =?us-ascii?Q?Z0DaRljZdVpLTz7mT+BYlBEHSUEEAWwLIR9tVJEfdZPYhqzz7v8ZuVm0IMcU?= =?us-ascii?Q?XWPM8Au5XVVN0zzYjtGRFwurmAYt5TQasuwiso00o608fEG5//AYOVr/d3Kp?= =?us-ascii?Q?lw1jqihhHN+CrokU2jhstXjyun5AMlB7QbI/CRzczRpzDLCXCxWXP9p3vuCt?= =?us-ascii?Q?zPcZDgSPpRw0DJeyRxUCce6eNKy8/pYX81ZmN0r+BKr4vXv2ia7Wco4Tvjek?= =?us-ascii?Q?dFynggHDJTDWoZpW/mHiLSV1vQlLubvc/9gScbnqR2Bb5IzIR4Yg0PciBXi7?= =?us-ascii?Q?RQP6VQviJ2ocWV8oxUf0nJcwD5aZCvry65Je9t4JC68gY/Qx7+pCt/kKXsAc?= =?us-ascii?Q?H+lfgaLgOpq0KHqE7vf8iXsID7f1aSDbYauUuyIJ+K2XCDU5JA5dV6j1Jsql?= =?us-ascii?Q?N1GKvm3s6EZcHqNahtsVpOKDa1xXHt8qDw68M5yxFSMB3dwDIbieMyg2jtCM?= =?us-ascii?Q?l0NHs0Pidpko+3bhh/t+z66XIi7BGKHfWVGcCeNuac23+EGPgj6Jj3//4Xm7?= =?us-ascii?Q?oZv0jSFgQgOHim74VrIV9Jc78jcrQovwOqoHdvoM9tNMgsbSPF8N62bxRrkR?= =?us-ascii?Q?G+raVijcar1emz1M6bgGtvWhRdxsVZbgRwzeTlYcHz725DosSD1UfhYjcYoz?= =?us-ascii?Q?06s3Dcb0k1D2hU62yiDpYFKlgo6nov1seXmP790egtC7j79tPF+HAi8bGY9v?= =?us-ascii?Q?nFkdmVTdP5hjWOsLw+KN0w65o79BWDtGEWyZcE2H5FD5NqASj5pAUmvrBxOF?= =?us-ascii?Q?kKtSPqudjpwjseGjYlhH2fPL/ccX1e8BZk9gv/rVSC3wSnn/1X/AFLP1rZFQ?= =?us-ascii?Q?gU8AhyZhauadsCckUvzgD1IEBgyv9mLXMC0cAcq8URi1FoO//EjICo3R6dSg?= =?us-ascii?Q?/tVLXdx/PEQGnQt9Cp016DJRu017sU5MeRi3wlliXYWl4Y0z9/H3rr9bKP4X?= =?us-ascii?Q?QsEX+atsaFzMYw=3D=3D?= X-MS-Exchange-CrossTenant-Network-Message-Id: 87dfc737-59a0-4055-6c7e-08d76f476a61 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Nov 2019 12:28:01.2216 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KyrgqYVMjXzW6md+KtvZyOJR/TEout/vf5vDW9sUtv4idxOrWhr1H/3zDKtzk+DwynkAUDN1863yXYLacqVNZQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB1061 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-22_02:2019-11-21,2019-11-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 mlxlogscore=999 mlxscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 impostorscore=0 spamscore=0 priorityscore=1501 adultscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1910280000 definitions=main-1911220112 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Leif Lindholm [mailto:leif.lindholm@linaro.org] > Sent: Friday, November 22, 2019 1:03 AM > To: Chang, Abner (HPS SW/FW Technologist) > Cc: devel@edk2.groups.io; Chen, Gilbert > Subject: Re: [edk2-staging/RISC-V-V2 PATCH v3 29/39] > RiscVPlatformPkg/RealTimeClockLibNull: Null instance of RTC lib. >=20 > On Mon, Oct 28, 2019 at 09:59:07 +0800, Abner Chang wrote: > > Null instance of Real Time Clock lib for RISC-V platform. > > > > Signed-off-by: Abner Chang > > > > Cc: Leif Lindholm > > Cc: Gilbert Chen >=20 > Can you drop this one in favour of > EmbeddedPkg/Library/VirtualRealTimeClockLib/ Both U500.dsc and U540.dsc use EmbeddedPkg/Library/VirtualRealTimeClockLib,= you can see this in edk2-platform patches. The NULL one is only used in RiscVplatformPkg for build. I don't think we h= ave to use VirtualRealTimeClockLib in this RiscVplatformPkg package. Abner > ? >=20 > / > Leif >=20 > > --- > > .../RealTimeClockLibNull/RealTimeClockLibNull.inf | 30 +++ > > .../RealTimeClockLibNull/RealTimeClockLibNull.c | 204 > +++++++++++++++++++++ > > 2 files changed, 234 insertions(+) > > create mode 100644 > > RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.inf > > create mode 100644 > > RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.c > > > > diff --git > > a/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.i > > nf > > b/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.i > > nf > > new file mode 100644 > > index 0000000..b9bffa1 > > --- /dev/null > > +++ b/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNu > > +++ ll.inf > > @@ -0,0 +1,30 @@ > > +#/** @file > > +# > > +# Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All > > +rights reserved.
# # SPDX-License-Identifier: > > +BSD-2-Clause-Patent # #**/ > > + > > +[Defines] > > + INF_VERSION =3D 0x0001001b > > + BASE_NAME =3D RealTimeClockLibNull > > + FILE_GUID =3D BFC3E25A-8AD0-4201-8A75-F00DE7964= 370 > > + MODULE_TYPE =3D BASE > > + VERSION_STRING =3D 1.0 > > + LIBRARY_CLASS =3D RealTimeClockLib > > + > > +[Sources.common] > > + RealTimeClockLibNull.c > > + > > +[Packages] > > + MdePkg/MdePkg.dec > > + > > +[LibraryClasses] > > + UefiLib > > + DebugLib > > +# Use EFiAtRuntime to check stage > > + UefiRuntimeLib > > + > > +[Pcd] > > + > > diff --git > > a/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.c > > b/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNull.c > > new file mode 100644 > > index 0000000..904e7e7 > > --- /dev/null > > +++ b/RiscVPlatformPkg/Library/RealTimeClockLibNull/RealTimeClockLibNu > > +++ ll.c > > @@ -0,0 +1,204 @@ > > +/** @file > > + EFI RealTimeClock NULL library > > + > > + Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All > > + rights reserved.
> > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > +**/ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +// Use EfiAtRuntime to check stage > > +#include > > +#include > > +#include > > +#include > > + > > + > > +/** > > + Returns the current time and date information, and the time-keeping > > +capabilities > > + of the hardware platform. > > + > > + @param Time A pointer to storage to receive a sna= pshot of the > current time. > > + @param Capabilities An optional pointer to a buffer to re= ceive the > real time clock > > + device's capabilities. > > + > > + @retval EFI_SUCCESS The operation completed successfully. > > + @retval EFI_INVALID_PARAMETER Time is NULL. > > + @retval EFI_DEVICE_ERROR The time could not be retrieved due to > hardware error. > > + @retval EFI_SECURITY_VIOLATION The time could not be retrieved due > to an authentication failure. > > +**/ > > +EFI_STATUS > > +EFIAPI > > +LibGetTime ( > > + OUT EFI_TIME *Time, > > + OUT EFI_TIME_CAPABILITIES *Capabilities > > + ) > > +{ > > + EFI_STATUS Status =3D EFI_SUCCESS; > > + > > + return Status; > > + > > +} > > + > > + > > +/** > > + Sets the current local time and date information. > > + > > + @param Time A pointer to the current time. > > + > > + @retval EFI_SUCCESS The operation completed successfully. > > + @retval EFI_INVALID_PARAMETER A time field is out of range. > > + @retval EFI_DEVICE_ERROR The time could not be set due due to > hardware error. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +LibSetTime ( > > + IN EFI_TIME *Time > > + ) > > +{ > > + > > + EFI_STATUS Status =3D EFI_SUCCESS; > > + > > + > > + return Status; > > +} > > + > > + > > +/** > > + Returns the current wakeup alarm clock setting. > > + > > + @param Enabled Indicates if the alarm is currently en= abled or > disabled. > > + @param Pending Indicates if the alarm signal is pendi= ng and > requires acknowledgement. > > + @param Time The current alarm setting. > > + > > + @retval EFI_SUCCESS The alarm settings were returned. > > + @retval EFI_INVALID_PARAMETER Any parameter is NULL. > > + @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved > due to a hardware error. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +LibGetWakeupTime ( > > + OUT BOOLEAN *Enabled, > > + OUT BOOLEAN *Pending, > > + OUT EFI_TIME *Time > > + ) > > +{ > > + // Not a required feature > > + return EFI_UNSUPPORTED; > > +} > > + > > + > > +/** > > + Sets the system wakeup alarm clock time. > > + > > + @param Enabled Enable or disable the wakeup alarm. > > + @param Time If Enable is TRUE, the time to set the= wakeup > alarm for. > > + > > + @retval EFI_SUCCESS If Enable is TRUE, then the wakeup ala= rm was > enabled. If > > + Enable is FALSE, then the wakeup alarm= was disabled. > > + @retval EFI_INVALID_PARAMETER A time field is out of range. > > + @retval EFI_DEVICE_ERROR The wakeup time could not be set due to > a hardware error. > > + @retval EFI_UNSUPPORTED A wakeup timer is not supported on this > platform. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +LibSetWakeupTime ( > > + IN BOOLEAN Enabled, > > + OUT EFI_TIME *Time > > + ) > > +{ > > + // Not a required feature > > + return EFI_UNSUPPORTED; > > +} > > + > > + > > + > > +/** > > + This is the declaration of an EFI image entry point. This can be > > +the entry point to an application > > + written to this specification, an EFI boot service driver, or an EFI= runtime > driver. > > + > > + @param ImageHandle Handle that identifies the loaded imag= e. > > + @param SystemTable System Table for this image. > > + > > + @retval EFI_SUCCESS The operation completed successfully. > > + > > +**/ > > +EFI_STATUS > > +EFIAPI > > +LibRtcInitialize ( > > + IN EFI_HANDLE ImageHandle, > > + IN EFI_SYSTEM_TABLE *SystemTable > > + ) > > +{ > > + EFI_STATUS Status; > > + EFI_HANDLE Handle; > > + > > + > > + EFI_TIME EfiTime; > > + > > + // Setup the setters and getters > > + gRT->GetTime =3D LibGetTime; > > + gRT->SetTime =3D LibSetTime; > > + gRT->GetWakeupTime =3D LibGetWakeupTime; gRT->SetWakeupTime =3D > > + LibSetWakeupTime; > > + > > + > > + (VOID)gRT->GetTime (&EfiTime, NULL); if((EfiTime.Year < 2015) || > > + (EfiTime.Year > 2099)){ > > + EfiTime.Year =3D 2015; > > + EfiTime.Month =3D 1; > > + EfiTime.Day =3D 1; > > + EfiTime.Hour =3D 0; > > + EfiTime.Minute =3D 0; > > + EfiTime.Second =3D 0; > > + EfiTime.Nanosecond =3D 0; > > + Status =3D gRT->SetTime(&EfiTime); > > + if (EFI_ERROR(Status)) > > + { > > + DEBUG((DEBUG_ERROR, "[%a]:[%dL] Status : %r\n", __FUNCTION__, > __LINE__, Status)); > > + } > > + } > > + > > + // Install the protocol > > + Handle =3D NULL; > > + Status =3D gBS->InstallMultipleProtocolInterfaces ( > > + &Handle, > > + &gEfiRealTimeClockArchProtocolGuid, NULL, > > + NULL > > + ); > > + > > + return Status; > > +} > > + > > + > > +/** > > + Fixup internal data so that EFI can be call in virtual mode. > > + Call the passed in Child Notify event and convert any pointers in > > + lib to virtual mode. > > + > > + @param[in] Event The Event that is being processed > > + @param[in] Context Event Context > > +**/ > > +VOID > > +EFIAPI > > +LibRtcVirtualNotifyEvent ( > > + IN EFI_EVENT Event, > > + IN VOID *Context > > + ) > > +{ > > + // > > + // Only needed if you are going to support the OS calling RTC functi= ons in > virtual mode. > > + // You will need to call EfiConvertPointer (). To convert any > > +stored physical addresses > > + // to virtual address. After the OS transitions to calling in > > +virtual mode, all future > > + // runtime calls will be made in virtual mode. > > + // > > + return; > > +} > > -- > > 2.7.4 > >