Skip to contentSkip to conversation

powerpc: compile kernel for linkstations optimized for size

PATCH Applied Rogério Brito 6 participants 27 messages Oct 13, 2008 – Oct 28, 2008 PowerPC

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 powerpc: compile kernel for linkstations optimized for size

From: Rogério Brito <[email protected]>

Since Linkstations and Kuroboxes often have *very* little memory (as they are embedded systems), it is desirable to get their kernels compiled optimized for size.

---

I have been using kernels optimized for size on my Kurobox (standard) for many different releases and I have experienced no problem with this option enabled. Thus, this patch.

arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +1 -1
@@ -90,7 +90,7 @@ CONFIG_NAMESPACES=y
 # CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
 CONFIG_SYSCTL_SYSCALL=y
Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#1 lore raw

PATCH 1/1 powerpc: enable heap randomization for linkstations

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

---

arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +3 -4
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.27-rc4
-# Thu Aug 21 00:52:05 2008
+# Linux kernel version: 2.6.27
+# Mon Oct 13 01:11:21 2008
 #
 # CONFIG_PPC64 is not set
 
@@ -101,7 +101,7 @@ CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-CONFIG_COMPAT_BRK=y
+# CONFIG_COMPAT_BRK is not set
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_ANON_INODES=y
@@ -1211,7 +1211,6 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_ALAUDA is not set
 # CONFIG_USB_STORAGE_ONETOUCH is not set
 # CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_SIERRA is not set
 # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
 # CONFIG_USB_LIBUSUAL is not set
 
Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#2 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 5 lines · On Mon, 13 Oct 2008, Rog=E9rio Brito wrote:

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.
=20
Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

Same as the previous patch - this is one of options, that users select=20 according to their needs. If any specific distribution enables this option= =20
by default in their kernels, they can do this too, don't think this is=20 critical enough to patch the defconfig.

Thanks
Guennadi

Quoted 7 lines

=20
=20

=20
---
=20
--- linux/arch/powerpc/configs/linkstation_defconfig.old=092008-10-13 00:=

33:00.000000000 -0300

Quoted 1 line

+++ linux/arch/powerpc/configs/linkstation_defconfig=092008-10-13 01:11:2=

8.000000000 -0300

Quoted 29 lines
arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +2 -2
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.27-rc4
-# Thu Aug 21 00:52:05 2008
+# Linux kernel version: 2.6.27
+# Mon Oct 13 01:11:21 2008
 #
 # CONFIG_PPC64 is not set

=20

arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +1 -2
@@ -101,7 +101,7 @@ CONFIG_HOTPLUG=3Dy
 CONFIG_PRINTK=3Dy
 CONFIG_BUG=3Dy
 CONFIG_ELF_CORE=3Dy
-CONFIG_COMPAT_BRK=3Dy
+# CONFIG_COMPAT_BRK is not set
 CONFIG_BASE_FULL=3Dy
 CONFIG_FUTEX=3Dy
 CONFIG_ANON_INODES=3Dy
@@ -1211,7 +1211,6 @@ CONFIG_USB_STORAGE=3Dm
 # CONFIG_USB_STORAGE_ALAUDA is not set
 # CONFIG_USB_STORAGE_ONETOUCH is not set
 # CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_SIERRA is not set
 # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
 # CONFIG_USB_LIBUSUAL is not set

=20
=20
--=20

Quoted 8 lines

Rog=E9rio Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev
=20

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#3 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 5 lines · Guennadi Liakhovetski
Quoted 3 lines · Rogério Brito

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Quoted 7 lines
Quoted 2 lines

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

Same as the previous patch - this is one of options, that users select according to their needs. If any specific distribution enables this option by default in their kernels, they can do this too, don't think this is critical enough to patch the defconfig.

Just because users/distros can change it doesn't mean it's pointless to discuss what default is sane, and make changes if the current default isn't.

For security-related options it's usually best to default to the more secure state, especially since the option description talks about it being needed mainly for libc5 compatibility -- did libc5 ever even exist for powerpc?

The only reason it was turned on in the first place was likely the "default y", which in turn is there to avoid breaking old x86 distros.

-Scott

#4 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 7 lines · Scott Wood
Quoted 6 lines · Guennadi Liakhovetski

On Mon, 13 Oct 2008, Rog=E9rio Brito wrote:
=20

Quoted 4 lines

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.
=20
Since some of these machines are facing the internet, it helps to hav=

