The function ppc_hash64_filter_pagesizes has been moved from a function
with prototype in mmu-hash64.h and implemented in mmu-hash64.c to
a static function in hw/ppc/spapr_caps.c as it's only used in that file.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br>
---
hw/ppc/spapr_caps.c | 59 +++++++++++++++++++++++++++++++++++++++++
target/ppc/mmu-hash64.c | 57 ---------------------------------------
target/ppc/mmu-hash64.h | 3 ---
3 files changed, 59 insertions(+), 60 deletions(-)
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index 9ea7ddd1e9..d0c419b392 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -371,6 +371,65 @@ static bool spapr_pagesize_cb(void *opaque, uint32_t seg_pshift,
return true;
}
+static void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
+ bool (*cb)(void *, uint32_t, uint32_t),
+ void *opaque)
+{
+ PPCHash64Options *opts = cpu->hash64_opts;
+ int i;
+ int n = 0;
+ bool ci_largepage = false;
+
+ assert(opts);
+
+ n = 0;
+ for (i = 0; i < ARRAY_SIZE(opts->sps); i++) {
+ PPCHash64SegmentPageSizes *sps = &opts->sps[i];
+ int j;
+ int m = 0;
+
+ assert(n <= i);
+
+ if (!sps->page_shift) {
+ break;
+ }
+
+ for (j = 0; j < ARRAY_SIZE(sps->enc); j++) {
+ PPCHash64PageSize *ps = &sps->enc[j];
+
+ assert(m <= j);
+ if (!ps->page_shift) {
+ break;
+ }
+
+ if (cb(opaque, sps->page_shift, ps->page_shift)) {
+ if (ps->page_shift >= 16) {
+ ci_largepage = true;
+ }
+ sps->enc[m++] = *ps;
+ }
+ }
+
+ /* Clear rest of the row */
+ for (j = m; j < ARRAY_SIZE(sps->enc); j++) {
+ memset(&sps->enc[j], 0, sizeof(sps->enc[j]));
+ }
+
+ if (m) {
+ n++;
+ }
+ }
+
+ /* Clear the rest of the table */
+ for (i = n; i < ARRAY_SIZE(opts->sps); i++) {
+ memset(&opts->sps[i], 0, sizeof(opts->sps[i]));
+ }
+
+ if (!ci_largepage) {
+ opts->flags &= ~PPC_HASH64_CI_LARGEPAGE;
+ }
+}
+
static void cap_hpt_maxpagesize_cpu_apply(SpaprMachineState *spapr,
PowerPCCPU *cpu,
uint8_t val, Error **errp)
diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c
index d517a99832..be3596f27b 100644
--- a/target/ppc/mmu-hash64.c
+++ b/target/ppc/mmu-hash64.c
@@ -1200,61 +1200,4 @@ const PPCHash64Options ppc_hash64_opts_POWER7 = {
}
};
-void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
- bool (*cb)(void *, uint32_t, uint32_t),
- void *opaque)
-{
- PPCHash64Options *opts = cpu->hash64_opts;
- int i;
- int n = 0;
- bool ci_largepage = false;
-
- assert(opts);
-
- n = 0;
- for (i = 0; i < ARRAY_SIZE(opts->sps); i++) {
- PPCHash64SegmentPageSizes *sps = &opts->sps[i];
- int j;
- int m = 0;
- assert(n <= i);
-
- if (!sps->page_shift) {
- break;
- }
-
- for (j = 0; j < ARRAY_SIZE(sps->enc); j++) {
- PPCHash64PageSize *ps = &sps->enc[j];
-
- assert(m <= j);
- if (!ps->page_shift) {
- break;
- }
-
- if (cb(opaque, sps->page_shift, ps->page_shift)) {
- if (ps->page_shift >= 16) {
- ci_largepage = true;
- }
- sps->enc[m++] = *ps;
- }
- }
-
- /* Clear rest of the row */
- for (j = m; j < ARRAY_SIZE(sps->enc); j++) {
- memset(&sps->enc[j], 0, sizeof(sps->enc[j]));
- }
-
- if (m) {
- n++;
- }
- }
-
- /* Clear the rest of the table */
- for (i = n; i < ARRAY_SIZE(opts->sps); i++) {
- memset(&opts->sps[i], 0, sizeof(opts->sps[i]));
- }
-
- if (!ci_largepage) {
- opts->flags &= ~PPC_HASH64_CI_LARGEPAGE;
- }
-}
diff --git a/target/ppc/mmu-hash64.h b/target/ppc/mmu-hash64.h
index 87729d48b3..5dfd7f8b93 100644
--- a/target/ppc/mmu-hash64.h
+++ b/target/ppc/mmu-hash64.h
@@ -18,9 +18,6 @@ unsigned ppc_hash64_hpte_page_shift_noslb(PowerPCCPU *cpu,
void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val);
void ppc_hash64_init(PowerPCCPU *cpu);
void ppc_hash64_finalize(PowerPCCPU *cpu);
-void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
- bool (*cb)(void *, uint32_t, uint32_t),
- void *opaque);
#endif
/*
--
2.17.1
On Thu, May 06, 2021 at 01:39:39PM -0300, Lucas Mateus Castro (alqotel) wrote:
> The function ppc_hash64_filter_pagesizes has been moved from a function
> with prototype in mmu-hash64.h and implemented in mmu-hash64.c to
> a static function in hw/ppc/spapr_caps.c as it's only used in that file.
>
> Signed-off-by: Lucas Mateus Castro (alqotel)
> <lucas.araujo@eldorado.org.br>
Applied to ppc-for-6.1, thanks.
> ---
> hw/ppc/spapr_caps.c | 59 +++++++++++++++++++++++++++++++++++++++++
> target/ppc/mmu-hash64.c | 57 ---------------------------------------
> target/ppc/mmu-hash64.h | 3 ---
> 3 files changed, 59 insertions(+), 60 deletions(-)
>
> diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
> index 9ea7ddd1e9..d0c419b392 100644
> --- a/hw/ppc/spapr_caps.c
> +++ b/hw/ppc/spapr_caps.c
> @@ -371,6 +371,65 @@ static bool spapr_pagesize_cb(void *opaque, uint32_t seg_pshift,
> return true;
> }
>
> +static void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
> + bool (*cb)(void *, uint32_t, uint32_t),
> + void *opaque)
> +{
> + PPCHash64Options *opts = cpu->hash64_opts;
> + int i;
> + int n = 0;
> + bool ci_largepage = false;
> +
> + assert(opts);
> +
> + n = 0;
> + for (i = 0; i < ARRAY_SIZE(opts->sps); i++) {
> + PPCHash64SegmentPageSizes *sps = &opts->sps[i];
> + int j;
> + int m = 0;
> +
> + assert(n <= i);
> +
> + if (!sps->page_shift) {
> + break;
> + }
> +
> + for (j = 0; j < ARRAY_SIZE(sps->enc); j++) {
> + PPCHash64PageSize *ps = &sps->enc[j];
> +
> + assert(m <= j);
> + if (!ps->page_shift) {
> + break;
> + }
> +
> + if (cb(opaque, sps->page_shift, ps->page_shift)) {
> + if (ps->page_shift >= 16) {
> + ci_largepage = true;
> + }
> + sps->enc[m++] = *ps;
> + }
> + }
> +
> + /* Clear rest of the row */
> + for (j = m; j < ARRAY_SIZE(sps->enc); j++) {
> + memset(&sps->enc[j], 0, sizeof(sps->enc[j]));
> + }
> +
> + if (m) {
> + n++;
> + }
> + }
> +
> + /* Clear the rest of the table */
> + for (i = n; i < ARRAY_SIZE(opts->sps); i++) {
> + memset(&opts->sps[i], 0, sizeof(opts->sps[i]));
> + }
> +
> + if (!ci_largepage) {
> + opts->flags &= ~PPC_HASH64_CI_LARGEPAGE;
> + }
> +}
> +
> static void cap_hpt_maxpagesize_cpu_apply(SpaprMachineState *spapr,
> PowerPCCPU *cpu,
> uint8_t val, Error **errp)
> diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c
> index d517a99832..be3596f27b 100644
> --- a/target/ppc/mmu-hash64.c
> +++ b/target/ppc/mmu-hash64.c
> @@ -1200,61 +1200,4 @@ const PPCHash64Options ppc_hash64_opts_POWER7 = {
> }
> };
>
> -void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
> - bool (*cb)(void *, uint32_t, uint32_t),
> - void *opaque)
> -{
> - PPCHash64Options *opts = cpu->hash64_opts;
> - int i;
> - int n = 0;
> - bool ci_largepage = false;
> -
> - assert(opts);
> -
> - n = 0;
> - for (i = 0; i < ARRAY_SIZE(opts->sps); i++) {
> - PPCHash64SegmentPageSizes *sps = &opts->sps[i];
> - int j;
> - int m = 0;
>
> - assert(n <= i);
> -
> - if (!sps->page_shift) {
> - break;
> - }
> -
> - for (j = 0; j < ARRAY_SIZE(sps->enc); j++) {
> - PPCHash64PageSize *ps = &sps->enc[j];
> -
> - assert(m <= j);
> - if (!ps->page_shift) {
> - break;
> - }
> -
> - if (cb(opaque, sps->page_shift, ps->page_shift)) {
> - if (ps->page_shift >= 16) {
> - ci_largepage = true;
> - }
> - sps->enc[m++] = *ps;
> - }
> - }
> -
> - /* Clear rest of the row */
> - for (j = m; j < ARRAY_SIZE(sps->enc); j++) {
> - memset(&sps->enc[j], 0, sizeof(sps->enc[j]));
> - }
> -
> - if (m) {
> - n++;
> - }
> - }
> -
> - /* Clear the rest of the table */
> - for (i = n; i < ARRAY_SIZE(opts->sps); i++) {
> - memset(&opts->sps[i], 0, sizeof(opts->sps[i]));
> - }
> -
> - if (!ci_largepage) {
> - opts->flags &= ~PPC_HASH64_CI_LARGEPAGE;
> - }
> -}
> diff --git a/target/ppc/mmu-hash64.h b/target/ppc/mmu-hash64.h
> index 87729d48b3..5dfd7f8b93 100644
> --- a/target/ppc/mmu-hash64.h
> +++ b/target/ppc/mmu-hash64.h
> @@ -18,9 +18,6 @@ unsigned ppc_hash64_hpte_page_shift_noslb(PowerPCCPU *cpu,
> void ppc_store_lpcr(PowerPCCPU *cpu, target_ulong val);
> void ppc_hash64_init(PowerPCCPU *cpu);
> void ppc_hash64_finalize(PowerPCCPU *cpu);
> -void ppc_hash64_filter_pagesizes(PowerPCCPU *cpu,
> - bool (*cb)(void *, uint32_t, uint32_t),
> - void *opaque);
> #endif
>
> /*
--
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
© 2016 - 2026 Red Hat, Inc.