[Qemu-devel] [PATCH] ppc/pnv: add dummy XSCOM registers for PRD initialization

Cédric Le Goater posted 1 patch 4 years, 11 months ago
Test FreeBSD passed
Test docker-clang@ubuntu passed
Test s390x passed
Test asan passed
Test checkpatch passed
Test docker-mingw@fedora passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190527071722.31424-1-clg@kaod.org
Maintainers: "Cédric Le Goater" <clg@kaod.org>, David Gibson <david@gibson.dropbear.id.au>
hw/ppc/pnv_xscom.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
[Qemu-devel] [PATCH] ppc/pnv: add dummy XSCOM registers for PRD initialization
Posted by Cédric Le Goater 4 years, 11 months ago
PRD (Processor recovery diagnostics) is a service available on
OpenPower systems. The opal-prd daemon initializes the PowerPC
Processor through the XSCOM bus and then waits for hardware diagnostic
events.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
---
 hw/ppc/pnv_xscom.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index c285ef514e88..f53a6d7a9457 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -29,6 +29,12 @@
 
 #include <libfdt.h>
 
+/* PRD registers */
+#define PRD_P8_IPOLL_REG_MASK           0x01020013
+#define PRD_P8_IPOLL_REG_STATUS         0x01020014
+#define PRD_P9_IPOLL_REG_MASK           0x000F0033
+#define PRD_P9_IPOLL_REG_STATUS         0x000F0034
+
 static void xscom_complete(CPUState *cs, uint64_t hmer_bits)
 {
     /*
@@ -70,6 +76,12 @@ static uint64_t xscom_read_default(PnvChip *chip, uint32_t pcba)
     case 0x1010c00:     /* PIBAM FIR */
     case 0x1010c03:     /* PIBAM FIR MASK */
 
+        /* PRD registers */
+    case PRD_P8_IPOLL_REG_MASK:
+    case PRD_P8_IPOLL_REG_STATUS:
+    case PRD_P9_IPOLL_REG_MASK:
+    case PRD_P9_IPOLL_REG_STATUS:
+
         /* P9 xscom reset */
     case 0x0090018:     /* Receive status reg */
     case 0x0090012:     /* log register */
@@ -124,6 +136,12 @@ static bool xscom_write_default(PnvChip *chip, uint32_t pcba, uint64_t val)
     case 0x201302a:     /* CAPP stuff */
     case 0x2013801:     /* CAPP stuff */
     case 0x2013802:     /* CAPP stuff */
+
+        /* P8 PRD registers */
+    case PRD_P8_IPOLL_REG_MASK:
+    case PRD_P8_IPOLL_REG_STATUS:
+    case PRD_P9_IPOLL_REG_MASK:
+    case PRD_P9_IPOLL_REG_STATUS:
         return true;
     default:
         return false;
-- 
2.21.0


Re: [Qemu-devel] [PATCH] ppc/pnv: add dummy XSCOM registers for PRD initialization
Posted by David Gibson 4 years, 11 months ago
On Mon, May 27, 2019 at 09:17:22AM +0200, Cédric Le Goater wrote:
> PRD (Processor recovery diagnostics) is a service available on
> OpenPower systems. The opal-prd daemon initializes the PowerPC
> Processor through the XSCOM bus and then waits for hardware diagnostic
> events.
> 
> Signed-off-by: Cédric Le Goater <clg@kaod.org>

Applied, thanks.

> ---
>  hw/ppc/pnv_xscom.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
> 
> diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
> index c285ef514e88..f53a6d7a9457 100644
> --- a/hw/ppc/pnv_xscom.c
> +++ b/hw/ppc/pnv_xscom.c
> @@ -29,6 +29,12 @@
>  
>  #include <libfdt.h>
>  
> +/* PRD registers */
> +#define PRD_P8_IPOLL_REG_MASK           0x01020013
> +#define PRD_P8_IPOLL_REG_STATUS         0x01020014
> +#define PRD_P9_IPOLL_REG_MASK           0x000F0033
> +#define PRD_P9_IPOLL_REG_STATUS         0x000F0034
> +
>  static void xscom_complete(CPUState *cs, uint64_t hmer_bits)
>  {
>      /*
> @@ -70,6 +76,12 @@ static uint64_t xscom_read_default(PnvChip *chip, uint32_t pcba)
>      case 0x1010c00:     /* PIBAM FIR */
>      case 0x1010c03:     /* PIBAM FIR MASK */
>  
> +        /* PRD registers */
> +    case PRD_P8_IPOLL_REG_MASK:
> +    case PRD_P8_IPOLL_REG_STATUS:
> +    case PRD_P9_IPOLL_REG_MASK:
> +    case PRD_P9_IPOLL_REG_STATUS:
> +
>          /* P9 xscom reset */
>      case 0x0090018:     /* Receive status reg */
>      case 0x0090012:     /* log register */
> @@ -124,6 +136,12 @@ static bool xscom_write_default(PnvChip *chip, uint32_t pcba, uint64_t val)
>      case 0x201302a:     /* CAPP stuff */
>      case 0x2013801:     /* CAPP stuff */
>      case 0x2013802:     /* CAPP stuff */
> +
> +        /* P8 PRD registers */
> +    case PRD_P8_IPOLL_REG_MASK:
> +    case PRD_P8_IPOLL_REG_STATUS:
> +    case PRD_P9_IPOLL_REG_MASK:
> +    case PRD_P9_IPOLL_REG_STATUS:
>          return true;
>      default:
>          return false;

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson