public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode
@ 2023-05-11  7:51 Minh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving " Minh Nguyen
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Minh Nguyen @ 2023-05-11  7:51 UTC (permalink / raw)
  To: devel; +Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen,
	Minh Nguyen

These patches help to improve PCIe core for Link training sequence and
add logic to check PCIe card is present or not. One patch also removes
unnecessary checks for PCIe Devmap mode.

Minh Nguyen (2):
  AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap
    mode
  AmpereAltraPkg: Fix PCIe link training sequence

Tinh Nguyen (1):
  AmpereAltraPkg: Add retry logic when PCIe card is present

 Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c |  2 +-
 Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c           | 12 ++++++++----
 2 files changed, 9 insertions(+), 5 deletions(-)

-- 
2.39.0


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap mode
  2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
@ 2023-05-11  7:51 ` Minh Nguyen
  2023-05-22  8:01   ` Tinh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence Minh Nguyen
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Minh Nguyen @ 2023-05-11  7:51 UTC (permalink / raw)
  To: devel; +Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen,
	Minh Nguyen

Because PCIe Auto bifurcation feature doesn't depend on the default
Devmap mode so that "DevMapModeAuto" is unnecessary in retrieving
the PCIe Devmap default mode.

Signed-off-by: Minh Nguyen <minhnguyen1@os.amperecomputing.com>
---
 Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
index a8e23015b605..199929bfdb24 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
+++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
@@ -160,7 +160,7 @@ GetDefaultDevMap (
   UINT8        StartIndex;
   DEV_MAP_MODE DevMapMode;
 
-  DevMapMode = MaxDevMapMode;
+  DevMapMode = DevMapMode4;
   StartIndex = IsGetDevMapLow ? PcieController0 : PcieController4;
 
   while (DevMapMode >= DevMapMode1)
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence
  2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving " Minh Nguyen
@ 2023-05-11  7:51 ` Minh Nguyen
  2023-05-22  8:03   ` Tinh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 3/3] AmpereAltraPkg: Add retry logic when PCIe card is present Minh Nguyen
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: Minh Nguyen @ 2023-05-11  7:51 UTC (permalink / raw)
  To: devel; +Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen,
	Minh Nguyen

Currently, the implementation starts link training and put device
out-of-reset right away. This make LinkStat and BlockEventStat registers
indicate that link is not up yet (LinkStat: 0x300 and BlockEventStat: 0x0).
This fix will start link training after putting device out-of-reset.
The values of LinkStat and BlockEventStat registers after this fix are
respectively 0x1103 and 0x1 (Link is up).

Signed-off-by: Minh Nguyen <minhnguyen1@os.amperecomputing.com>
---
 Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
index f7c8defc1906..d797442d9fbc 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
+++ b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
@@ -1177,12 +1177,12 @@ Ac01PcieCoreSetupRC (
     // Assert PERST low to reset endpoint
     BoardPcieAssertPerst (RootComplex, PcieIndex, FALSE);
 
+    // Complete the PERST pulse
+    BoardPcieAssertPerst (RootComplex, PcieIndex, TRUE);
+
     // Start link training
     StartLinkTraining (RootComplex, PcieIndex, TRUE);
 
-    // Complete the PERST pulse
-    BoardPcieAssertPerst (RootComplex, PcieIndex, TRUE);
-
     // Lock programming of config space
     EnableDbiAccess  (RootComplex, PcieIndex, FALSE);
 
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [edk2-platforms][PATCH 3/3] AmpereAltraPkg: Add retry logic when PCIe card is present
  2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving " Minh Nguyen
  2023-05-11  7:51 ` [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence Minh Nguyen
@ 2023-05-11  7:51 ` Minh Nguyen
  2023-05-12  2:51 ` [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Nhi Pham
  2023-05-24  0:45 ` Minh Nguyen
  4 siblings, 0 replies; 9+ messages in thread
From: Minh Nguyen @ 2023-05-11  7:51 UTC (permalink / raw)
  To: devel; +Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen,
	Minh Nguyen

From: Tinh Nguyen <tinhnguyen@os.amperecomputing.com>

Add PCIe link retry logic. If the card is detected to be present,
allow a retry for 3 times.

When the link is down, check if the LTSSMEN bit is cleared.
Based on Altra PCIe IP, the LTSSMEN bit is cleared from 1 to 0
if there is a surprising link down.
This indicates that a card is present.

Signed-off-by: Minh Nguyen <minhnguyen1@os.amperecomputing.com>
---
 Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
index d797442d9fbc..9cc059788581 100644
--- a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
+++ b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
@@ -1769,7 +1769,11 @@ Ac01PcieCoreUpdateLink (
       } else {
         FailedPciePtr[*FailedPcieCount] = PcieIndex;
         *FailedPcieCount += 1;
-        *IsNextRoundNeeded = !(*IsNextRoundNeeded) ? Ac01PcieCoreCheckCardPresent (Pcie) : TRUE;
+
+        if (Ac01PcieCoreCheckCardPresent (Pcie)) {
+          *IsNextRoundNeeded = TRUE;
+          DEBUG ((DEBUG_INFO, "PCIE%d.%d Link retry\n", RootComplex->ID, PcieIndex));
+        }
       }
     }
   }
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode
  2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
                   ` (2 preceding siblings ...)
  2023-05-11  7:51 ` [edk2-platforms][PATCH 3/3] AmpereAltraPkg: Add retry logic when PCIe card is present Minh Nguyen
