diff mbox series

[qemu] ppc/spapr/ddw: Add 2M pagesize

Message ID 20220321071945.918669-1-aik@ozlabs.ru
State New
Headers show
Series [qemu] ppc/spapr/ddw: Add 2M pagesize | expand

Commit Message

Alexey Kardashevskiy March 21, 2022, 7:19 a.m. UTC
Recently the LoPAPR spec got a new 2MB pagesize to support in Dynamic DMA
Windows API (DDW), this adds the new flag.

Linux supports it since
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=38727311871

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
---
PHYP added support for it in development builds as well.
---
 include/hw/ppc/spapr.h  | 1 +
 hw/ppc/spapr_rtas_ddw.c | 1 +
 2 files changed, 2 insertions(+)

Comments

Alexey Kardashevskiy April 7, 2022, 3:08 a.m. UTC | #1
On 21/03/2022 18:19, Alexey Kardashevskiy wrote:
> Recently the LoPAPR spec got a new 2MB pagesize to support in Dynamic DMA
> Windows API (DDW), this adds the new flag.
> 
> Linux supports it since
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=38727311871
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>

ping?

> ---
> PHYP added support for it in development builds as well.
> ---
>   include/hw/ppc/spapr.h  | 1 +
>   hw/ppc/spapr_rtas_ddw.c | 1 +
>   2 files changed, 2 insertions(+)
> 
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index f5c33dcc8616..14b01c3f5963 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -745,6 +745,7 @@ void push_sregs_to_kvm_pr(SpaprMachineState *spapr);
>   #define RTAS_DDW_PGSIZE_128M     0x20
>   #define RTAS_DDW_PGSIZE_256M     0x40
>   #define RTAS_DDW_PGSIZE_16G      0x80
> +#define RTAS_DDW_PGSIZE_2M       0x100
>   
>   /* RTAS tokens */
>   #define RTAS_TOKEN_BASE      0x2000
> diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c
> index 3e826e1308c4..13d339c807c1 100644
> --- a/hw/ppc/spapr_rtas_ddw.c
> +++ b/hw/ppc/spapr_rtas_ddw.c
> @@ -72,6 +72,7 @@ static uint32_t spapr_page_mask_to_query_mask(uint64_t page_mask)
>       const struct { int shift; uint32_t mask; } masks[] = {
>           { 12, RTAS_DDW_PGSIZE_4K },
>           { 16, RTAS_DDW_PGSIZE_64K },
> +        { 21, RTAS_DDW_PGSIZE_2M },
>           { 24, RTAS_DDW_PGSIZE_16M },
>           { 25, RTAS_DDW_PGSIZE_32M },
>           { 26, RTAS_DDW_PGSIZE_64M },
Daniel Henrique Barboza April 7, 2022, 7:59 p.m. UTC | #2
On 3/21/22 04:19, Alexey Kardashevskiy wrote:
> Recently the LoPAPR spec got a new 2MB pagesize to support in Dynamic DMA
> Windows API (DDW), this adds the new flag.
> 
> Linux supports it since
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=38727311871
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> PHYP added support for it in development builds as well.
> ---


Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>

>   include/hw/ppc/spapr.h  | 1 +
>   hw/ppc/spapr_rtas_ddw.c | 1 +
>   2 files changed, 2 insertions(+)
> 
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index f5c33dcc8616..14b01c3f5963 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -745,6 +745,7 @@ void push_sregs_to_kvm_pr(SpaprMachineState *spapr);
>   #define RTAS_DDW_PGSIZE_128M     0x20
>   #define RTAS_DDW_PGSIZE_256M     0x40
>   #define RTAS_DDW_PGSIZE_16G      0x80
> +#define RTAS_DDW_PGSIZE_2M       0x100
>   
>   /* RTAS tokens */
>   #define RTAS_TOKEN_BASE      0x2000
> diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c
> index 3e826e1308c4..13d339c807c1 100644
> --- a/hw/ppc/spapr_rtas_ddw.c
> +++ b/hw/ppc/spapr_rtas_ddw.c
> @@ -72,6 +72,7 @@ static uint32_t spapr_page_mask_to_query_mask(uint64_t page_mask)
>       const struct { int shift; uint32_t mask; } masks[] = {
>           { 12, RTAS_DDW_PGSIZE_4K },
>           { 16, RTAS_DDW_PGSIZE_64K },
> +        { 21, RTAS_DDW_PGSIZE_2M },
>           { 24, RTAS_DDW_PGSIZE_16M },
>           { 25, RTAS_DDW_PGSIZE_32M },
>           { 26, RTAS_DDW_PGSIZE_64M },
Daniel Henrique Barboza April 20, 2022, 7:10 p.m. UTC | #3
Queued in gitlab.com/danielhb/qemu/tree/ppc-next. Thanks,


Daniel


On 3/21/22 04:19, Alexey Kardashevskiy wrote:
> Recently the LoPAPR spec got a new 2MB pagesize to support in Dynamic DMA
> Windows API (DDW), this adds the new flag.
> 
> Linux supports it since
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=38727311871
> 
> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
> ---
> PHYP added support for it in development builds as well.
> ---
>   include/hw/ppc/spapr.h  | 1 +
>   hw/ppc/spapr_rtas_ddw.c | 1 +
>   2 files changed, 2 insertions(+)
> 
> diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
> index f5c33dcc8616..14b01c3f5963 100644
> --- a/include/hw/ppc/spapr.h
> +++ b/include/hw/ppc/spapr.h
> @@ -745,6 +745,7 @@ void push_sregs_to_kvm_pr(SpaprMachineState *spapr);
>   #define RTAS_DDW_PGSIZE_128M     0x20
>   #define RTAS_DDW_PGSIZE_256M     0x40
>   #define RTAS_DDW_PGSIZE_16G      0x80
> +#define RTAS_DDW_PGSIZE_2M       0x100
>   
>   /* RTAS tokens */
>   #define RTAS_TOKEN_BASE      0x2000
> diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c
> index 3e826e1308c4..13d339c807c1 100644
> --- a/hw/ppc/spapr_rtas_ddw.c
> +++ b/hw/ppc/spapr_rtas_ddw.c
> @@ -72,6 +72,7 @@ static uint32_t spapr_page_mask_to_query_mask(uint64_t page_mask)
>       const struct { int shift; uint32_t mask; } masks[] = {
>           { 12, RTAS_DDW_PGSIZE_4K },
>           { 16, RTAS_DDW_PGSIZE_64K },
> +        { 21, RTAS_DDW_PGSIZE_2M },
>           { 24, RTAS_DDW_PGSIZE_16M },
>           { 25, RTAS_DDW_PGSIZE_32M },
>           { 26, RTAS_DDW_PGSIZE_64M },
diff mbox series

Patch

diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h
index f5c33dcc8616..14b01c3f5963 100644
--- a/include/hw/ppc/spapr.h
+++ b/include/hw/ppc/spapr.h
@@ -745,6 +745,7 @@  void push_sregs_to_kvm_pr(SpaprMachineState *spapr);
 #define RTAS_DDW_PGSIZE_128M     0x20
 #define RTAS_DDW_PGSIZE_256M     0x40
 #define RTAS_DDW_PGSIZE_16G      0x80
+#define RTAS_DDW_PGSIZE_2M       0x100
 
 /* RTAS tokens */
 #define RTAS_TOKEN_BASE      0x2000
diff --git a/hw/ppc/spapr_rtas_ddw.c b/hw/ppc/spapr_rtas_ddw.c
index 3e826e1308c4..13d339c807c1 100644
--- a/hw/ppc/spapr_rtas_ddw.c
+++ b/hw/ppc/spapr_rtas_ddw.c
@@ -72,6 +72,7 @@  static uint32_t spapr_page_mask_to_query_mask(uint64_t page_mask)
     const struct { int shift; uint32_t mask; } masks[] = {
         { 12, RTAS_DDW_PGSIZE_4K },
         { 16, RTAS_DDW_PGSIZE_64K },
+        { 21, RTAS_DDW_PGSIZE_2M },
         { 24, RTAS_DDW_PGSIZE_16M },
         { 25, RTAS_DDW_PGSIZE_32M },
         { 26, RTAS_DDW_PGSIZE_64M },