Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1720261 > unrolled thread
| Started by | Colin King <colin.king@canonical.com> |
|---|---|
| First post | 2017-08-25 18:40 +0200 |
| Last post | 2017-08-29 15:20 +0200 |
| Articles | 6 — 5 participants |
Back to article view | Back to linux.kernel
[PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller Colin King <colin.king@canonical.com> - 2017-08-25 18:40 +0200
Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2017-08-25 19:00 +0200
Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller Lukas Wunner <lukas@wunner.de> - 2017-08-25 20:00 +0200
Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2017-08-25 20:00 +0200
Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller Colin Ian King <colin.king@canonical.com> - 2017-08-25 20:20 +0200
[tip:x86/platform] x86/platform/intel-mid: Make several arrays static, to make code smaller tip-bot for Colin Ian King <tipbot@zytor.com> - 2017-08-29 15:20 +0200
| From | Colin King <colin.king@canonical.com> |
|---|---|
| Date | 2017-08-25 18:40 +0200 |
| Subject | [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller |
| Message-ID | <uipOi-6ni-19@gated-at.bofh.it> |
From: Colin Ian King <colin.king@canonical.com>
Don't populate arrays on the stack, instead make them static .
Makes the object code smaller by 76 bytes:
Before:
text data bss dec hex filename
4217 1540 128 5885 16fd arch/x86/platform/intel-mid/pwr.o
After:
text data bss dec hex filename
3981 1700 128 5809 16b1 arch/x86/platform/intel-mid/pwr.o
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
arch/x86/platform/intel-mid/pwr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/platform/intel-mid/pwr.c b/arch/x86/platform/intel-mid/pwr.c
index ef03852ea6e8..49ec5b94c71f 100644
--- a/arch/x86/platform/intel-mid/pwr.c
+++ b/arch/x86/platform/intel-mid/pwr.c
@@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr *pwr, const u32 *states)
static int pnw_set_initial_state(struct mid_pwr *pwr)
{
/* On Penwell SRAM must stay powered on */
- const u32 states[] = {
+ static const u32 states[] = {
0xf00fffff, /* PM_SSC(0) */
0xffffffff, /* PM_SSC(1) */
0xffffffff, /* PM_SSC(2) */
@@ -455,7 +455,7 @@ static int pnw_set_initial_state(struct mid_pwr *pwr)
static int tng_set_initial_state(struct mid_pwr *pwr)
{
- const u32 states[] = {
+ static const u32 states[] = {
0xffffffff, /* PM_SSC(0) */
0xffffffff, /* PM_SSC(1) */
0xffffffff, /* PM_SSC(2) */
--
2.14.1
[toc] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2017-08-25 19:00 +0200 |
| Subject | Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller |
| Message-ID | <uiq7E-6u6-13@gated-at.bofh.it> |
| In reply to | #1720261 |
On Fri, 2017-08-25 at 17:32 +0100, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Don't populate arrays on the stack, instead make them static .
> Makes the object code smaller by 76 bytes:
>
> Before:
> text data bss dec hex
> filename
> 4217 1540 128 5885 16fd
> arch/x86/platform/intel-mid/pwr.o
>
> After:
> text data bss dec hex
> filename
> 3981 1700 128 5809 16b1
> arch/x86/platform/intel-mid/pwr.o
Fine by me.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
> arch/x86/platform/intel-mid/pwr.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/platform/intel-mid/pwr.c
> b/arch/x86/platform/intel-mid/pwr.c
> index ef03852ea6e8..49ec5b94c71f 100644
> --- a/arch/x86/platform/intel-mid/pwr.c
> +++ b/arch/x86/platform/intel-mid/pwr.c
> @@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr
> *pwr, const u32 *states)
> static int pnw_set_initial_state(struct mid_pwr *pwr)
> {
> /* On Penwell SRAM must stay powered on */
> - const u32 states[] = {
> + static const u32 states[] = {
> 0xf00fffff, /* PM_SSC(0) */
> 0xffffffff, /* PM_SSC(1) */
> 0xffffffff, /* PM_SSC(2) */
> @@ -455,7 +455,7 @@ static int pnw_set_initial_state(struct mid_pwr
> *pwr)
>
> static int tng_set_initial_state(struct mid_pwr *pwr)
> {
> - const u32 states[] = {
> + static const u32 states[] = {
> 0xffffffff, /* PM_SSC(0) */
> 0xffffffff, /* PM_SSC(1) */
> 0xffffffff, /* PM_SSC(2) */
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
[toc] | [prev] | [next] | [standalone]
| From | Lukas Wunner <lukas@wunner.de> |
|---|---|
| Date | 2017-08-25 20:00 +0200 |
| Subject | Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller |
| Message-ID | <uir3I-74J-39@gated-at.bofh.it> |
| In reply to | #1720261 |
On Fri, Aug 25, 2017 at 05:32:06PM +0100, Colin King wrote:
> --- a/arch/x86/platform/intel-mid/pwr.c
> +++ b/arch/x86/platform/intel-mid/pwr.c
> @@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr *pwr, const u32 *states)
> static int pnw_set_initial_state(struct mid_pwr *pwr)
> {
> /* On Penwell SRAM must stay powered on */
> - const u32 states[] = {
> + static const u32 states[] = {
> 0xf00fffff, /* PM_SSC(0) */
> 0xffffffff, /* PM_SSC(1) */
> 0xffffffff, /* PM_SSC(2) */
That's a known gcc bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68725
There are hundreds of constant compound literals that are generated
on the stack rather than stored in rodata, do you intend to file
patches for all of them? Adding static everywhere is just a
workaround that bloats the code. Fixing the root cause in gcc would
make more sense.
Just my 2 cents worth of course.
Thanks,
Lukas
[toc] | [prev] | [next] | [standalone]
| From | Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
|---|---|
| Date | 2017-08-25 20:00 +0200 |
| Subject | Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller |
| Message-ID | <uir3J-74J-49@gated-at.bofh.it> |
| In reply to | #1720331 |
On Fri, 2017-08-25 at 19:51 +0200, Lukas Wunner wrote:
> On Fri, Aug 25, 2017 at 05:32:06PM +0100, Colin King wrote:
> > --- a/arch/x86/platform/intel-mid/pwr.c
> > +++ b/arch/x86/platform/intel-mid/pwr.c
> > @@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr
> > *pwr, const u32 *states)
> > static int pnw_set_initial_state(struct mid_pwr *pwr)
> > {
> > /* On Penwell SRAM must stay powered on */
> > - const u32 states[] = {
> > + static const u32 states[] = {
> > 0xf00fffff, /* PM_SSC(0) */
> > 0xffffffff, /* PM_SSC(1) */
> > 0xffffffff, /* PM_SSC(2) */
>
> That's a known gcc bug:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68725
>
> There are hundreds of constant compound literals that are generated
> on the stack rather than stored in rodata, do you intend to file
> patches for all of them? Adding static everywhere is just a
> workaround that bloats the code. Fixing the root cause in gcc would
> make more sense.
That is a good point.
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
[toc] | [prev] | [next] | [standalone]
| From | Colin Ian King <colin.king@canonical.com> |
|---|---|
| Date | 2017-08-25 20:20 +0200 |
| Subject | Re: [PATCH] x86/platform/intel-mid: make several arrays static, makes code smaller |
| Message-ID | <uirn4-7qw-9@gated-at.bofh.it> |
| In reply to | #1720334 |
On 25/08/17 18:53, Andy Shevchenko wrote:
> On Fri, 2017-08-25 at 19:51 +0200, Lukas Wunner wrote:
>> On Fri, Aug 25, 2017 at 05:32:06PM +0100, Colin King wrote:
>>> --- a/arch/x86/platform/intel-mid/pwr.c
>>> +++ b/arch/x86/platform/intel-mid/pwr.c
>>> @@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr
>>> *pwr, const u32 *states)
>>> static int pnw_set_initial_state(struct mid_pwr *pwr)
>>> {
>>> /* On Penwell SRAM must stay powered on */
>>> - const u32 states[] = {
>>> + static const u32 states[] = {
>>> 0xf00fffff, /* PM_SSC(0) */
>>> 0xffffffff, /* PM_SSC(1) */
>>> 0xffffffff, /* PM_SSC(2) */
>>
>> That's a known gcc bug:
>> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68725
>>
>> There are hundreds of constant compound literals that are generated
>> on the stack rather than stored in rodata, do you intend to file
>> patches for all of them? Adding static everywhere is just a
>> workaround that bloats the code. Fixing the root cause in gcc would
>> make more sense.
Hrm. constifying will specify it won't be changed; section A8.2 of "The
C programming language" 2nd edition states that this specifier "is to
announce that objects may be placed in read-only memory, and perhaps
increase opportunities for optimization". Emphasis on "may", it can do,
but it does not necessarily have to. The static storage class specifier
will ensure the object is not on the stack for sure. So I think from my
understanding of the semantics described in K&R 2nd edition:
const - data is read only, and can be put into read-only location if
compiler can (or wants) to do so
static - data will be not stashed on the stack.
So my change is to be totally clear on the intent - make it read only
and ensure it is not populated at run time on the stack.
Colin
>
> That is a good point.
>
[toc] | [prev] | [next] | [standalone]
| From | tip-bot for Colin Ian King <tipbot@zytor.com> |
|---|---|
| Date | 2017-08-29 15:20 +0200 |
| Subject | [tip:x86/platform] x86/platform/intel-mid: Make several arrays static, to make code smaller |
| Message-ID | <ujOAW-37c-25@gated-at.bofh.it> |
| In reply to | #1720261 |
Commit-ID: 3308376a914b9c3f57a12072c063814403d983a8
Gitweb: http://git.kernel.org/tip/3308376a914b9c3f57a12072c063814403d983a8
Author: Colin Ian King <colin.king@canonical.com>
AuthorDate: Fri, 25 Aug 2017 17:32:06 +0100
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Tue, 29 Aug 2017 13:30:16 +0200
x86/platform/intel-mid: Make several arrays static, to make code smaller
Don't populate arrays on the stack, instead make them static.
Makes the object code smaller by 76 bytes:
Before:
text data bss dec hex filename
4217 1540 128 5885 16fd arch/x86/platform/intel-mid/pwr.o
After:
text data bss dec hex filename
3981 1700 128 5809 16b1 arch/x86/platform/intel-mid/pwr.o
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Lukas Wunner <lukas@wunner.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: kernel-janitors@vger.kernel.org
Link: http://lkml.kernel.org/r/20170825163206.23250-1-colin.king@canonical.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/platform/intel-mid/pwr.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/platform/intel-mid/pwr.c b/arch/x86/platform/intel-mid/pwr.c
index ef03852..49ec5b9 100644
--- a/arch/x86/platform/intel-mid/pwr.c
+++ b/arch/x86/platform/intel-mid/pwr.c
@@ -444,7 +444,7 @@ static int mid_set_initial_state(struct mid_pwr *pwr, const u32 *states)
static int pnw_set_initial_state(struct mid_pwr *pwr)
{
/* On Penwell SRAM must stay powered on */
- const u32 states[] = {
+ static const u32 states[] = {
0xf00fffff, /* PM_SSC(0) */
0xffffffff, /* PM_SSC(1) */
0xffffffff, /* PM_SSC(2) */
@@ -455,7 +455,7 @@ static int pnw_set_initial_state(struct mid_pwr *pwr)
static int tng_set_initial_state(struct mid_pwr *pwr)
{
- const u32 states[] = {
+ static const u32 states[] = {
0xffffffff, /* PM_SSC(0) */
0xffffffff, /* PM_SSC(1) */
0xffffffff, /* PM_SSC(2) */
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web