diff mbox series

[1/7] hw/phys-map: Add pvr argument to phys_map_init()

Message ID 1560373737-21649-2-git-send-email-arbab@linux.ibm.com
State Superseded
Headers show
Series Support the updated NPU in POWER9P; npu3 | expand

Checks

Context Check Description
snowpatch_ozlabs/apply_patch success Successfully applied on branch master (db3929ee4f0a98596938f05da2789686908ebfd4)
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot fail Test snowpatch/job/snowpatch-skiboot on branch master
snowpatch_ozlabs/snowpatch_job_snowpatch-skiboot-dco success Signed-off-by present

Commit Message

Reza Arbab June 12, 2019, 9:08 p.m. UTC
When new chip types are added, phys_map_init() will need to know which
memory map it should use.

Instead of directly checking PVR, make it an argument to the function,
so that 'make hw-check' can test all the maps.

Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
---
 core/init.c              |  2 +-
 hdata/test/hdata_to_dt.c |  2 +-
 hw/phys-map.c            |  2 +-
 hw/test/phys-map-test.c  | 16 ++++++++++++----
 include/phys-map.h       |  2 +-
 5 files changed, 16 insertions(+), 8 deletions(-)

Comments

Michael Neuling June 13, 2019, 12:52 a.m. UTC | #1
On Wed, 2019-06-12 at 16:08 -0500, Reza Arbab wrote:
> When new chip types are added, phys_map_init() will need to know which
> memory map it should use.
> 
> Instead of directly checking PVR, make it an argument to the function,
> so that 'make hw-check' can test all the maps.

Nice!

> Signed-off-by: Reza Arbab <arbab@linux.ibm.com>

Acked-by: Michael Neuling <mikey@neuling.org>

