From nobody Fri Apr 19 09:18:39 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+105221+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+105221+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1684917767; cv=none; d=zohomail.com; s=zohoarc; b=nS1DCCyQdsoIgfaN7/ZJv/5s3AO38fSML4DlrVXyN9QCT0d9pi4Mh36l11pVxONCX+B4eq3Ob6pucdmUSvWLJDRECuwrsy4u63DSggOpYkpf/B/40VBockn5sk4I1t+/kfAIZ5y8Fk0yH0EKnjDHsY8tddZIEUz4cM6mr97jZG4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1684917767; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=V70RvyfvtJY8eiiKS9VFKStA4ON6I53f8i86wg5RP5c=; b=PRJTXQg1XzBnwS58s65GXZSmLz5c9nenOiDedGbtWbkeVhABFrCDWxcxtpctJWm3Dpm2ba/ueS2jEH+/F8IBwuNhQJMG8RpadJ4eIOcyTB/BYJKStLP5DLhOSl2tPUaWl7EKYnTmZFTvsvM4E6Zm1Ffvw+YeLHAtBtIMwmhb/DM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+105221+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1684917767267768.9761563204528; Wed, 24 May 2023 01:42:47 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id on0PYY1788612xscO1npHhNt; Wed, 24 May 2023 01:42:46 -0700 X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web11.4171.1684917765338726866 for ; Wed, 24 May 2023 01:42:46 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="381745538" X-IronPort-AV: E=Sophos;i="6.00,188,1681196400"; d="scan'208";a="381745538" X-Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2023 01:42:46 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10719"; a="848658007" X-IronPort-AV: E=Sophos;i="6.00,188,1681196400"; d="scan'208";a="848658007" X-Received: from gguo-desk.gar.corp.intel.com ([10.5.215.23]) by fmsmga001.fm.intel.com with ESMTP; 24 May 2023 01:42:45 -0700 From: "Guo, Gua" To: devel@edk2.groups.io Cc: gua.guo@intel.com, Ray Ni , Michael D Kinney Subject: [edk2-devel] [PATCH v4 1/1] PcAtChipsetPkg: RTC Runtime unable to get correct IO port by PCD Date: Wed, 24 May 2023 16:42:39 +0800 Message-Id: <20230524084239.1223-2-gua.guo@intel.com> In-Reply-To: <20230524084239.1223-1-gua.guo@intel.com> References: <20230524084239.1223-1-gua.guo@intel.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: 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,gua.guo@intel.com X-Gm-Message-State: iUWyMeW7jFZxwVBq2M8YVFGxx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1684917766; bh=XnyxZS8ADTV7sDyvDnArWTNeq6ops1zoH34C0OAC6l4=; h=Cc:Date:From:Reply-To:Subject:To; b=NV/KjqxIyRDEg7aknYABoRzG7hLRQX7h/QP+DChvS4i1QW11BOU0bSAA3GWTqLl14lD uW50THwqs5/uPGtPWlphbNmSN8RX0Mb962YFG67S3KD5D3QvaI0c3yc4ZgbwxPjlGq89d LLL/KN4ls6t/Ai9kUu+OoYX/64XQtHgh4rg= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1684917768858100007 Content-Type: text/plain; charset="utf-8" From: Gua Guo RTC runtime is unable to get dynamic PCD value after booting to OS using runtime services. Resolution: Cache the dynamic PCD value in RTC driver entry point Cc: Ray Ni Cc: Michael D Kinney Signed-off-by: Gua Guo Reviewed-by: Ray Ni --- .../PcatRealTimeClockRuntimeDxe/PcRtc.c | 36 ++++++++++--------- .../PcatRealTimeClockRuntimeDxe/PcRtcEntry.c | 14 ++++++-- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c b/PcAtChips= etPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c index d8b9fa8376..ff1b019ce2 100644 --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c @@ -11,9 +11,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 #include "PcRtc.h" =20 -extern UINTN mRtcIndexRegister; -extern UINTN mRtcTargetRegister; - +extern UINTN mRtcIndexRegister; +extern UINTN mRtcTargetRegister; +extern UINT16 mRtcDefaultYear; +extern UINT16 mMinimalValidYear; +extern UINT16 mMaximalValidYear; // // Days of month. // @@ -72,10 +74,10 @@ IoRtcRead ( ) { IoWrite8 ( - PcdGet8 (PcdRtcIndexRegister), - (UINT8)(Address | (UINT8)(IoRead8 (PcdGet8 (PcdRtcIndexRegister)) & 0x= 80)) + mRtcIndexRegister, + (UINT8)(Address | (UINT8)(IoRead8 (mRtcIndexRegister) & 0x80)) ); - return IoRead8 (PcdGet8 (PcdRtcTargetRegister)); + return IoRead8 (mRtcTargetRegister); } =20 /** @@ -94,10 +96,10 @@ IoRtcWrite ( ) { IoWrite8 ( - PcdGet8 (PcdRtcIndexRegister), - (UINT8)(Address | (UINT8)(IoRead8 (PcdGet8 (PcdRtcIndexRegister)) & 0x= 80)) + mRtcIndexRegister, + (UINT8)(Address | (UINT8)(IoRead8 (mRtcIndexRegister) & 0x80)) ); - IoWrite8 (PcdGet8 (PcdRtcTargetRegister), Data); + IoWrite8 (mRtcTargetRegister, Data); } =20 /** @@ -317,8 +319,8 @@ PcRtcInit ( Time.Hour =3D RTC_INIT_HOUR; Time.Day =3D RTC_INIT_DAY; Time.Month =3D RTC_INIT_MONTH; - Time.Year =3D MAX (PcdGet16 (PcdRtcDefaultYear), PcdGet16 (PcdMi= nimalValidYear)); - Time.Year =3D MIN (Time.Year, PcdGet16 (PcdMaximalValidYear)); + Time.Year =3D MAX (mRtcDefaultYear, mMinimalValidYear); + Time.Year =3D MIN (Time.Year, mMaximalValidYear); Time.Nanosecond =3D 0; Time.TimeZone =3D EFI_UNSPECIFIED_TIMEZONE; Time.Daylight =3D 0; @@ -358,8 +360,8 @@ PcRtcInit ( Time.Hour =3D RTC_INIT_HOUR; Time.Day =3D RTC_INIT_DAY; Time.Month =3D RTC_INIT_MONTH; - Time.Year =3D MAX (PcdGet16 (PcdRtcDefaultYear), PcdGet16 (PcdMini= malValidYear)); - Time.Year =3D MIN (Time.Year, PcdGet16 (PcdMaximalValidYear)); + Time.Year =3D MAX (mRtcDefaultYear, mMinimalValidYear); + Time.Year =3D MIN (Time.Year, mMaximalValidYear); Time.Nanosecond =3D 0; Time.TimeZone =3D Global->SavedTimeZone; Time.Daylight =3D Global->Daylight; @@ -1031,8 +1033,8 @@ ConvertRtcTimeToEfiTime ( // Century is 19 if RTC year >=3D 70, // Century is 20 otherwise. // - Century =3D (UINT8)(PcdGet16 (PcdMinimalValidYear) / 100); - if (Time->Year < PcdGet16 (PcdMinimalValidYear) % 100) { + Century =3D (UINT8)(mMinimalValidYear / 100); + if (Time->Year < mMinimalValidYear % 100) { Century++; } =20 @@ -1114,8 +1116,8 @@ RtcTimeFieldsValid ( IN EFI_TIME *Time ) { - if ((Time->Year < PcdGet16 (PcdMinimalValidYear)) || - (Time->Year > PcdGet16 (PcdMaximalValidYear)) || + if ((Time->Year < mMinimalValidYear) || + (Time->Year > mMaximalValidYear) || (Time->Month < 1) || (Time->Month > 12) || (!DayValid (Time)) || diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c b/PcAt= ChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c index e6e9458d75..b600df4879 100644 --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c @@ -16,8 +16,11 @@ EFI_HANDLE mHandle =3D NULL; =20 STATIC EFI_EVENT mVirtualAddrChangeEvent; =20 -UINTN mRtcIndexRegister; -UINTN mRtcTargetRegister; +UINTN mRtcIndexRegister; +UINTN mRtcTargetRegister; +UINT16 mRtcDefaultYear; +UINT16 mMinimalValidYear; +UINT16 mMaximalValidYear; =20 /** Returns the current time and date information, and the time-keeping capa= bilities @@ -164,8 +167,15 @@ InitializePcRtc ( if (FeaturePcdGet (PcdRtcUseMmio)) { mRtcIndexRegister =3D (UINTN)PcdGet64 (PcdRtcIndexRegister64); mRtcTargetRegister =3D (UINTN)PcdGet64 (PcdRtcTargetRegister64); + } else { + mRtcIndexRegister =3D (UINTN)PcdGet8 (PcdRtcIndexRegister); + mRtcTargetRegister =3D (UINTN)PcdGet8 (PcdRtcTargetRegister); } =20 + mRtcDefaultYear =3D PcdGet16 (PcdRtcDefaultYear); + mMinimalValidYear =3D PcdGet16 (PcdMinimalValidYear); + mMaximalValidYear =3D PcdGet16 (PcdMaximalValidYear); + Status =3D PcRtcInit (&mModuleGlobal); ASSERT_EFI_ERROR (Status); =20 --=20 2.39.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#105221): https://edk2.groups.io/g/devel/message/105221 Mute This Topic: https://groups.io/mt/99104649/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-