@ 2023-05-12  2:51 ` Nhi Pham
  2023-05-24  0:45 ` Minh Nguyen
  4 siblings, 0 replies; 9+ messages in thread
From: Nhi Pham @ 2023-05-12  2:51 UTC (permalink / raw)
  To: Minh Nguyen, quic_llindhol, ardb+tianocore
  Cc: devel, patches, nhi, tinhnguyen

Hi Minh,

Thanks for this patchset. It looks good to me.

Reviewed-by: Nhi Pham <nhi@os.amperecomputing.com>

Hi Leif, Ard - Could you please help merge this series?

Thanks,

Nhi

On 5/11/2023 2:51 PM, Minh Nguyen wrote:
> These patches help to improve PCIe core for Link training sequence and
> add logic to check PCIe card is present or not. One patch also removes
> unnecessary checks for PCIe Devmap mode.
>
> Minh Nguyen (2):
>    AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap
>      mode
>    AmpereAltraPkg: Fix PCIe link training sequence
>
> Tinh Nguyen (1):
>    AmpereAltraPkg: Add retry logic when PCIe card is present
>
>   Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c |  2 +-
>   Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c           | 12 ++++++++----
>   2 files changed, 9 insertions(+), 5 deletions(-)
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap mode
  2023-05-11  7:51 ` [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving " Minh Nguyen
@ 2023-05-22  8:01   ` Tinh Nguyen
  0 siblings, 0 replies; 9+ messages in thread
From: Tinh Nguyen @ 2023-05-22  8:01 UTC (permalink / raw)
  To: Minh Nguyen, devel
  Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen

Reviewed-by: Tinh Nguyen <tinhnguyen@os.amperecomputing.com>