> ---
>  core/init.c              |  2 +-
>  hdata/test/hdata_to_dt.c |  2 +-
>  hw/phys-map.c            |  2 +-
>  hw/test/phys-map-test.c  | 16 ++++++++++++----
>  include/phys-map.h       |  2 +-
>  5 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/core/init.c b/core/init.c
> index 3db9df314292..7e8ba7854dcc 100644
> --- a/core/init.c
> +++ b/core/init.c
> @@ -1002,7 +1002,7 @@ void __noreturn __nomcount main_cpu_entry(const void
> *fdt)
>  	opal_table_init();
>  
>  	/* Init the physical map table so we can start mapping things */
> -	phys_map_init();
> +	phys_map_init(mfspr(SPR_PVR));
>  
>  	/*
>  	 * If we are coming in with a flat device-tree, we expand it
> diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c
> index 86921778746f..39912a4cbb5a 100644
> --- a/hdata/test/hdata_to_dt.c
> +++ b/hdata/test/hdata_to_dt.c
> @@ -353,7 +353,7 @@ int main(int argc, char *argv[])
>  		     "Pipe to 'dtc -I dtb -O dts' for human readable output\n");
>  	}
>  
> -	phys_map_init();
> +	phys_map_init(fake_pvr);
>  
>  	/* Copy in spira dump (assumes little has changed!). */
>  	if (new_spira) {
> diff --git a/hw/phys-map.c b/hw/phys-map.c
> index 75836297c2f9..a55d8dbfda99 100644
> --- a/hw/phys-map.c
> +++ b/hw/phys-map.c
> @@ -200,7 +200,7 @@ error:
>  	assert(0);
>  }
>  
> -void phys_map_init(void)
> +void phys_map_init(unsigned long pvr)
>  {
>  	const char *name = "unused";
>  
> diff --git a/hw/test/phys-map-test.c b/hw/test/phys-map-test.c
> index ab75a1e6e0be..9837bf9c7a8c 100644
> --- a/hw/test/phys-map-test.c
> +++ b/hw/test/phys-map-test.c
> @@ -172,15 +172,23 @@ static void check_map_call(void)
>  	free(tbl);
>  }
>  
> +/* Fake PVR definitions. See include/processor.h */
> +unsigned long fake_pvr[] = {
> +	0x004e0200,	/* PVR_P9 */
> +};
> +
>  int main(void)
>  {
>  	/* Fake we are POWER9 */
>  	proc_gen = proc_gen_p9;
> -	phys_map_init();
>  
> -	/* Run tests */
> -	check_table_directly();
> -	check_map_call();
> +	for (int i = 0; i < ARRAY_SIZE(fake_pvr); i++) {
> +		phys_map_init(fake_pvr[i]);
> +
> +		/* Run tests */
> +		check_table_directly();
> +		check_map_call();
> +	}
>  
>  	return(0);
>  }
> diff --git a/include/phys-map.h b/include/phys-map.h
> index 0cf48b6628af..ba6597d57cde 100644
> --- a/include/phys-map.h
> +++ b/include/phys-map.h
> @@ -59,7 +59,7 @@ enum phys_map_type {
>  extern void phys_map_get(uint64_t gcid, enum phys_map_type type,
>  			 int index, uint64_t *addr, uint64_t *size);
>  
> -extern void phys_map_init(void);
> +extern void phys_map_init(unsigned long pvr);
>  
>  #endif /* __PHYS_MAP_H */
>
Andrew Donnellan June 13, 2019, 4:40 a.m. UTC | #2
On 13/6/19 7:08 am, Reza Arbab wrote:
> When new chip types are added, phys_map_init() will need to know which
> memory map it should use.
> 
> Instead of directly checking PVR, make it an argument to the function,
> so that 'make hw-check' can test all the maps.
> 
> Signed-off-by: Reza Arbab <arbab@linux.ibm.com>

Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com>


> ---
>   core/init.c              |  2 +-
>   hdata/test/hdata_to_dt.c |  2 +-
>   hw/phys-map.c            |  2 +-
>   hw/test/phys-map-test.c  | 16 ++++++++++++----
>   include/phys-map.h       |  2 +-
>   5 files changed, 16 insertions(+), 8 deletions(-)
> 
> diff --git a/core/init.c b/core/init.c
> index 3db9df314292..7e8ba7854dcc 100644
> --- a/core/init.c
> +++ b/core/init.c
> @@ -1002,7 +1002,7 @@ void __noreturn __nomcount main_cpu_entry(const void *fdt)
>   	opal_table_init();
>   
>   	/* Init the physical map table so we can start mapping things */
> -	phys_map_init();
> +	phys_map_init(mfspr(SPR_PVR));
>   
>   	/*
>   	 * If we are coming in with a flat device-tree, we expand it
> diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c
> index 86921778746f..39912a4cbb5a 100644
> --- a/hdata/test/hdata_to_dt.c
> +++ b/hdata/test/hdata_to_dt.c
> @@ -353,7 +353,7 @@ int main(int argc, char *argv[])
>   		     "Pipe to 'dtc -I dtb -O dts' for human readable output\n");
>   	}
>   
> -	phys_map_init();
> +	phys_map_init(fake_pvr);
>   
>   	/* Copy in spira dump (assumes little has changed!). */
>   	if (new_spira) {
> diff --git a/hw/phys-map.c b/hw/phys-map.c
> index 75836297c2f9..a55d8dbfda99 100644
> --- a/hw/phys-map.c
> +++ b/hw/phys-map.c
> @@ -200,7 +200,7 @@ error:
>   	assert(0);
>   }
>   
> -void phys_map_init(void)
> +void phys_map_init(unsigned long pvr)
>   {
>   	const char *name = "unused";
>   
> diff --git a/hw/test/phys-map-test.c b/hw/test/phys-map-test.c
> index ab75a1e6e0be..9837bf9c7a8c 100644
> --- a/hw/test/phys-map-test.c
> +++ b/hw/test/phys-map-test.c
> @@ -172,15 +172,23 @@ static void check_map_call(void)
>   	free(tbl);
>   }
>   
> +/* Fake PVR definitions. See include/processor.h */
> +unsigned long fake_pvr[] = {
> +	0x004e0200,	/* PVR_P9 */
> +};
> +
>   int main(void)
>   {
>   	/* Fake we are POWER9 */
>   	proc_gen = proc_gen_p9;
> -	phys_map_init();
>   
> -	/* Run tests */
> -	check_table_directly();
> -	check_map_call();
> +	for (int i = 0; i < ARRAY_SIZE(fake_pvr); i++) {
> +		phys_map_init(fake_pvr[i]);
> +
> +		/* Run tests */
> +		check_table_directly();
> +		check_map_call();
> +	}
>   
>   	return(0);
>   }
> diff --git a/include/phys-map.h b/include/phys-map.h
> index 0cf48b6628af..ba6597d57cde 100644
> --- a/include/phys-map.h
> +++ b/include/phys-map.h
> @@ -59,7 +59,7 @@ enum phys_map_type {
>   extern void phys_map_get(uint64_t gcid, enum phys_map_type type,
>   			 int index, uint64_t *addr, uint64_t *size);
>   
> -extern void phys_map_init(void);
> +extern void phys_map_init(unsigned long pvr);
>   
>   #endif /* __PHYS_MAP_H */
>   
>
diff mbox series

Patch

diff --git a/core/init.c b/core/init.c
index 3db9df314292..7e8ba7854dcc 100644
--- a/core/init.c
+++ b/core/init.c
@@ -1002,7 +1002,7 @@  void __noreturn __nomcount main_cpu_entry(const void *fdt)
 	opal_table_init();
 
 	/* Init the physical map table so we can start mapping things */
-	phys_map_init();
+	phys_map_init(mfspr(SPR_PVR));
 
 	/*
 	 * If we are coming in with a flat device-tree, we expand it
diff --git a/hdata/test/hdata_to_dt.c b/hdata/test/hdata_to_dt.c
index 86921778746f..39912a4cbb5a 100644
--- a/hdata/test/hdata_to_dt.c
+++ b/hdata/test/hdata_to_dt.c
@@ -353,7 +353,7 @@  int main(int argc, char *argv[])
 		     "Pipe to 'dtc -I dtb -O dts' for human readable output\n");
 	}
 
-	phys_map_init();
+	phys_map_init(fake_pvr);
 
 	/* Copy in spira dump (assumes little has changed!). */
 	if (new_spira) {
diff --git a/hw/phys-map.c b/hw/phys-map.c
index 75836297c2f9..a55d8dbfda99 100644
--- a/hw/phys-map.c
+++ b/hw/phys-map.c
@@ -200,7 +200,7 @@  error:
 	assert(0);
 }
 
-void phys_map_init(void)
+void phys_map_init(unsigned long pvr)
 {
 	const char *name = "unused";
 
diff --git a/hw/test/phys-map-test.c b/hw/test/phys-map-test.c
index ab75a1e6e0be..9837bf9c7a8c 100644
--- a/hw/test/phys-map-test.c
+++ b/hw/test/phys-map-test.c
@@ -172,15 +172,23 @@  static void check_map_call(void)
 	free(tbl);
 }
 
+/* Fake PVR definitions. See include/processor.h */
+unsigned long fake_pvr[] = {
+	0x004e0200,	/* PVR_P9 */
+};
+
 int main(void)
 {
 	/* Fake we are POWER9 */
 	proc_gen = proc_gen_p9;
-	phys_map_init();
 
-	/* Run tests */
-	check_table_directly();
-	check_map_call();
+	for (int i = 0; i < ARRAY_SIZE(fake_pvr); i++) {
+		phys_map_init(fake_pvr[i]);
+
+		/* Run tests */
+		check_table_directly();
+		check_map_call();
+	}
 
 	return(0);
 }
diff --git a/include/phys-map.h b/include/phys-map.h
index 0cf48b6628af..ba6597d57cde 100644
--- a/include/phys-map.h
+++ b/include/phys-map.h
@@ -59,7 +59,7 @@  enum phys_map_type {
 extern void phys_map_get(uint64_t gcid, enum phys_map_type type,
 			 int index, uint64_t *addr, uint64_t *size);
 
-extern void phys_map_init(void);
+extern void phys_map_init(unsigned long pvr);
 
 #endif /* __PHYS_MAP_H */