e

Quoted 3 lines
Quoted 3 lines
Quoted 1 line

heap randomization enabled. This patch enables it.

=20
Same as the previous patch - this is one of options, that users select=

=20

Quoted 1 line
Quoted 1 line

according to their needs. If any specific distribution enables this opt=

ion=20

Quoted 1 line
Quoted 1 line

by default in their kernels, they can do this too, don't think this is=

=20

Quoted 10 lines
Quoted 1 line

critical enough to patch the defconfig.

=20
Just because users/distros can change it doesn't mean it's pointless to discuss what default is sane, and make changes if the current default isn't.
=20
For security-related options it's usually best to default to the more secure state, especially since the option description talks about it being needed mainly for libc5 compatibility -- did libc5 ever even exist for powerpc? =20

In a 2.6.27-rc5-ish snapshot I counted 68 enabled and 11 disabled=20 CONFIG_COMPAT_BRK under arch/powerpc/configs/. Ok, enabling it for all=20 would be a bit rude, and one has to start somewhere...

Quoted 2 lines

The only reason it was turned on in the first place was likely the "default y", which in turn is there to avoid breaking old x86 distros.

Then maybe it would be better to make default y only for some platforms?

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#5 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Scott Wood

Hi, Scott, Guennadi.

Quoted 6 lines · Scott Wood
Quoted 5 lines · Guennadi Liakhovetski
Quoted 3 lines · Rogério Brito

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

Same as the previous patch - this is one of options, that users select according to their needs. If any specific distribution enables this option by default in their kernels, they can do this too, don't think this is critical enough to patch the defconfig.

I think that the matter is not being critical or not, but of including a sane default as the kernel should be a place for best-current-practices.

Quoted 3 lines

Just because users/distros can change it doesn't mean it's pointless to discuss what default is sane, and make changes if the current default isn't.

Exactly my point.

Quoted 4 lines

For security-related options it's usually best to default to the more secure state, especially since the option description talks about it being needed mainly for libc5 compatibility -- did libc5 ever even exist for powerpc?

I don't know, but even Debian's very ancient distributions all came with libc6 on powerpc.

Quoted 2 lines

The only reason it was turned on in the first place was likely the "default y", which in turn is there to avoid breaking old x86 distros.

Exactly. Agreed 100%.

Regards, Rogério Brito.

Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#6 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Scott Wood

Hi.

Quoted 5 lines · Scott Wood
Quoted 4 lines · Guennadi Liakhovetski
Quoted 3 lines · Rogério Brito

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Quoted 7 lines
Quoted 7 lines
Quoted 2 lines

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

Same as the previous patch - this is one of options, that users select according to their needs. If any specific distribution enables this option by default in their kernels, they can do this too, don't think this is critical enough to patch the defconfig.

I guess, Guennadi, that this is questionable. Many people would base their configs on the defconfig.

Also, the defconfig has many questionable settings for an embedded platform like the Kurobox.

