Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1467290 > unrolled thread

[PATCH] skx_edac: Move a few hundred bytes to text from data using const

Started byJoe Perches <joe@perches.com>
First post2016-08-22 02:10 +0200
Last post2016-08-22 19:00 +0200
Articles 3 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] skx_edac: Move a few hundred bytes to text from data using const Joe Perches <joe@perches.com> - 2016-08-22 02:10 +0200
    Re: [PATCH] skx_edac: Move a few hundred bytes to text from data  using const "Luck, Tony" <tony.luck@intel.com> - 2016-08-22 18:50 +0200
      Re: [PATCH] skx_edac: Move a few hundred bytes to text from data  using const Joe Perches <joe@perches.com> - 2016-08-22 19:00 +0200

#1467290 — [PATCH] skx_edac: Move a few hundred bytes to text from data using const

FromJoe Perches <joe@perches.com>
Date2016-08-22 02:10 +0200
Subject[PATCH] skx_edac: Move a few hundred bytes to text from data using const
Message-ID<s8KYp-7hH-5@gated-at.bofh.it>
Marking arrays as const makes for smaller data.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/edac/skx_edac.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c
index 0ff4878..875e74f 100644
--- a/drivers/edac/skx_edac.c
+++ b/drivers/edac/skx_edac.c
@@ -762,23 +762,23 @@ rir_found:
 	return true;
 }
 
-static u8 skx_close_row[] = {
+static const u8 skx_close_row[] = {
 	15, 16, 17, 18, 20, 21, 22, 28, 10, 11, 12, 13, 29, 30, 31, 32, 33
 };
-static u8 skx_close_column[] = {
+static const u8 skx_close_column[] = {
 	3, 4, 5, 14, 19, 23, 24, 25, 26, 27
 };
-static u8 skx_open_row[] = {
+static const u8 skx_open_row[] = {
 	14, 15, 16, 20, 28, 21, 22, 23, 24, 25, 26, 27, 29, 30, 31, 32, 33
 };
-static u8 skx_open_column[] = {
+static const u8 skx_open_column[] = {
 	3, 4, 5, 6, 7, 8, 9, 10, 11, 12
 };
-static u8 skx_open_fine_column[] = {
+static const u8 skx_open_fine_column[] = {
 	3, 4, 5, 7, 8, 9, 10, 11, 12, 13
 };
 
-static int skx_bits(u64 addr, int nbits, u8 *bits)
+static int skx_bits(u64 addr, int nbits, const u8 *bits)
 {
 	int i, res = 0;
 
@@ -884,7 +884,8 @@ static void skx_mce_output_error(struct mem_ctl_info *mci,
 				 struct decoded_addr *res)
 {
 	enum hw_event_mc_err_type tp_event;
-	char *type, *optype, msg[256];
+	const char *type, *optype;
+	char msg[256];
 	bool ripv = GET_BITFIELD(m->mcgstatus, 0, 0);
 	bool overflow = GET_BITFIELD(m->status, 62, 62);
 	bool uncorrected_error = GET_BITFIELD(m->status, 61, 61);
-- 
2.8.0.rc4.16.g56331f8

[toc] | [next] | [standalone]


#1467789 — Re: [PATCH] skx_edac: Move a few hundred bytes to text from data using const

From"Luck, Tony" <tony.luck@intel.com>
Date2016-08-22 18:50 +0200
SubjectRe: [PATCH] skx_edac: Move a few hundred bytes to text from data using const
Message-ID<s90A9-iZ-1@gated-at.bofh.it>
In reply to#1467290
On Sun, Aug 21, 2016 at 05:02:41PM -0700, Joe Perches wrote:
> Marking arrays as const makes for smaller data.

Joe,

"a few hundred" seems to be exaggeration.

Before:
$ size drivers/edac/skx_edac.ko
   text	   data	    bss	    dec	    hex	filename
   8435	   1024	     24	   9483	   250b	drivers/edac/skx_edac.ko

After:
$ size drivers/edac/skx_edac.ko
   text    data     bss     dec     hex filename
   8531	    944	     24	   9499	   251b	drivers/edac/skx_edac.ko

so "data" was reduced by 80 bytes, but "text" went up by 96.

Net increase of 16 (perhaps because some padding for alignment???)

Making read-only data const is a good idea in general, but
do we want to do it if it *increases* kernel footprint?

-Tony

[toc] | [prev] | [next] | [standalone]


#1467820 — Re: [PATCH] skx_edac: Move a few hundred bytes to text from data using const

FromJoe Perches <joe@perches.com>
Date2016-08-22 19:00 +0200
SubjectRe: [PATCH] skx_edac: Move a few hundred bytes to text from data using const
Message-ID<s90JQ-my-31@gated-at.bofh.it>
In reply to#1467789
On Mon, 2016-08-22 at 09:46 -0700, Luck, Tony wrote:
> On Sun, Aug 21, 2016 at 05:02:41PM -0700, Joe Perches wrote:
> > Marking arrays as const makes for smaller data.
> Joe,

Hi Tony

> "a few hundred" seems to be exaggeration.
> 
> Before:
> $ size drivers/edac/skx_edac.ko
>    text	   data	    bss	    dec	    hex	filename
>    8435	   1024	     24	   9483	   250b	drivers/edac/skx_edac.ko
> 
> After:
> $ size drivers/edac/skx_edac.ko
>    text    data     bss     dec     hex filename
>    8531	    944	     24	   9499	   251b	drivers/edac/skx_edac.ko
> 
> so "data" was reduced by 80 bytes, but "text" went up by 96.


Yeah, it was a few hundred in an allyesconfig
and I neglected to test the defconfig.

$ size drivers/edac/skx_edac.o* (x86-64)
   text	   data	    bss	    dec	    hex	filename
   6677	     64	     24	   6765	   1a6d	drivers/edac/skx_edac.o.defconfig.new
   6546	    176	     24	   6746	   1a5a	drivers/edac/skx_edac.o.defconfig.old
  20609	   5744	    320	  26673	   6831	drivers/edac/skx_edac.o.new
  20273	   6064	    320	  26657	   6821	drivers/edac/skx_edac.o.old

> Net increase of 16 (perhaps because some padding for alignment???)
> 
> Making read-only data const is a good idea in general, but
> do we want to do it if it *increases* kernel footprint?

Marking all data const that can be const is a good thing.
It reduces exposure and eliminates unintentional overwriting.

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web