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

Alexey Kardashevskiy posted 1 patch 2 years, 1 month ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220321071945.918669-1-aik@ozlabs.ru
Test checkpatch passed
Maintainers: "Cédric Le Goater" <clg@kaod.org>, Daniel Henrique Barboza <danielhb413@gmail.com>, David Gibson <david@gibson.dropbear.id.au>, Greg Kurz <groug@kaod.org>
include/hw/ppc/spapr.h  | 1 +
hw/ppc/spapr_rtas_ddw.c | 1 +
2 files changed, 2 insertions(+)
[PATCH qemu] ppc/spapr/ddw: Add 2M pagesize
Posted by Alexey Kardashevskiy 2 years, 1 month ago
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 },
-- 
2.30.2
Re: [PATCH qemu] ppc/spapr/ddw: Add 2M pagesize
Posted by Daniel Henrique Barboza 2 years ago
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 },
Re: [PATCH qemu] ppc/spapr/ddw: Add 2M pagesize
Posted by Alexey Kardashevskiy 2 years ago

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 },
Re: [PATCH qemu] ppc/spapr/ddw: Add 2M pagesize
Posted by Daniel Henrique Barboza 2 years ago

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 },