And it seems that there is something not quite right for these embedded systems. Here is something that I get with a vanilla linkstation_defconfig:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This gets me (with bootlogd enabled):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Wed Dec 31 21:00:15 1969: Cannot access the Hardware Clock via any known method.
Wed Dec 31 21:00:15 1969: Use the --debug option to see the details of our search for an access method. Wed Dec 31 21:00:15 1969: Unable to set System Clock to: Thu Jan 1 00:00:15 UTC 1970 ^[[33m(warning).^[[39;49m
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

I just saw that in the default config:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Maybe this should be enabled? I can iterate once more to see if this option would make any difference here.

Quoted 3 lines

Just because users/distros can change it doesn't mean it's pointless to discuss what default is sane, and make changes if the current default isn't.

100% agreed again, Scott. To repeat myself here, I think that the defconfig should show the users the best current practices.

Quoted 7 lines

For security-related options it's usually best to default to the more secure state, especially since the option description talks about it being needed mainly for libc5 compatibility -- did libc5 ever even exist for powerpc?

The only reason it was turned on in the first place was likely the "default y", which in turn is there to avoid breaking old x86 distros.

I'm including both Paul and BenH here.

Regards, Rogério Brito.

Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#7 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Hi again.

Quoted 6 lines · Rogério Brito

And it seems that there is something not quite right for these embedded systems. Here is something that I get with a vanilla linkstation_defconfig:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(...)

Quoted 8 lines

I just saw that in the default config:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Maybe this should be enabled? I can iterate once more to see if this option would make any difference here.

Even if I enable this option, I still get the same problem as above. :-(

Regards, Rogério Brito.

Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#8 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Rogério Brito

(modified the cc-list somewhat)

Quoted 1 line · On Sat, 18 Oct 2008, Rog=E9rio Brito wrote:

systems. Here is something that I get with a vanilla linkstation_defconfi=

g:

Quoted 9 lines

=20
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - =20
This gets me (with bootlogd enabled):
=20
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Wed Dec 31 21:00:15 1969: Cannot access the Hardware Clock via any known =

method.

Quoted 1 line

Wed Dec 31 21:00:15 1969: Use the --debug option to see the details of ou=

r search for an access method.

Quoted 1 line

Wed Dec 31 21:00:15 1969: Unable to set System Clock to: Thu Jan 1 00:00:=

15 UTC 1970 ^[[33m(warning).^[[39;49m

Quoted 1 line

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Yes, there seems to be a problem here now. The i2c adapter does not get=20 probed, i.e., of-matching doesn't work. A quick look through other=20 device-trees, using the same i2c driver, through git-logs of the i2c=20 driver and the dts didn't bring me to a solution. Can anyone spot what's=20 wrong with kuroboxHG.dts? lsprop output looks reasonable. Last working=20 kernel was 2.6.25-rc6-ish.

Quoted 5 lines

I just saw that in the default config:
=20
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

No, kurobox uses generic RTC class.

Thanks for the report
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#9 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 5 lines · Guennadi Liakhovetski

(modified the cc-list somewhat)

Quoted 1 line · On Sat, 18 Oct 2008, Rog=E9rio Brito wrote:

systems. Here is something that I get with a vanilla linkstation_defconf=

ig:

Quoted 9 lines
Quoted 9 lines

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

This gets me (with bootlogd enabled):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Wed Dec 31 21:00:15 1969: Cannot access the Hardware Clock via any known=

method.

Quoted 1 line
Quoted 1 line

Wed Dec 31 21:00:15 1969: Use the --debug option to see the details of o=

ur search for an access method.

Quoted 1 line
Quoted 1 line

Wed Dec 31 21:00:15 1969: Unable to set System Clock to: Thu Jan 1 00:00=

:15 UTC 1970 ^[[33m(warning).^[[39;49m

Quoted 9 lines
Quoted 1 line

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Yes, there seems to be a problem here now. The i2c adapter does not get probed, i.e., of-matching doesn't work. A quick look through other device-trees, using the same i2c driver, through git-logs of the i2c driver and the dts didn't bring me to a solution. Can anyone spot what's wrong with kuroboxHG.dts? lsprop output looks reasonable. Last working kernel was 2.6.25-rc6-ish.

Quoted 7 lines
Quoted 5 lines

I just saw that in the default config:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

No, kurobox uses generic RTC class.

I don't see anything obviously wrong.

Is rtc-rs5c372 built into your kernel?

You may need to add some debug statements in drivers/of/of_i2c.c to figure out what is wrong.
It could be something like a _ not matching a -.

Quoted 7 lines

Thanks for the report
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

--=20
Jon Smirl
[email protected]

#10 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 25 lines · Jon Smirl
Quoted 8 lines · Guennadi Liakhovetski

Yes, there seems to be a problem here now. The i2c adapter does not get probed, i.e., of-matching doesn't work. A quick look through other device-trees, using the same i2c driver, through git-logs of the i2c driver and the dts didn't bring me to a solution. Can anyone spot what's wrong with kuroboxHG.dts? lsprop output looks reasonable. Last working kernel was 2.6.25-rc6-ish.

Quoted 7 lines
Quoted 5 lines

I just saw that in the default config:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

No, kurobox uses generic RTC class.

I don't see anything obviously wrong.

Is rtc-rs5c372 built into your kernel?

You may need to add some debug statements in drivers/of/of_i2c.c to figure out what is wrong.
It could be something like a _ not matching a -.

Quoted 2 lines · Above I
Quoted 2 lines

Yes, there seems to be a problem here now. The i2c adapter does not get probed, i.e., of-matching doesn't work. A quick look through other

i.e., i2c-mpc is not matched against its fdt-node, not the rtc.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#11 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 28 lines · Guennadi Liakhovetski
Quoted 18 lines · Jon Smirl
Quoted 8 lines · Guennadi Liakhovetski

Yes, there seems to be a problem here now. The i2c adapter does not get probed, i.e., of-matching doesn't work. A quick look through other device-trees, using the same i2c driver, through git-logs of the i2c driver and the dts didn't bring me to a solution. Can anyone spot what's wrong with kuroboxHG.dts? lsprop output looks reasonable. Last working kernel was 2.6.25-rc6-ish.

Quoted 7 lines
Quoted 5 lines

I just saw that in the default config:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # CONFIG_PPC_CLOCK is not set
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

No, kurobox uses generic RTC class.

Quoted 7 lines

I don't see anything obviously wrong.

Is rtc-rs5c372 built into your kernel?

You may need to add some debug statements in drivers/of/of_i2c.c to figure out what is wrong.
It could be something like a _ not matching a -.

Quoted 6 lines
Quoted 2 lines · Above I
Quoted 2 lines

Yes, there seems to be a problem here now. The i2c adapter does not get probed, i.e., of-matching doesn't work. A quick look through other

i.e., i2c-mpc is not matched against its fdt-node, not the rtc.

i2c-mpc.c has:

static const struct of_device_id mpc_i2c_of_match[] = {
	{.compatible = "fsl-i2c",},
	{},
};

MODULE_DEVICE_TABLE(of, mpc_i2c_of_match);

/* Structure for a device driver */

static struct of_platform_driver mpc_i2c_driver = {
	.match_table	= mpc_i2c_of_match,
	.probe		= fsl_i2c_probe,
	.remove		= __devexit_p(fsl_i2c_remove),
	.driver		= {
		.owner	= THIS_MODULE,
		.name	= DRV_NAME,
	},
};

That should match:

		i2c@80003000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x80003000 0x1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;

			rtc@32 {
				device_type = "rtc";
				compatible = "ricoh,rs5c372a";
				reg = <0x32>;
			};
		};

This code works on my mpc5200 board.

Maybe fsl_i2c_probe() is failing?

Add some printks in i2c-mpc to help debug the problem. Any errors from i2c-mpc in dmesg?

Quoted 7 lines

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

Signature · 2 lines
Jon Smirl
[email protected]
#12 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 22 lines · Jon Smirl

i2c-mpc.c has:

static const struct of_device_id mpc_i2c_of_match[] = {
	{.compatible = "fsl-i2c",},
	{},
};

MODULE_DEVICE_TABLE(of, mpc_i2c_of_match);

/* Structure for a device driver */

static struct of_platform_driver mpc_i2c_driver = {
	.match_table	= mpc_i2c_of_match,
	.probe		= fsl_i2c_probe,
	.remove		= __devexit_p(fsl_i2c_remove),
	.driver		= {
		.owner	= THIS_MODULE,
		.name	= DRV_NAME,
	},
};

That should match:

Quoted 15 lines
		i2c@80003000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x80003000 0x1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;

			rtc@32 {
				device_type = "rtc";
				compatible = "ricoh,rs5c372a";
				reg = <0x32>;
			};
		};

It should, but it doesn't.

Quoted 1 line

This code works on my mpc5200 board.

Don't know which 5200 board you have, but, for example lite5200 has

			compatible = "fsl,mpc5200-i2c","fsl-i2c";

see the difference?

Quoted 1 line

Maybe fsl_i2c_probe() is failing?

It has a printk at each error case (ok, except kzalloc, but I don't think that is the case), I see none of them.

Quoted 2 lines

Add some printks in i2c-mpc to help debug the problem. Any errors from i2c-mpc in dmesg?

None, and, as I said, there are no error messages from it, so, it doesn't get called at all. To be quite sure I added a printk at the entry - as expected it didn't get printed.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#13 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 55 lines · Guennadi Liakhovetski
Quoted 22 lines · Jon Smirl

i2c-mpc.c has:

static const struct of_device_id mpc_i2c_of_match[] = {
      {.compatible = "fsl-i2c",},
      {},
};

MODULE_DEVICE_TABLE(of, mpc_i2c_of_match);

/* Structure for a device driver */
static struct of_platform_driver mpc_i2c_driver = {

      .match_table    = mpc_i2c_of_match,
      .probe          = fsl_i2c_probe,
      .remove         = __devexit_p(fsl_i2c_remove),
      .driver         = {
              .owner  = THIS_MODULE,
              .name   = DRV_NAME,
      },
};

That should match:

Quoted 15 lines
              i2c@80003000 {
                      #address-cells = <1>;
                      #size-cells = <0>;
                      cell-index = <0>;
                      compatible = "fsl-i2c";
                      reg = <0x80003000 0x1000>;
                      interrupts = <5 2>;
                      interrupt-parent = <&mpic>;

                      rtc@32 {
                              device_type = "rtc";
                              compatible = "ricoh,rs5c372a";
                              reg = <0x32>;
                      };
              };

It should, but it doesn't.

Quoted 1 line

This code works on my mpc5200 board.

Don't know which 5200 board you have, but, for example lite5200 has

                       compatible = "fsl,mpc5200-i2c","fsl-i2c";

see the difference?

Quoted 1 line

Maybe fsl_i2c_probe() is failing?

It has a printk at each error case (ok, except kzalloc, but I don't think that is the case), I see none of them.

Quoted 6 lines
Quoted 2 lines

Add some printks in i2c-mpc to help debug the problem. Any errors from i2c-mpc in dmesg?

None, and, as I said, there are no error messages from it, so, it doesn't get called at all. To be quite sure I added a printk at the entry - as expected it didn't get printed.

Is i2c-mpc built into your kernel? It's not going to module auto-load because the names don't match - fsl-i2c and i2c-mpc.

But a message on init and make sure it is loading. static int __init fsl_i2c_init(void)

{
	int rv;

	rv = of_register_platform_driver(&mpc_i2c_driver);
	if (rv)
		printk(KERN_ERR DRV_NAME
		       " of_register_platform_driver failed (%i)\n", rv);
	return rv;
}
Quoted 7 lines

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

Signature · 2 lines
Jon Smirl
[email protected]
#14 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 2 lines · Jon Smirl

Is i2c-mpc built into your kernel? It's not going to module auto-load because the names don't match - fsl-i2c and i2c-mpc.

It is built into the kernel.

Thanks
Guennadi

Quoted 14 lines

But a message on init and make sure it is loading. static int __init fsl_i2c_init(void)

{
	int rv;

	rv = of_register_platform_driver(&mpc_i2c_driver);
	if (rv)
		printk(KERN_ERR DRV_NAME
		       " of_register_platform_driver failed (%i)\n", rv);
	return rv;
}
Quoted 1 line
Quoted 13 lines
Quoted 6 lines

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

Signature · 2 lines
Jon Smirl
[email protected]

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#15 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 6 lines · Guennadi Liakhovetski
Quoted 2 lines · Jon Smirl

Is i2c-mpc built into your kernel? It's not going to module auto-load because the names don't match - fsl-i2c and i2c-mpc.

It is built into the kernel.

Put a printk in it's init function to make sure it is initializing.

Next thing I do is put printks over in arch/powerpc/.. to tell me which strings from the device tree are being looked for.

You can also look in /proc/device_tree and make sure fsl-i2c is in there.

When you find the problem is will probably be something simple like a mismatch between _ and -. I have been down this path before and spent a day figuring out why a module wouldn't load and it was a simple typo.

Quoted 36 lines

Thanks
Guennadi

Quoted 23 lines

But a message on init and make sure it is loading. static int __init fsl_i2c_init(void)

{
      int rv;

      rv = of_register_platform_driver(&mpc_i2c_driver);
      if (rv)
              printk(KERN_ERR DRV_NAME
                     " of_register_platform_driver failed (%i)\n", rv);
      return rv;
}
Quoted 7 lines

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

Quoted 4 lines

--
Jon Smirl
[email protected]

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

Signature · 2 lines
Jon Smirl
[email protected]
#16 lore raw

[REGRESSION 2.6.27] i2c-mpc not probing on linkstation (was Re: [PATCH] powerpc: enable heap randomization for linkstations)

Quoted 10 lines · Jon Smirl
Quoted 6 lines · Guennadi Liakhovetski
Quoted 2 lines · Jon Smirl

Is i2c-mpc built into your kernel? It's not going to module auto-load because the names don't match - fsl-i2c and i2c-mpc.

It is built into the kernel.

Put a printk in it's init function to make sure it is initializing.

I don't need that, I see it here:

/sys/bus/of_platform/drivers/mpc-i2c

Quoted 9 lines

Next thing I do is put printks over in arch/powerpc/.. to tell me which strings from the device tree are being looked for.

You can also look in /proc/device_tree and make sure fsl-i2c is in there.

When you find the problem is will probably be something simple like a mismatch between _ and -. I have been down this path before and spent a day figuring out why a module wouldn't load and it was a simple typo.

Thanks, I know, that I can find the reason and, probably, a fix after a day of printk debugging. The thing is - I don't have this day, and I am sure there are people on this list, who can spot and fix the problem within minutes, that's why I posted it here after I realised, that 2 hours of me searching for the problem didn't bring any result.

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#17 lore raw

Re: [REGRESSION 2.6.27] i2c-mpc not probing on linkstation

Quoted 6 lines · Guennadi Liakhovetski
Quoted 1 line · Jon Smirl

Put a printk in it's init function to make sure it is initializing.

I don't need that, I see it here:

/sys/bus/of_platform/drivers/mpc-i2c

I also see this:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

lutz:/# tree /sys/bus/of_platform/drivers/mpc-i2c/
/sys/bus/of_platform/drivers/mpc-i2c/
|-- bind
|-- uevent
`-- unbind

0 directories, 3 files
lutz:/#
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Quoted 4 lines
Quoted 4 lines

Next thing I do is put printks over in arch/powerpc/.. to tell me which strings from the device tree are being looked for.

You can also look in /proc/device_tree and make sure fsl-i2c is in there.

Here is what I get in /proc/device_tree:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

lutz:/proc/device-tree# tree
.
|-- #address-cells
|-- #size-cells
|-- aliases
|   |-- name
|   |-- pci0
|   |-- serial0
|   `-- serial1
|-- chosen
|   |-- bootargs
|   |-- linux,platform
|   |-- linux,stdout-path
|   `-- name
|-- compatible
|-- cpus
|   |-- #address-cells
|   |-- #size-cells
|   |-- PowerPC,603e
|   |   |-- bus-frequency
|   |   |-- clock-frequency
|   |   |-- d-cache-size
|   |   |-- device_type
|   |   |-- i-cache-size
|   |   |-- name
|   |   |-- reg
|   |   `-- timebase-frequency
|   `-- name
|-- memory
|   |-- device_type
|   |-- name
|   `-- reg
|-- model
|-- name
`-- soc10x
    |-- #address-cells
    |-- #size-cells
    |-- compatible
    |-- device_type
    |-- i2c@80003000
    |   |-- #address-cells
    |   |-- #size-cells
    |   |-- cell-index
    |   |-- compatible
    |   |-- interrupt-parent
    |   |-- interrupts
    |   |-- name
    |   |-- reg
    |   `-- rtc@32
    |       |-- compatible
    |       |-- device_type
    |       |-- name
    |       `-- reg
    |-- interrupt-controller@80040000
    |   |-- #address-cells
    |   |-- #interrupt-cells
    |   |-- compatible
    |   |-- device_type
    |   |-- interrupt-controller
    |   |-- linux,phandle
    |   |-- name
    |   `-- reg
    |-- name
    |-- pci@fec00000
    |   |-- #address-cells
    |   |-- #interrupt-cells
    |   |-- #size-cells
    |   |-- bus-range
    |   |-- clock-frequency
    |   |-- compatible
    |   |-- device_type
    |   |-- interrupt-map
    |   |-- interrupt-map-mask
    |   |-- interrupt-parent
    |   |-- name
    |   |-- ranges
    |   `-- reg
    |-- ranges
    |-- reg
    |-- serial@80004500
    |   |-- cell-index
    |   |-- clock-frequency
    |   |-- compatible
    |   |-- current-speed
    |   |-- device_type
    |   |-- interrupt-parent
    |   |-- interrupts
    |   |-- name
    |   `-- reg
    |-- serial@80004600
    |   |-- cell-index
    |   |-- clock-frequency
    |   |-- compatible
    |   |-- current-speed
    |   |-- device_type
    |   |-- interrupt-parent
    |   |-- interrupts
    |   |-- name
    |   `-- reg
    `-- store-gathering

12 directories, 86 files
lutz:/proc/device-tree#
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Under that I see:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

lutz:/proc/device-tree# grep -r -i fsl .
Binary file ./soc10x/i2c@80003000/compatible matches
lutz:/proc/device-tree# 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

The contents of that file:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - fsl-i2c^@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Is there any further information that I can provide so that we can get things fixed?

Thanks,

Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#18 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Guennadi Liakhovetski
Quoted 12 lines · Guennadi Liakhovetski
Quoted 11 lines · Jon Smirl

That should match:

		i2c@80003000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x80003000 0x1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;
Quoted 8 lines
Quoted 6 lines
			rtc@32 {
				device_type = "rtc";
				compatible = "ricoh,rs5c372a";
				reg = <0x32>;
			};
		};

It should, but it doesn't.

Is the parent of the i2c node covered by the list passed to of_platform_bus_probe() on this board?

-Scott

#19 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 20 lines · Scott Wood
Quoted 19 lines · Guennadi Liakhovetski
Quoted 17 lines · Jon Smirl

That should match:

		i2c@80003000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x80003000 0x1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;

			rtc@32 {
				device_type = "rtc";
				compatible = "ricoh,rs5c372a";
				reg = <0x32>;
			};
		};
Quoted 4 lines
Quoted 1 line

It should, but it doesn't.

Is the parent of the i2c node covered by the list passed to of_platform_bus_probe() on this board?

You mean something like this:

static __initdata struct of_device_id storcenter_of_bus[] = {
        { .name = "soc", },
        {},
};

static int __init storcenter_device_probe(void)

{
        of_platform_bus_probe(NULL, storcenter_of_bus, NULL);
        return 0;
}

machine_device_initcall(storcenter, storcenter_device_probe);

? No, linkstation doesn't do that. Somehow, as this API has been introduced, linkstation has been left aside:-(

Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#20 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

Quoted 4 lines · Guennadi Liakhovetski
static __initdata struct of_device_id storcenter_of_bus[] = {
        { .name = "soc", },
        {},
};

Add .compatible = "simple-bus" to the list.

Quoted 8 lines

static int __init storcenter_device_probe(void)

{
        of_platform_bus_probe(NULL, storcenter_of_bus, NULL);
        return 0;
}

machine_device_initcall(storcenter, storcenter_device_probe);

? No, linkstation doesn't do that. Somehow, as this API has been introduced, linkstation has been left aside:-(

This is almost as much of a FAQ as interrupt mapping... I'm wondering if we should have stuck with a default list, and added a call to of_platform_bus_probe by common code that could be overridden by some board flag if really necessary, rather than have a bunch of duplication-with-mutation in the platform files.

-Scott

#21 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Rogério Brito

Hi,

This other patch was also sent some days ago and I would appreciate some feedback on it.

Regards, Rogério Brito.

Quoted 45 lines · Rogério Brito

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

---

arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +3 -4
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.27-rc4
-# Thu Aug 21 00:52:05 2008
+# Linux kernel version: 2.6.27
+# Mon Oct 13 01:11:21 2008
 #
 # CONFIG_PPC64 is not set
 
@@ -101,7 +101,7 @@ CONFIG_HOTPLUG=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
-CONFIG_COMPAT_BRK=y
+# CONFIG_COMPAT_BRK is not set
 CONFIG_BASE_FULL=y
 CONFIG_FUTEX=y
 CONFIG_ANON_INODES=y
@@ -1211,7 +1211,6 @@ CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_ALAUDA is not set
 # CONFIG_USB_STORAGE_ONETOUCH is not set
 # CONFIG_USB_STORAGE_KARMA is not set
-# CONFIG_USB_STORAGE_SIERRA is not set
 # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
 # CONFIG_USB_LIBUSUAL is not set
 
Signature · 4 lines
-- 
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
Applied
#22 lore raw

Re: [PATCH] powerpc: enable heap randomization for linkstations

In reply to Rogério Brito
Quoted 10 lines · On Oct 12, 2008, at 11:51 PM, Rog=E9rio Brito wrote:

The current defconfig for Linkstation/Kuroboxes has the "Disable Heap Randomization" option enabled.

Since some of these machines are facing the internet, it helps to have heap randomization enabled. This patch enables it.

---

applied to merge.

- k=

#23 lore raw
In reply to Rogério Brito
Quoted 6 lines · On Mon, 13 Oct 2008, Rog=E9rio Brito wrote:

From: Rog=E9rio Brito <[email protected]>
=20
Since Linkstations and Kuroboxes often have *very* little memory (as they are embedded systems), it is desirable to get their kernels compiled optimized for size.
=20

Quoted 7 lines

=20
---
=20
I have been using kernels optimized for size on my Kurobox (standard) for many different releases and I have experienced no problem with this option enabled. Thus, this patch.

The comment for this option says: "watch out for broken compilers," if=20 this doesn't hold any more, it should be remove, if it still holds, I=20 wouldn't turn this on by default, as I don't think we can test all=20 possible (cross- or native-) compilers users might want to use. In any=20 case this is one of options that users can select themselves, if it suits= =20
them. Also I don't think your CC list is correct, you wanted to send this= =20
to the powerpc list and one of powerpc / subarch maintainer.

Thanks
Guennadi

Quoted 2 lines

=20
--- linux/arch/powerpc/configs/linkstation_defconfig.old=092008-10-13 00:=

33:00.000000000 -0300

Quoted 1 line

+++ linux/arch/powerpc/configs/linkstation_defconfig=092008-10-13 00:38:5=

8.000000000 -0300

Quoted 12 lines
(quoted diff) +1 -1
@@ -90,7 +90,7 @@ CONFIG_NAMESPACES=3Dy
 # CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=3Dy
 CONFIG_INITRAMFS_SOURCE=3D""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=3Dy
 CONFIG_SYSCTL=3Dy
 # CONFIG_EMBEDDED is not set
 CONFIG_SYSCTL_SYSCALL=3Dy

=20
=20
--=20

Quoted 8 lines

Rog=E9rio Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
_______________________________________________
Linuxppc-dev mailing list
[email protected]
https://ozlabs.org/mailman/listinfo/linuxppc-dev
=20

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer

#24 lore raw

Hi, Guennadi.

Quoted 12 lines · Guennadi Liakhovetski
Quoted 10 lines · Rogério Brito

From: Rogério Brito <[email protected]>

Since Linkstations and Kuroboxes often have *very* little memory (as they are embedded systems), it is desirable to get their kernels compiled optimized for size.

---

Quoted 7 lines
Quoted 3 lines

I have been using kernels optimized for size on my Kurobox (standard) for many different releases and I have experienced no problem with this option enabled. Thus, this patch.

The comment for this option says: "watch out for broken compilers," if this doesn't hold any more, it should be remove, if it still holds, I wouldn't turn this on by default, as I don't think we can test all

Pragmatically speaking, -O2 can be broken too (and see the amount of ICEs that you can get with newer kernels even compiling with -O2). Unless you prove that the compiler is correct and keeps all its invariants, then you can rely on this. But, pragmatically speaking again, gcc has bugs.

But leaving the mathematical situation aside (Dijkstra would have spanked all of us here :)), as I mentioned below the signed off line, I have been using -Os and it is working fine. It's serving me quite well and with a decent uptime:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

lutz:~# uptime
 19:22:53 up 17 days,  5:56,  1 user,  load average: 0.00, 0.00, 0.00
lutz:~# uname -a
Linux lutz 2.6.27-rc6.try02 #8 Fri Sep 26 11:29:55 BRT 2008 ppc GNU/Linux
lutz:~#
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

And, despite the 0.00 load, I'm streaming music with it via mt-daapd and serving cifs mounts.

Quoted 3 lines

possible (cross- or native-) compilers users might want to use. In any case this is one of options that users can select themselves, if it suits them.

And that is, not to mention, with a very home-brew and quick'n'dirty cross-compiled kernel (with a vanilla gcc 4.2.0 taken straight from gcc.gnu.org; the same with the kernel: no patches applied).

Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
#25 lore raw
In reply to Rogério Brito

Hi,

It's been some days since I sent the patch below. I would appreciate if any feedback was given.

Thanks, Rogério Brito.

Quoted 31 lines · Rogério Brito

From: Rogério Brito <[email protected]>

Since Linkstations and Kuroboxes often have *very* little memory (as they are embedded systems), it is desirable to get their kernels compiled optimized for size.

---

I have been using kernels optimized for size on my Kurobox (standard) for many different releases and I have experienced no problem with this option enabled. Thus, this patch.

arch/powerpc/configs/linkstation_defconfig renamed from arch/powerpc/configs/linkstation_defconfig.old +1 -1
@@ -90,7 +90,7 @@ CONFIG_NAMESPACES=y
 # CONFIG_PID_NS is not set
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 CONFIG_SYSCTL=y
 # CONFIG_EMBEDDED is not set
 CONFIG_SYSCTL_SYSCALL=y
Signature · 4 lines
-- 
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org
Signature · 3 lines
Rogério Brito : rbrito@{mackenzie,ime.usp}.br : GPG key 1024D/7C2CAEB8
http://www.ime.usp.br/~rbrito : http://meusite.mackenzie.com.br/rbrito
Projects: algorithms.berlios.de : lame.sf.net : vrms.alioth.debian.org