On 11/05/2023 14:51, Minh Nguyen wrote:
> Because PCIe Auto bifurcation feature doesn't depend on the default
> Devmap mode so that "DevMapModeAuto" is unnecessary in retrieving
> the PCIe Devmap default mode.
>
> Signed-off-by: Minh Nguyen <minhnguyen1@os.amperecomputing.com>
> ---
>   Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
> index a8e23015b605..199929bfdb24 100644
> --- a/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
> +++ b/Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c
> @@ -160,7 +160,7 @@ GetDefaultDevMap (
>     UINT8        StartIndex;
>     DEV_MAP_MODE DevMapMode;
>   
> -  DevMapMode = MaxDevMapMode;
> +  DevMapMode = DevMapMode4;
>     StartIndex = IsGetDevMapLow ? PcieController0 : PcieController4;
>   
>     while (DevMapMode >= DevMapMode1)

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence
  2023-05-11  7:51 ` [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence Minh Nguyen
@ 2023-05-22  8:03   ` Tinh Nguyen
  0 siblings, 0 replies; 9+ messages in thread
From: Tinh Nguyen @ 2023-05-22  8:03 UTC (permalink / raw)
  To: Minh Nguyen, devel
  Cc: patches, quic_llindhol, ardb+tianocore, nhi, tinhnguyen

Reviewed-by: Tinh Nguyen <tinhnguyen@os.amperecomputing.com>


@Leif, @Ard, Please help us to merge this series

Thanks,

- Tinh

On 11/05/2023 14:51, Minh Nguyen wrote:
> Currently, the implementation starts link training and put device
> out-of-reset right away. This make LinkStat and BlockEventStat registers
> indicate that link is not up yet (LinkStat: 0x300 and BlockEventStat: 0x0).
> This fix will start link training after putting device out-of-reset.
> The values of LinkStat and BlockEventStat registers after this fix are
> respectively 0x1103 and 0x1 (Link is up).
>
> Signed-off-by: Minh Nguyen <minhnguyen1@os.amperecomputing.com>
> ---
>   Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
> index f7c8defc1906..d797442d9fbc 100644
> --- a/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
> +++ b/Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c
> @@ -1177,12 +1177,12 @@ Ac01PcieCoreSetupRC (
>       // Assert PERST low to reset endpoint
>       BoardPcieAssertPerst (RootComplex, PcieIndex, FALSE);
>   
> +    // Complete the PERST pulse
> +    BoardPcieAssertPerst (RootComplex, PcieIndex, TRUE);
> +
>       // Start link training
>       StartLinkTraining (RootComplex, PcieIndex, TRUE);
>   
> -    // Complete the PERST pulse
> -    BoardPcieAssertPerst (RootComplex, PcieIndex, TRUE);
> -
>       // Lock programming of config space
>       EnableDbiAccess  (RootComplex, PcieIndex, FALSE);
>   

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode
  2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
                   ` (3 preceding siblings ...)
  2023-05-12  2:51 ` [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Nhi Pham
@ 2023-05-24  0:45 ` Minh Nguyen
  2023-06-02 12:34   ` Ard Biesheuvel
  4 siblings, 1 reply; 9+ messages in thread
From: Minh Nguyen @ 2023-05-24  0:45 UTC (permalink / raw)
  To: quic_llindhol, ardb+tianocore; +Cc: patches, devel@edk2.groups.io

Hi Leif and Ard

  Could you please help merge this series?

Thanks,

Minh Nguyen

On 5/11/2023 2:51 PM, Minh Nguyen wrote:
> These patches help to improve PCIe core for Link training sequence and
> add logic to check PCIe card is present or not. One patch also removes
> unnecessary checks for PCIe Devmap mode.
>
> Minh Nguyen (2):
>    AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap
>      mode
>    AmpereAltraPkg: Fix PCIe link training sequence
>
> Tinh Nguyen (1):
>    AmpereAltraPkg: Add retry logic when PCIe card is present
>
>   Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c |  2 +-
>   Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c           | 12 ++++++++----
>   2 files changed, 9 insertions(+), 5 deletions(-)
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode
  2023-05-24  0:45 ` Minh Nguyen
@ 2023-06-02 12:34   ` Ard Biesheuvel
  0 siblings, 0 replies; 9+ messages in thread
From: Ard Biesheuvel @ 2023-06-02 12:34 UTC (permalink / raw)
  To: Minh Nguyen; +Cc: quic_llindhol, ardb+tianocore, patches, devel@edk2.groups.io

On Wed, 24 May 2023 at 02:45, Minh Nguyen
<minhnguyen1@amperemail.onmicrosoft.com> wrote:
>
> Hi Leif and Ard
>
>   Could you please help merge this series?
>

Pushed as 4303f7782c08..a869bae89a6d

Thanks,

>
> On 5/11/2023 2:51 PM, Minh Nguyen wrote:
> > These patches help to improve PCIe core for Link training sequence and
> > add logic to check PCIe card is present or not. One patch also removes
> > unnecessary checks for PCIe Devmap mode.
> >
> > Minh Nguyen (2):
> >    AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving Devmap
> >      mode
> >    AmpereAltraPkg: Fix PCIe link training sequence
> >
> > Tinh Nguyen (1):
> >    AmpereAltraPkg: Add retry logic when PCIe card is present
> >
> >   Silicon/Ampere/AmpereAltraPkg/Drivers/PcieInitPei/RootComplexNVParam.c |  2 +-
> >   Silicon/Ampere/AmpereAltraPkg/Library/Ac01PcieLib/PcieCore.c           | 12 ++++++++----
> >   2 files changed, 9 insertions(+), 5 deletions(-)
> >

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2023-06-02 12:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-11  7:51 [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Minh Nguyen
2023-05-11  7:51 ` [edk2-platforms][PATCH 1/3] AmpereAltraPkg: Remove PCIe "DevMapModeAuto" case in retrieving " Minh Nguyen
2023-05-22  8:01   ` Tinh Nguyen
2023-05-11  7:51 ` [edk2-platforms][PATCH 2/3] AmpereAltraPkg: Fix PCIe link training sequence Minh Nguyen
2023-05-22  8:03   ` Tinh Nguyen
2023-05-11  7:51 ` [edk2-platforms][PATCH 3/3] AmpereAltraPkg: Add retry logic when PCIe card is present Minh Nguyen
2023-05-12  2:51 ` [edk2-platforms][PATCH 0/3] Add necessary changes for PCIe core and remove unnecessary checks for PCIe Devmap mode Nhi Pham
2023-05-24  0:45 ` Minh Nguyen
2023-06-02 12:34   ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox