Re: [GIT PULL] Two omap fixes for v3.18 merge window

2014-10-15 Thread Olof Johansson
On Fri, Oct 10, 2014 at 1:49 PM, Tony Lindgren t...@atomide.com wrote:
 The following changes since commit f86dc4b04dd5292cae3708c16ca6e46dbb5c95fa:

   Merge tag 'defconfig-for-linus' of 
 git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc (2014-10-08 
 17:38:52 -0400)

 are available in the git repository at:

   git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap 
 tags/fixes-for-v3.18-merge-window

Merged, thanks.


-Olof
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ARM: dts: sbc-t3x: add DVI display data

2014-10-15 Thread Dmitry Lifshitz
Add DSS related pinmux and display data nodes required to support
DVI video out on SBC-T3530, SBC-T3730 and SBC-T3517.

Signed-off-by: Dmitry Lifshitz lifsh...@compulab.co.il
---
 arch/arm/boot/dts/omap3-cm-t3517.dts  |   22 +++
 arch/arm/boot/dts/omap3-cm-t3530.dts  |   22 +++
 arch/arm/boot/dts/omap3-cm-t3730.dts  |   24 
 arch/arm/boot/dts/omap3-cm-t3x.dtsi   |   28 +++
 arch/arm/boot/dts/omap3-sb-t35.dtsi   |   49 +
 arch/arm/boot/dts/omap3-sbc-t3517.dts |   14 +
 arch/arm/boot/dts/omap3-sbc-t3530.dts |   14 +
 arch/arm/boot/dts/omap3-sbc-t3730.dts |   14 +
 8 files changed, 187 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/omap3-cm-t3517.dts 
b/arch/arm/boot/dts/omap3-cm-t3517.dts
index d00502f..65abe17 100644
--- a/arch/arm/boot/dts/omap3-cm-t3517.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3517.dts
@@ -93,6 +93,17 @@
OMAP3_CORE1_IOPAD(0x2184, PIN_OUTPUT | MUX_MODE4)   
/* mcbsp4_clkx.gpio_152 - USB HUB RST */
;
};
+
+   dss_dpi_pins_cm_t3517: pinmux_dss_dpi_pins_cm_t3517 {
+   pinctrl-single,pins = 
+   OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0)   
/* dss_data0.dss_data0 */
+   OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0)   
/* dss_data1.dss_data1 */
+   OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0)   
/* dss_data2.dss_data2 */
+   OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0)   
/* dss_data3.dss_data3 */
+   OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0)   
/* dss_data4.dss_data4 */
+   OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0)   
/* dss_data5.dss_data5 */
+   ;
+   };
 };
 
 hsusb1_phy {
@@ -134,3 +145,14 @@
bus-width = 4;
cap-power-off-card;
 };
+
+dss {
+   status = ok;
+
+   pinctrl-names = default;
+   pinctrl-0 = 
+   dss_dpi_pins_common
+   dss_dpi_pins_cm_t3517
+   ;
+};
+
diff --git a/arch/arm/boot/dts/omap3-cm-t3530.dts 
b/arch/arm/boot/dts/omap3-cm-t3530.dts
index d145849..c1465a4 100644
--- a/arch/arm/boot/dts/omap3-cm-t3530.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3530.dts
@@ -36,6 +36,17 @@
OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT | MUX_MODE1)
/* sdmmc2_dat7.sdmmc2_clkin */
;
};
+
+   dss_dpi_pins_cm_t3530: pinmux_dss_dpi_pins_cm_t3530 {
+   pinctrl-single,pins = 
+   OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0)   
/* dss_data0.dss_data0 */
+   OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0)   
/* dss_data1.dss_data1 */
+   OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0)   
/* dss_data2.dss_data2 */
+   OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0)   
/* dss_data3.dss_data3 */
+   OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0)   
/* dss_data4.dss_data4 */
+   OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0)   
/* dss_data5.dss_data5 */
+   ;
+   };
 };
 
 mmc2 {
@@ -46,3 +57,14 @@
bus-width = 4;
cap-power-off-card;
 };
+
+dss {
+   status = ok;
+
+   pinctrl-names = default;
+   pinctrl-0 = 
+   dss_dpi_pins_common
+   dss_dpi_pins_cm_t3530
+   ;
+};
+
diff --git a/arch/arm/boot/dts/omap3-cm-t3730.dts 
b/arch/arm/boot/dts/omap3-cm-t3730.dts
index b3f9a50..4b36d80 100644
--- a/arch/arm/boot/dts/omap3-cm-t3730.dts
+++ b/arch/arm/boot/dts/omap3-cm-t3730.dts
@@ -31,6 +31,19 @@
};
 };
 
+omap3_pmx_wkup {
+   dss_dpi_pins_cm_t3730: pinmux_dss_dpi_pins_cm_t3730 {
+   pinctrl-single,pins = 
+   0x0a (PIN_OUTPUT | MUX_MODE3)   /* sys_boot0.dss_data18 
*/
+   0x0c (PIN_OUTPUT | MUX_MODE3)   /* sys_boot1.dss_data19 
*/
+   0x10 (PIN_OUTPUT | MUX_MODE3)   /* sys_boot3.dss_data20 
*/
+   0x12 (PIN_OUTPUT | MUX_MODE3)   /* sys_boot4.dss_data21 
*/
+   0x14 (PIN_OUTPUT | MUX_MODE3)   /* sys_boot5.dss_data22 
*/
+   0x16 (PIN_OUTPUT | MUX_MODE3)   /* sys_boot6.dss_data23 
*/
+   ;
+   };
+};
+
 omap3_pmx_core {
 
mmc2_pins: pinmux_mmc2_pins {
@@ -61,3 +74,14 @@
bus-width = 4;
cap-power-off-card;
 };
+
+dss {
+   status = ok;
+
+   pinctrl-names = default;
+   pinctrl-0 = 
+   dss_dpi_pins_common
+   dss_dpi_pins_cm_t3730
+   ;
+};
+
diff --git a/arch/arm/boot/dts/omap3-cm-t3x.dtsi 
b/arch/arm/boot/dts/omap3-cm-t3x.dtsi
index c671a22..6b6c2f4 100644
--- 

Re: omap USB_DPLL not configured as per manual

2014-10-15 Thread Roger Quadros
On 10/14/2014 10:49 PM, Tero Kristo wrote:
 On 10/14/2014 01:47 PM, Roger Quadros wrote:
 Hi Tero,

 The USB_DPLL doesn't have recommended M/N settings as per the TRM [1]
 Thus the omapconf audit fails.

 Any ideas of how we can fix this up? Should we add a new clock.ops structure 
 for
 USB_DPLL to make sure that we don't violate the TRM recommended settings?
 or should we just add some flags in dpll_data? We would need a new 
 compatible id for sure.

 [1] - OMAP4460_ES1.x_NDA_TRM_vP.pdf - 3.6.3.9.5 DPLL_USB Preferred Settings
 
 The version of TRM I have doesn't have the recommended settings chapter, I 
 need to download the doc.
 
 I guess we probably should introduce new fields to the dpll_data for this, 
 does the TRM list an expected minimum divider / multiplier or just a single 
 pair of recommended values? Do the other DPLLs have similar values? Looking 
 at the DM I have here I see a recommended internal reference clock values for 
 the DPLLs (min/max) and is calculated based on the refclk + N value.
 

At least for the USB_DPLL it is single M:N pair for each possible sysclk 
frequency.
For other DPLLs they seem to depend on OPP as well as sys_clk.

cheers,
-roger


 panda4460 omapconf audit dpll -d usb
 |-|
 | DPLL_USB AUDIT (@OPP OPP100, sysclk=38.4MHz) | Current Setting | Expected  
 | STATUS |
 |-|
 | Status   | Locked  | Locked
 | Pass   |
 | Mode | Lock| Lock  
 | Pass   |
 | Autoidle Mode| Auto LPST   | Auto LPST 
 | Pass   |
 | Low-Power Mode   | Disabled| Disabled  
 | Pass   |
 | REGM4XEN Mode| Disabled| Disabled  
 | Pass   |
 | DCC Mode | Disabled| Disabled  
 | Pass   |
 | M Divider| 25  | 400   
 | FAIL   |
 | N Divider| 0   | 15
 | FAIL   |
 | Lock Frequency   | 960.0MHz| 960.0MHz  
 | Pass   |
 | M2 Divider   | 2   | 2 
 | Pass   |
 | CLKOUT Output Rate   | 480.0MHz| 480.0MHz  
 | Pass   |
 | CLKDCOLDO Output Rate| 960.0MHz| 960.0MHz  
 | Pass   |
 |-|

 cheers,
 -roger

 

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v6 07/18] ASoC: codecs/hdmi: Mark the maximum significant bits to HDMI codec

2014-10-15 Thread Mark Brown
On Tue, Oct 14, 2014 at 08:29:26PM +0300, Jyri Sarha wrote:
 HDMI audio can not have more than 24 bits even if on i2s bus there
 would be 32 bit samples. Mark this by adding .sig_bits = 24 to
 playback stream definition.

Applied, thanks.  Please use subject lines matching the style for the
subsystem (no codecs/).


signature.asc
Description: Digital signature


Re: [PATCH v6 08/18] ASoC: codecs/hdmi: HDMI codec doesn't benefit from pmdown delay

2014-10-15 Thread Mark Brown
On Tue, Oct 14, 2014 at 08:29:27PM +0300, Jyri Sarha wrote:
 Adds .ignore_pmdown_time = true to codec driver struct.
 
 HDMI codec is currently a dummy codec and doesn't benefit from pmdown
 delay. Even if in the future the codec would controll HDMI encoder, it
 would still be a digital to digital interface that should have no need
 for pmdown delay.

Applied, thanks.


signature.asc
Description: Digital signature


Re: cpuidle and SW sleep

2014-10-15 Thread Pramod Gurav
On Wed, Oct 15, 2014 at 10:25 AM, Ran Shalit ransha...@gmail.com wrote:
 Hello,

 Is there anyone who can please explain the relation between SW sleep
 (such as udelay), to change of C-state as done by cpuidle ?

These are two different things, Ran.
udelay is a way to put simple delay between two functions. The cpu
will continue to perform other operations in a multithreded platform.

CPUIdle sleep states are mainly to achieve power saving by programming
cpus to difference states depending on how much time (estimated) a cpu
is going to be idle with algorithm. So each state will have latency
associated with it - enter, exit latency. If the cpu idle time falls
within any of C-state's latency that will be programmed. In different
state cpu will be programmed with different modes to achieve diff
power saving.

 How is wakeup done ? As far as I understand udelay is sw delay not HW.
System Wake up can be achieved by programming a wakeup source such as keypad.


 Thanks for you comments,
 Ran
 --
 To unsubscribe from this list: send the line unsubscribe linux-pm in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Thanks and Regards
Pramod
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation

2014-10-15 Thread Tomi Valkeinen
Hi,

On 14/10/14 21:28, Felipe Balbi wrote:
 if we leave __exit annotation, driver can't be unbound
 through sysfs.
 
 Signed-off-by: Felipe Balbi ba...@ti.com
 ---
  drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c 
 b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 index ec2d132..9cbf1ce 100644
 --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 @@ -2619,7 +2619,7 @@ err0:
   return r;
  }
  
 -static int __exit omapfb_remove(struct platform_device *pdev)
 +static int omapfb_remove(struct platform_device *pdev)
  {
   struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
  
 @@ -2636,7 +2636,7 @@ static int __exit omapfb_remove(struct platform_device 
 *pdev)
  
  static struct platform_driver omapfb_driver = {
   .probe  = omapfb_probe,
 - .remove = __exit_p(omapfb_remove),
 + .remove = omapfb_remove,
   .driver = {
   .name   = omapfb,
   .owner  = THIS_MODULE,

Interesting. I don't know if I'm doing something funny, but without this
patch, I can unbind omapfb, kind of.

echo omapfb  unbind goes ok, but remove is obviously not called.
Somehow omapfb device is still unbound from the driver, as I can then
bind it again, causing probe to be called. Which breaks everything.

I would've thought that unbinding is not possible if remove is missing,
but that doesn't seem to be the case. I guess it just means that remove
is not called when the driver  device are unbound.

We have 18 __exit_p()s in omapdss and related drivers. I guess they are
all broken the same way.

Note that omapfb unbind  bind does not work even with this patch, but
results in a crash as some old state is left into omapdss. The same
happens also with unloading and loading omapfb module (but keeping
omapdss module loaded).

So there seems to be more issues around this.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()

2014-10-15 Thread Tomi Valkeinen
On 14/10/14 21:28, Felipe Balbi wrote:
 without MODULE_ALIAS(), omapfb won't get loaded
 automatically.
 
 Signed-off-by: Felipe Balbi ba...@ti.com
 ---
  drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c 
 b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 index 9cbf1ce..b4b9244 100644
 --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
  
  module_platform_driver(omapfb_driver);
  
 +MODULE_ALIAS(platform:omapfb);
  MODULE_AUTHOR(Tomi Valkeinen tomi.valkei...@nokia.com);
  MODULE_DESCRIPTION(OMAP2/3 Framebuffer);
  MODULE_LICENSE(GPL v2);
 

Thanks, I've queued this.

Unfortunately it's somewhat based on luck if the automatic loading works
correctly. We can't add more displays after omapfb has been probed, so
all the panel and encoder drivers have to be loaded before omapfb.

We have two workarounds there, which help the situation a bit. First is
that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
that if there are displays, but no main display (display0), then omapfb
returns EPROBE_DEFER.

So even with these workarounds it is possible that drivers for secondary
displays are loaded after omapfb, causing them to be ignored.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 3/3] arm: boot: dts: am437x-sk: fix lcd enable pin mux data

2014-10-15 Thread Tomi Valkeinen
On 14/10/14 21:28, Felipe Balbi wrote:
 Caused by a copy  paste error. Note that even with
 this bug AM437x SK display still works because GPIO
 mux mode is always enabled. It's still wrong to mux
 somebody else's pin.
 
 Luckily ball D25 (offset 0x238 - gpio5_8) on AM437x
 isn't used for anything.
 
 Signed-off-by: Felipe Balbi ba...@ti.com
 ---
  arch/arm/boot/dts/am437x-sk-evm.dts | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts 
 b/arch/arm/boot/dts/am437x-sk-evm.dts
 index 859ff3d..681be00 100644
 --- a/arch/arm/boot/dts/am437x-sk-evm.dts
 +++ b/arch/arm/boot/dts/am437x-sk-evm.dts
 @@ -320,8 +320,7 @@
  
   lcd_pins: lcd_pins {
   pinctrl-single,pins = 
 - /* GPIO 5_8 to select LCD / HDMI */
 - 0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7)
 + 0x1c (PIN_OUTPUT_PULLUP | MUX_MODE7) /* 
 gpcm_ad7.gpio1_7 */
   ;
   };
  };

I didn't verify the offset, but based on the comments this looks fine to me.

Acked-by: Tomi Valkeinen tomi.valkei...@ti.com

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()

2014-10-15 Thread Tomi Valkeinen
On 14/10/14 21:34, Felipe Balbi wrote:
 On Tue, Oct 14, 2014 at 01:28:54PM -0500, Felipe Balbi wrote:
 without MODULE_ALIAS(), omapfb won't get loaded
 automatically.

 Signed-off-by: Felipe Balbi ba...@ti.com
 
 little note here. This makes omapfb load automatically, but display
 still doesn't work with DSS as modules. Backlight is working and pixel
 clock is running just fine. Still, nothing on display.
 
 I thought I'd leave that for Tomi to deal with.

I presume this is about am437x-sk. I don't have the board, so there's
not too much I can do except send emails.

So the panel works fine if display drivers are built-in?

The compatible string seems to be wrong in the .dts file. It says
osddisplays,osd057T0559-34ts which is not the panel used. But that
shouldn't affect this.

What do you mean with pixel clock is running?

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()

2014-10-15 Thread Felipe Balbi
HI,

On Wed, Oct 15, 2014 at 03:46:10PM +0300, Tomi Valkeinen wrote:
 On 14/10/14 21:34, Felipe Balbi wrote:
  On Tue, Oct 14, 2014 at 01:28:54PM -0500, Felipe Balbi wrote:
  without MODULE_ALIAS(), omapfb won't get loaded
  automatically.
 
  Signed-off-by: Felipe Balbi ba...@ti.com
  
  little note here. This makes omapfb load automatically, but display
  still doesn't work with DSS as modules. Backlight is working and pixel
  clock is running just fine. Still, nothing on display.
  
  I thought I'd leave that for Tomi to deal with.
 
 I presume this is about am437x-sk. I don't have the board, so there's
 not too much I can do except send emails.
 
 So the panel works fine if display drivers are built-in?

yup.

 The compatible string seems to be wrong in the .dts file. It says
 osddisplays,osd057T0559-34ts which is not the panel used. But that
 shouldn't affect this.

I got that from Darren, IIRC. Still, if it's wrong, it's wrong. What
should it be ?

 What do you mean with pixel clock is running?

poking at the pixel clock with a scope, I can see it clocking.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()

2014-10-15 Thread Felipe Balbi
On Wed, Oct 15, 2014 at 03:20:19PM +0300, Tomi Valkeinen wrote:
 On 14/10/14 21:28, Felipe Balbi wrote:
  without MODULE_ALIAS(), omapfb won't get loaded
  automatically.
  
  Signed-off-by: Felipe Balbi ba...@ti.com
  ---
   drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
   1 file changed, 1 insertion(+)
  
  diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c 
  b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  index 9cbf1ce..b4b9244 100644
  --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
   
   module_platform_driver(omapfb_driver);
   
  +MODULE_ALIAS(platform:omapfb);
   MODULE_AUTHOR(Tomi Valkeinen tomi.valkei...@nokia.com);
   MODULE_DESCRIPTION(OMAP2/3 Framebuffer);
   MODULE_LICENSE(GPL v2);
  
 
 Thanks, I've queued this.
 
 Unfortunately it's somewhat based on luck if the automatic loading works
 correctly. We can't add more displays after omapfb has been probed, so
 all the panel and encoder drivers have to be loaded before omapfb.
 
 We have two workarounds there, which help the situation a bit. First is
 that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
 that if there are displays, but no main display (display0), then omapfb
 returns EPROBE_DEFER.
 
 So even with these workarounds it is possible that drivers for secondary
 displays are loaded after omapfb, causing them to be ignored.

then there is another case to fix, right ? :-)

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH] watchdog: Fix omap watchdogs to enable the magic close bit

2014-10-15 Thread Felipe Balbi
On Tue, Oct 14, 2014 at 12:25:19PM -0700, Tony Lindgren wrote:
 This allows testing the watchdog easily with distros just by
 doing pkill -9 watchdog.
 
 Reported-by: Thomas Dziedzic gos...@gmail.com
 Signed-off-by: Tony Lindgren t...@atomide.com

Reviewed-by: Felipe Balbi ba...@ti.com

 
 --- a/drivers/watchdog/omap_wdt.c
 +++ b/drivers/watchdog/omap_wdt.c
 @@ -189,7 +189,7 @@ static int omap_wdt_set_timeout(struct watchdog_device 
 *wdog,
  }
  
  static const struct watchdog_info omap_wdt_info = {
 - .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
 + .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
   .identity = OMAP Watchdog,
  };
  
 --- a/drivers/watchdog/retu_wdt.c
 +++ b/drivers/watchdog/retu_wdt.c
 @@ -94,7 +94,7 @@ static int retu_wdt_set_timeout(struct watchdog_device 
 *wdog,
  }
  
  static const struct watchdog_info retu_wdt_info = {
 - .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
 + .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
   .identity = Retu watchdog,
  };
  
 --- a/drivers/watchdog/twl4030_wdt.c
 +++ b/drivers/watchdog/twl4030_wdt.c
 @@ -57,7 +57,7 @@ static int twl4030_wdt_set_timeout(struct watchdog_device 
 *wdt,
  }
  
  static const struct watchdog_info twl4030_wdt_info = {
 - .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING,
 + .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE | WDIOF_KEEPALIVEPING,
   .identity = TWL4030 Watchdog,
  };
  
 --
 To unsubscribe from this list: send the line unsubscribe linux-omap in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation

2014-10-15 Thread Felipe Balbi
Hi,

On Wed, Oct 15, 2014 at 03:13:34PM +0300, Tomi Valkeinen wrote:
 Hi,
 
 On 14/10/14 21:28, Felipe Balbi wrote:
  if we leave __exit annotation, driver can't be unbound
  through sysfs.
  
  Signed-off-by: Felipe Balbi ba...@ti.com
  ---
   drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 4 ++--
   1 file changed, 2 insertions(+), 2 deletions(-)
  
  diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c 
  b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  index ec2d132..9cbf1ce 100644
  --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
  @@ -2619,7 +2619,7 @@ err0:
  return r;
   }
   
  -static int __exit omapfb_remove(struct platform_device *pdev)
  +static int omapfb_remove(struct platform_device *pdev)
   {
  struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
   
  @@ -2636,7 +2636,7 @@ static int __exit omapfb_remove(struct 
  platform_device *pdev)
   
   static struct platform_driver omapfb_driver = {
  .probe  = omapfb_probe,
  -   .remove = __exit_p(omapfb_remove),
  +   .remove = omapfb_remove,
  .driver = {
  .name   = omapfb,
  .owner  = THIS_MODULE,
 
 Interesting. I don't know if I'm doing something funny, but without this
 patch, I can unbind omapfb, kind of.
 
 echo omapfb  unbind goes ok, but remove is obviously not called.

remove isn't called because it won't exist if it's built-in. Look at the
definition of __exit_p()

 Somehow omapfb device is still unbound from the driver, as I can then
 bind it again, causing probe to be called. Which breaks everything.
 
 I would've thought that unbinding is not possible if remove is missing,
 but that doesn't seem to be the case. I guess it just means that remove
 is not called when the driver  device are unbound.

if no remove it provided on platform_driver structure, platform bus
assumes you have nothing to do on your -remove(), so you end up leaking
all resources you allocated on -probe() (unless you *really* don't need
to do anything on -remove).

 We have 18 __exit_p()s in omapdss and related drivers. I guess they are
 all broken the same way.

yup, I should've grepped.

 Note that omapfb unbind  bind does not work even with this patch, but
 results in a crash as some old state is left into omapdss. The same
 happens also with unloading and loading omapfb module (but keeping
 omapdss module loaded).

It worked fine for me. I unbound and bound omapfb multiple times.

 So there seems to be more issues around this.

quite a few more, I'd say

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v2 1/4] dwc3: exynos: Add support for SCLK present on Exynos7

2014-10-15 Thread Felipe Balbi
Hi,

On Tue, Oct 14, 2014 at 10:25:00AM +0530, Vivek Gautam wrote:
 Hi Felipe,
 
 
 On Tue, Oct 14, 2014 at 4:14 AM, Felipe Balbi ba...@ti.com wrote:
  Hi,
 
  On Mon, Oct 13, 2014 at 01:54:59PM +0900, Anton Tikhomirov wrote:
  Hi Vivek,
 
   Exynos7 also has a separate special gate clock going to the IP
   apart from the usual AHB clock. So add support for the same.
 
  As we discussed before, Exynos7 SoCs have 7 clocks to be controlled
  by the driver. Adding only sclk is not enough.
 
  
   Signed-off-by: Vivek Gautam gautam.vi...@samsung.com
   ---
drivers/usb/dwc3/dwc3-exynos.c |   16 
1 file changed, 16 insertions(+)
  
   diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-
   exynos.c
   index 3951a65..7dc6a98 100644
   --- a/drivers/usb/dwc3/dwc3-exynos.c
   +++ b/drivers/usb/dwc3/dwc3-exynos.c
   @@ -35,6 +35,7 @@ struct dwc3_exynos {
   struct device   *dev;
  
   struct clk  *clk;
 
  The clock clk in Exynos5 just gated all that above 7 clocks, which
  we should control separately now in Exynos7.
 
 
  should I drop this patch for now ?
 
 Yes, better to hold this for some time till we get more clarity
 from our h/w team.

now dropped. Please a new one if needed.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation

2014-10-15 Thread Tomi Valkeinen
On 15/10/14 17:41, Felipe Balbi wrote:

 Interesting. I don't know if I'm doing something funny, but without this
 patch, I can unbind omapfb, kind of.

 echo omapfb  unbind goes ok, but remove is obviously not called.
 
 remove isn't called because it won't exist if it's built-in. Look at the
 definition of __exit_p()

Yes, that's what I meant with obviously.

 Somehow omapfb device is still unbound from the driver, as I can then
 bind it again, causing probe to be called. Which breaks everything.

 I would've thought that unbinding is not possible if remove is missing,
 but that doesn't seem to be the case. I guess it just means that remove
 is not called when the driver  device are unbound.
 
 if no remove it provided on platform_driver structure, platform bus
 assumes you have nothing to do on your -remove(), so you end up leaking
 all resources you allocated on -probe() (unless you *really* don't need
 to do anything on -remove).

Yep. That's quite odd, still. grep shows quite many uses of __exit_p(),
and all for remove callback. So, if you have something to release in
remove(), you should set it always, for both module and built-in. And if
you don't have anything to release, you would always just set .release
to NULL.

I mean, what's the use case for __exit_p()? With a quick glance, at
least some of the other users also use __exit_p() the same way omapdss
does (i.e. in the wrong way).

 We have 18 __exit_p()s in omapdss and related drivers. I guess they are
 all broken the same way.
 
 yup, I should've grepped.
 
 Note that omapfb unbind  bind does not work even with this patch, but
 results in a crash as some old state is left into omapdss. The same
 happens also with unloading and loading omapfb module (but keeping
 omapdss module loaded).
 
 It worked fine for me. I unbound and bound omapfb multiple times.

Hmm, ok. Odd, the bug was quite clear and I think it should happen every
time. Well, I was using omap4. If you used AM4xx, that's basically omap3
DSS. Maybe there's a diff there.

 So there seems to be more issues around this.
 
 quite a few more, I'd say

Yep, I'll have a look at this.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()

2014-10-15 Thread Tomi Valkeinen
On 15/10/14 17:38, Felipe Balbi wrote:
 On Wed, Oct 15, 2014 at 03:20:19PM +0300, Tomi Valkeinen wrote:
 On 14/10/14 21:28, Felipe Balbi wrote:
 without MODULE_ALIAS(), omapfb won't get loaded
 automatically.

 Signed-off-by: Felipe Balbi ba...@ti.com
 ---
  drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
  1 file changed, 1 insertion(+)

 diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c 
 b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 index 9cbf1ce..b4b9244 100644
 --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
 @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
  
  module_platform_driver(omapfb_driver);
  
 +MODULE_ALIAS(platform:omapfb);
  MODULE_AUTHOR(Tomi Valkeinen tomi.valkei...@nokia.com);
  MODULE_DESCRIPTION(OMAP2/3 Framebuffer);
  MODULE_LICENSE(GPL v2);


 Thanks, I've queued this.

 Unfortunately it's somewhat based on luck if the automatic loading works
 correctly. We can't add more displays after omapfb has been probed, so
 all the panel and encoder drivers have to be loaded before omapfb.

 We have two workarounds there, which help the situation a bit. First is
 that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
 that if there are displays, but no main display (display0), then omapfb
 returns EPROBE_DEFER.

 So even with these workarounds it is possible that drivers for secondary
 displays are loaded after omapfb, causing them to be ignored.
 
 then there is another case to fix, right ? :-)

Yes, but don't hold your breath. The issue's been there for ages and no
good solutions have been found. The same problem is there for omapdrm.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation

2014-10-15 Thread Felipe Balbi
Hi,

On Wed, Oct 15, 2014 at 06:43:40PM +0300, Tomi Valkeinen wrote:
  Somehow omapfb device is still unbound from the driver, as I can then
  bind it again, causing probe to be called. Which breaks everything.
 
  I would've thought that unbinding is not possible if remove is missing,
  but that doesn't seem to be the case. I guess it just means that remove
  is not called when the driver  device are unbound.
  
  if no remove it provided on platform_driver structure, platform bus
  assumes you have nothing to do on your -remove(), so you end up leaking
  all resources you allocated on -probe() (unless you *really* don't need
  to do anything on -remove).
 
 Yep. That's quite odd, still. grep shows quite many uses of __exit_p(),
 and all for remove callback. So, if you have something to release in
 remove(), you should set it always, for both module and built-in. And if
 you don't have anything to release, you would always just set .release
 to NULL.
 
 I mean, what's the use case for __exit_p()? With a quick glance, at
 least some of the other users also use __exit_p() the same way omapdss
 does (i.e. in the wrong way).

__exit_p() meant something else a few years back, perhaps those were
left over from some tree-wide cleanups.

  We have 18 __exit_p()s in omapdss and related drivers. I guess they are
  all broken the same way.
  
  yup, I should've grepped.
  
  Note that omapfb unbind  bind does not work even with this patch, but
  results in a crash as some old state is left into omapdss. The same
  happens also with unloading and loading omapfb module (but keeping
  omapdss module loaded).
  
  It worked fine for me. I unbound and bound omapfb multiple times.
 
 Hmm, ok. Odd, the bug was quite clear and I think it should happen every
 time. Well, I was using omap4. If you used AM4xx, that's basically omap3
 DSS. Maybe there's a diff there.

could very well be :-)

  So there seems to be more issues around this.
  
  quite a few more, I'd say
 
 Yep, I'll have a look at this.

alright

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 09/13] dmaengine: edma: check for echan-edesc = NULL in edma_dma_pause()

2014-10-15 Thread Vinod Koul
On Mon, Sep 29, 2014 at 08:06:45PM +0200, Sebastian Andrzej Siewior wrote:
 I added book keeping of whether or not the 8250-dma driver has an RX
 transfer pending or not so we don't BUG here if it calls
 dmaengine_pause() on a channel which has not a pending transfer. Guess
 what, this is not enough.
 The following can be triggered with a busy RX channel and hackbench in
 background:
 - DMA transfer completes. The callback is delayed via
   vchan_cookie_complete() into a tasklet so it das not happen asap.
 - hackbench keeps the system busy so the tasklet does not run soon.
 - the UART collected enough data and generates an timeout-interrupt.
   Since 8250-dma *thinks* the DMA-transfer is still pending it tries to
   cancel it via invoking dmaengine_pause() first. This causes the segfault
   because echan-edesc is NULL now that the transfer completed (however
   the callback did not run yet).
 
 With this patch we don't BUG in the scenario described.

Applied thanks

-- 
~Vinod
 
 Cc: vinod.k...@intel.com
 Signed-off-by: Sebastian Andrzej Siewior bige...@linutronix.de
 ---
  drivers/dma/edma.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c
 index 7b65633f495e..123f578d6dd3 100644
 --- a/drivers/dma/edma.c
 +++ b/drivers/dma/edma.c
 @@ -288,7 +288,7 @@ static int edma_slave_config(struct edma_chan *echan,
  static int edma_dma_pause(struct edma_chan *echan)
  {
   /* Pause/Resume only allowed with cyclic mode */
 - if (!echan-edesc-cyclic)
 + if (!echan-edesc || !echan-edesc-cyclic)
   return -EINVAL;
  
   edma_pause(echan-ch_num);
 -- 
 2.1.0
 

-- 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 09/13] dmaengine: edma: check for echan-edesc = NULL in edma_dma_pause()

2014-10-15 Thread Vinod Koul
On Mon, Sep 29, 2014 at 08:06:45PM +0200, Sebastian Andrzej Siewior wrote:
 I added book keeping of whether or not the 8250-dma driver has an RX
 transfer pending or not so we don't BUG here if it calls
 dmaengine_pause() on a channel which has not a pending transfer. Guess
 what, this is not enough.
 The following can be triggered with a busy RX channel and hackbench in
 background:
 - DMA transfer completes. The callback is delayed via
   vchan_cookie_complete() into a tasklet so it das not happen asap.
 - hackbench keeps the system busy so the tasklet does not run soon.
 - the UART collected enough data and generates an timeout-interrupt.
   Since 8250-dma *thinks* the DMA-transfer is still pending it tries to
   cancel it via invoking dmaengine_pause() first. This causes the segfault
   because echan-edesc is NULL now that the transfer completed (however
   the callback did not run yet).
 
 With this patch we don't BUG in the scenario described.

Applied, thanks

-- 
~Vinod

 
 Cc: vinod.k...@intel.com
 Signed-off-by: Sebastian Andrzej Siewior bige...@linutronix.de
 ---
  drivers/dma/edma.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c
 index 7b65633f495e..123f578d6dd3 100644
 --- a/drivers/dma/edma.c
 +++ b/drivers/dma/edma.c
 @@ -288,7 +288,7 @@ static int edma_slave_config(struct edma_chan *echan,
  static int edma_dma_pause(struct edma_chan *echan)
  {
   /* Pause/Resume only allowed with cyclic mode */
 - if (!echan-edesc-cyclic)
 + if (!echan-edesc || !echan-edesc-cyclic)
   return -EINVAL;
  
   edma_pause(echan-ch_num);
 -- 
 2.1.0
 

-- 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/12] rtc: omap: fixes and power-off feature

2014-10-15 Thread Felipe Balbi
Hi,

On Thu, Oct 09, 2014 at 09:06:22PM +0200, Johan Hovold wrote:
 This series fixes a few issues with the omap rtc-driver, cleans up a bit
 and finally adds support for the PMIC control feature found in some
 revisions of this RTC IP block.
 
 Ultimately, this allows for powering off the Beaglebone and waking it up
 again on RTC alarms.
 
 I noticed yesterday that Lokesh Vutla recently posted some patches to
 add regulator support to this driver. [1] While that series has some
 issues that needs to be addressed, I still think it could be a good idea
 to rebase my pmic_power_en patch on top of it as it adds some long
 overdue device abstraction. That would be needed anyway in order to
 support the new power-off infrastructure that's in the pipe in a clean
 way. [2]
 
 So my suggestion is to merge the first seven patches, rebase Lokesh
 series on top of that, and then I rebase my final five patches on top
 of that in turn. Hopefully, the new power-off handler call chain will
 have stabilised by then.

BTW, how do you test this series ?

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 00/12] rtc: omap: fixes and power-off feature

2014-10-15 Thread Johan Hovold
On Wed, Oct 15, 2014 at 11:55:02AM -0500, Felipe Balbi wrote:
 Hi,
 
 On Thu, Oct 09, 2014 at 09:06:22PM +0200, Johan Hovold wrote:
  This series fixes a few issues with the omap rtc-driver, cleans up a bit
  and finally adds support for the PMIC control feature found in some
  revisions of this RTC IP block.
  
  Ultimately, this allows for powering off the Beaglebone and waking it up
  again on RTC alarms.
  
  I noticed yesterday that Lokesh Vutla recently posted some patches to
  add regulator support to this driver. [1] While that series has some
  issues that needs to be addressed, I still think it could be a good idea
  to rebase my pmic_power_en patch on top of it as it adds some long
  overdue device abstraction. That would be needed anyway in order to
  support the new power-off infrastructure that's in the pipe in a clean
  way. [2]
  
  So my suggestion is to merge the first seven patches, rebase Lokesh
  series on top of that, and then I rebase my final five patches on top
  of that in turn. Hopefully, the new power-off handler call chain will
  have stabilised by then.
 
 BTW, how do you test this series ?

Set a 30 second wakealarm using the sysfs attribute of the rtc class
device and power off the BBB:

echo +30 wakealarm; poweroff

Johan
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/12] rtc: omap: fixes and power-off feature

