All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gavin Shan <gshan@redhat.com>
To: linux-arm-kernel@lists.infradead.org
Cc: mark.rutland@arm.com, lorenzo.pieralisi@arm.com, will@kernel.org,
	catalin.marinas@arm.com, shan.gavin@gmail.com,
	sudeep.holla@arm.com, robin.murphy@arm.com
Subject: [PATCH v5 0/4] arm64: Dereference CPU operations indirectly
Date: Thu, 19 Mar 2020 10:01:41 +1100	[thread overview]
Message-ID: <20200318230145.72097-1-gshan@redhat.com> (raw)

The subject perhaps can't precisely indicate what this series does, but
keep it same as before for consistency.

In current implementation, an array (@cpu_ops[NR_CPUS]) is maintained
to dereference the CPU operations. 2KB memory are consumed when NR_CPUS
is configured to 256. It's too much than what I expected. This series
reworks the implementation to dereference the CPU operations by using
two CPU operations pointer with assumption - all secondary CPUs should
have unified CPU operations. With this, 16-bytes memory will be used
for same purpose.

PATCH[1/4] isn't too much relevant, to declare ACPI parking protocol only
when CONFIG_ARM64_ACPI_PARKING_PROTOCOL has been enabled. PATCH[2/4]
renames cpu_read_ops() to init_cpu_ops(), which is obviously more precise
because it's initializing the CPU operations. PATCH[3/4] introduces
get_cpu_ops(), preparing for droping the array of CPU operations.
PATCH[4/4] removes the CPU operations deferencing array and replaces
it with two pointers with the assumption: all secondary CPUs should have
same enablement method.

Changelog
=========
v5:
   * Rebase to 5.6.rc6 and retest                        (Gavin Shan)
   * Improved commit log for PATCH[1]                    (Gavin Shan)
   * Add helper function __cpu_try_die()                 (Mark Rutland)
   * Two pointers to track the operations for boot CPU
     and the secondary CPUs separately                   (Mark Rutland)
   * Drop PATCH[5] because @cpu parameter is still
     needed by get_cpu_ops()                             (Gavin Shan)
v4:
   * Rebase to 5.6.rc3 and retest                        (Gavin Shan)
   * Improved commit log for PATCH[4/5] with link tag    (Lorenzo Pieralisi)
   * Using pointer instead of index to dereference the
     unified CPU operations                              (Lorenzo Pieralisi)
   * Merge logic of cpu_get_ops() to get_cpu_method()    (Gavin Shan)
v3:
   * Assume all CPUs have same enablement method. With this, the used
     memory is further squeezed from 64 bytes to 4 bytes (Lorenzo Pieralisi)
   * Add PATCH[5/5] to remove argument of get_cpu_ops()  (Gavin Shan)
v2:
   * Pack 4 CPUs' indexes into one byte. 64 bytes are consumed in order
     to get the CPU operations                            (Robin Murphy)
   * Use ARRAY_SIZE() to iterate @cpu_ops[]               (Robin Murphy)
   * Make index-0 valid                                   (Robin Murphy)

Gavin Shan (4):
  arm64: Declare ACPI parking protocol CPU operation if needed
  arm64: Rename cpu_read_ops() to init_cpu_ops()
  arm64: Introduce get_cpu_ops() helper function
  arm64: Remove CPU operations dereferencing array

 arch/arm64/include/asm/cpu_ops.h |  8 +--
 arch/arm64/kernel/cpu_ops.c      | 84 +++++++++++++++++---------------
 arch/arm64/kernel/cpuidle.c      |  9 ++--
 arch/arm64/kernel/setup.c        |  8 +--
 arch/arm64/kernel/smp.c          | 72 +++++++++++++++++----------
 5 files changed, 107 insertions(+), 74 deletions(-)

-- 
2.23.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

             reply	other threads:[~2020-03-18 23:02 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-18 23:01 Gavin Shan [this message]
2020-03-18 23:01 ` [PATCH v5 1/4] arm64: Declare ACPI parking protocol CPU operation if needed Gavin Shan
2020-03-18 23:01 ` [PATCH v5 2/4] arm64: Rename cpu_read_ops() to init_cpu_ops() Gavin Shan
2020-03-18 23:01 ` [PATCH v5 3/4] arm64: Introduce get_cpu_ops() helper function Gavin Shan
2020-03-19 19:31   ` Mark Rutland
2020-03-18 23:01 ` [PATCH v5 4/4] arm64: Remove CPU operations dereferencing array Gavin Shan
2020-03-19 19:38   ` Mark Rutland
2020-03-19 22:54     ` Gavin Shan
2020-03-24 17:29 ` [PATCH v5 0/4] arm64: Dereference CPU operations indirectly Catalin Marinas
2020-03-25 11:49   ` Gavin Shan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200318230145.72097-1-gshan@redhat.com \
    --to=gshan@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=robin.murphy@arm.com \
    --cc=shan.gavin@gmail.com \
    --cc=sudeep.holla@arm.com \
    --cc=will@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.