2014-10-15 Thread Felipe Balbi
On Wed, Oct 15, 2014 at 07:06:28PM +0200, Johan Hovold wrote:
 On Wed, Oct 15, 2014 at 11:55:02AM -0500, Felipe Balbi wrote:
  Hi,
  
  On Thu, Oct 09, 2014 at 09:06:22PM +0200, Johan Hovold wrote:
   This series fixes a few issues with the omap rtc-driver, cleans up a bit
   and finally adds support for the PMIC control feature found in some
   revisions of this RTC IP block.
   
   Ultimately, this allows for powering off the Beaglebone and waking it up
   again on RTC alarms.
   
   I noticed yesterday that Lokesh Vutla recently posted some patches to
   add regulator support to this driver. [1] While that series has some
   issues that needs to be addressed, I still think it could be a good idea
   to rebase my pmic_power_en patch on top of it as it adds some long
   overdue device abstraction. That would be needed anyway in order to
   support the new power-off infrastructure that's in the pipe in a clean
   way. [2]
   
   So my suggestion is to merge the first seven patches, rebase Lokesh
   series on top of that, and then I rebase my final five patches on top
   of that in turn. Hopefully, the new power-off handler call chain will
   have stabilised by then.
  
  BTW, how do you test this series ?
 
 Set a 30 second wakealarm using the sysfs attribute of the rtc class
 device and power off the BBB:
 
   echo +30 wakealarm; poweroff

sweet It worked just fine :-)

Too bad there's yet another DRM bug:

[  271.150158] Kernel panic - not syncing: Attempted to kill init! 
exitcode=0x
[  271.150158] 
[  271.159725] CPU: 0 PID: 1 Comm: systemd-shutdow Not tainted 
3.17.0-08392-g7fe2269-dirty #326
[  271.168567] [c00175a4] (unwind_backtrace) from [c00132f0] 
(show_stack+0x20/0x24)
[  271.176668] [c00132f0] (show_stack) from [c06573a4] 
(dump_stack+0x8c/0xa4)
[  271.184215] [c06573a4] (dump_stack) from [c0654f10] (panic+0xa0/0x220)
[  271.191405] [c0654f10] (panic) from [c0049e54] (do_exit+0x974/0x9d0)
[  271.198410] [c0049e54] (do_exit) from [c0067694] (SyS_reboot+0x14c/0x1e8)
[  271.205870] [c0067694] (SyS_reboot) from [c000f080] 
(ret_fast_syscall+0x0/0x48)
[  271.214023] drm_kms_helper: panic occurred, switching back to text console
[  271.221312] ---[ end Kernel panic - not syncing: Attempted to kill init! 
exitcode=0x

In any case, board still powered up after 30 seconds(-ish). So this gets
a:

Tested-by: Felipe Balbi ba...@ti.com

-- 
balbi


signature.asc
Description: Digital signature


Re: RCU bug with v3.17-rc3 ?

2014-10-15 Thread Russell King - ARM Linux
On Tue, Oct 14, 2014 at 04:06:40AM +0200, Greg KH wrote:
 On Mon, Oct 13, 2014 at 12:43:07PM +0100, Russell King - ARM Linux wrote:
  I think the only viable solution here is that:
  
  1. We blacklist the bad compiler versions outright in the kernel.
 
 Yes, please do this, it's what we have done for other buggy compiler
 versions, no need to do something different here.
 
  Remember, it's the distro's choice to fix these buggy compilers, so the
  onus is on _them_ to deal with the mess they've created by doing so.
 
 I totally agree.
 
 Is someone going to send this patch, or do I have to write it myself?

As I said, I have a patch in progress, but it seems that there needed
to be some discussion about exactly which compiler versions are affected.
It seems that it's not as trivial as looking at the GCC bug entry.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: RCU bug with v3.17-rc3 ?

2014-10-15 Thread Russell King - ARM Linux
On Wed, Oct 15, 2014 at 10:23:10PM +0100, Russell King - ARM Linux wrote:
 As I said, I have a patch in progress, but it seems that there needed
 to be some discussion about exactly which compiler versions are affected.
 It seems that it's not as trivial as looking at the GCC bug entry.

... and in any case, it has been a known bug for well over a year now,
and it seems that it doesn't affect _that_ many people.  So taking some
extra time to get it properly correct is the _right_ thing to do.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854

2014-10-15 Thread Russell King
These stock GCC versions miscompile the kernel by incorrectly optimising
the function epilogue code - by first increasing the stack pointer, and
then loading entries from below the stack.  This means that an opportune
interrupt or exception will corrupt the current function's saved state,
which may result in the parent function seeing different register
values.

As this bug has been known to result in corrupted filesystems, and these
buggy compiler versions seem to be frequently used, we have little
option but to blacklist these compiler versions.

Distributions may have fixed PR58854, but as their compilers are totally
indistinguishable from the buggy versions, it is unfortunate that this
also results in those also being blacklisted.  Given the filesystem
corruption potential of the original, this is the lesser evil.  People
who want to build with their fixed compiler versions will need to adjust
the kernel source.  (Distros need to think about the implications of
fixing such a compiler bug, and consider how to ensure that their fixed
compiler versions can be detected if they wish to avoid this.)

Signed-off-by: Russell King rmk+ker...@arm.linux.org.uk
---

This is what I came up with - this places the build check right at the
beginning of the kernel build, rather than at some point where
linux/compiler.h gets included.  Note that this is where we have
previous ARM specific GCC version blacklisting.  I'm blacklisting
GCC 4.8.0 to GCC 4.8.2 inclussive, which seems to be the right versions
for stock GCC.

I was in two minds whether to include 4.8.3 as Linaro released a buggy
toolchain which identifies itself as 4.8.3, but I decided that's also
a distro problem.  IMHO Linaro should really think about taking that
compiler down given the seriousness of this bug and it being
indistinguishable from the fixed stock version.

 arch/arm/kernel/asm-offsets.c | 12 +++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
index 713e807621d2..e14c1a12b414 100644
--- a/arch/arm/kernel/asm-offsets.c
+++ b/arch/arm/kernel/asm-offsets.c
@@ -10,6 +10,7 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
+#include linux/compiler.h
 #include linux/sched.h
 #include linux/mm.h
 #include linux/dma-mapping.h
@@ -39,10 +40,19 @@
  * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
  *(http://gcc.gnu.org/PR8896) and incorrect structure
  *   initialisation in fs/jffs2/erase.c
+ * GCC 4.8.0-4.8.2: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
+ *   miscompiles find_get_entry(), and can result in EXT3 and EXT4
+ *   filesystem corruption (possibly other FS too).
  */
+#ifdef __GNUC__
 #if (__GNUC__ == 3  __GNUC_MINOR__  3)
 #error Your compiler is too buggy; it is known to miscompile kernels.
-#errorKnown good compilers: 3.3
+#errorKnown good compilers: 3.3, 4.x
+#endif
+#if GCC_VERSION = 40800 || GCC_VERSION  40803
+#error Your compiler is too buggy; it is known to miscompile kernels
+#error and result in filesystem corruption and oopses.
+#endif
 #endif
 
 int main(void)
-- 
1.8.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854

2014-10-15 Thread Peter Hurley
On 10/15/2014 05:56 PM, Russell King wrote:
 These stock GCC versions miscompile the kernel by incorrectly optimising
 the function epilogue code - by first increasing the stack pointer, and
 then loading entries from below the stack.  This means that an opportune
 interrupt or exception will corrupt the current function's saved state,
 which may result in the parent function seeing different register
 values.
 
 As this bug has been known to result in corrupted filesystems, and these
 buggy compiler versions seem to be frequently used, we have little
 option but to blacklist these compiler versions.
 
 Distributions may have fixed PR58854, but as their compilers are totally
 indistinguishable from the buggy versions, it is unfortunate that this
 also results in those also being blacklisted.  Given the filesystem
 corruption potential of the original, this is the lesser evil.  People
 who want to build with their fixed compiler versions will need to adjust
 the kernel source.  (Distros need to think about the implications of
 fixing such a compiler bug, and consider how to ensure that their fixed
 compiler versions can be detected if they wish to avoid this.)
 
 Signed-off-by: Russell King rmk+ker...@arm.linux.org.uk
 ---
 
 This is what I came up with - this places the build check right at the
 beginning of the kernel build, rather than at some point where
 linux/compiler.h gets included.  Note that this is where we have
 previous ARM specific GCC version blacklisting.  I'm blacklisting
 GCC 4.8.0 to GCC 4.8.2 inclussive, which seems to be the right versions
 for stock GCC.
 
 I was in two minds whether to include 4.8.3 as Linaro released a buggy
 toolchain which identifies itself as 4.8.3, but I decided that's also
 a distro problem.  IMHO Linaro should really think about taking that
 compiler down given the seriousness of this bug and it being
 indistinguishable from the fixed stock version.

Maybe it's unfair to blame them; Linaro just took a snapshot and
released what was there.

If gcc is going to retain the change release number then add all the
new features model, some kind of prerelease indicator would help
eliminate this kind of problem. And that indicator should be both
a preprocessor define and parseable from the command line :)


  arch/arm/kernel/asm-offsets.c | 12 +++-
  1 file changed, 11 insertions(+), 1 deletion(-)
 
 diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
 index 713e807621d2..e14c1a12b414 100644
 --- a/arch/arm/kernel/asm-offsets.c
 +++ b/arch/arm/kernel/asm-offsets.c
 @@ -10,6 +10,7 @@
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
 +#include linux/compiler.h
  #include linux/sched.h
  #include linux/mm.h
  #include linux/dma-mapping.h
 @@ -39,10 +40,19 @@
   * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c
   *(http://gcc.gnu.org/PR8896) and incorrect structure
   * initialisation in fs/jffs2/erase.c
 + * GCC 4.8.0-4.8.2: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58854
 + * miscompiles find_get_entry(), and can result in EXT3 and EXT4
 + * filesystem corruption (possibly other FS too).
   */
 +#ifdef __GNUC__
  #if (__GNUC__ == 3  __GNUC_MINOR__  3)
  #error Your compiler is too buggy; it is known to miscompile kernels.
 -#errorKnown good compilers: 3.3
 +#errorKnown good compilers: 3.3, 4.x
 +#endif
 +#if GCC_VERSION = 40800 || GCC_VERSION  40803
^^


 +#error Your compiler is too buggy; it is known to miscompile kernels
 +#error and result in filesystem corruption and oopses.
 +#endif
  #endif
  
  int main(void)
 

Regards,
Peter Hurley
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854

2014-10-15 Thread Russell King - ARM Linux
On Wed, Oct 15, 2014 at 06:18:30PM -0400, Peter Hurley wrote:
 On 10/15/2014 05:56 PM, Russell King wrote:
  I was in two minds whether to include 4.8.3 as Linaro released a buggy
  toolchain which identifies itself as 4.8.3, but I decided that's also
  a distro problem.  IMHO Linaro should really think about taking that
  compiler down given the seriousness of this bug and it being
  indistinguishable from the fixed stock version.
 
 Maybe it's unfair to blame them; Linaro just took a snapshot and
 released what was there.
 
 If gcc is going to retain the change release number then add all the
 new features model, some kind of prerelease indicator would help
 eliminate this kind of problem. And that indicator should be both
 a preprocessor define and parseable from the command line :)

My comment is not to attribute blame to them, my comment is entirely
on a technical level.

My reasoning is that the bug is just as prevalent in userspace, though
it will occur less often.  Any program which uses signal handlers is
a candidate for exactly the same kind of corruption, since you can
receive that signal between the point that the stack pointer is
modified and the function loads the parent context.

Of course, there are ways around that: don't use signal handlers, or
if you do, use alternate signal stacks.  Neither of those can be
guaranteed for any program though.

So, let me put this another way: a compiler with this bug is _completely_
unsuitable for use for compiling programs for use under the Linux
kernel _as well_ as the Linux kernel itself.

The difference is that the Linaro compilers come with an expectation
that they are usable on ARM... whereas stock versions cover a lot more
and so the ARM arch is probably very small number of their users.

Hence why I recommend that Linaro takes down their buggy compiler.
Their 4.8.3 version should not be used *anywhere*, just the same as
the stock 4.8 to 4.8.2 inclusive should also not be used anywhere on
ARM either.

-- 
FTTC broadband for 0.8mile line: currently at 9.5Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: Blacklist GCC 4.8.0 to GCC 4.8.2 - PR58854

2014-10-15 Thread Peter Hurley
On 10/15/2014 08:18 PM, Russell King - ARM Linux wrote:
 Hence why I recommend that Linaro takes down their buggy compiler.
 Their 4.8.3 version should not be used *anywhere*, just the same as
 the stock 4.8 to 4.8.2 inclusive should also not be used anywhere on
 ARM either.

Completely agree.

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html