Re: linux-next: Tree for Aug 31 (new arm, arm64, s390 failures)

From: Marc Zyngier
Date: Mon Aug 31 2015 - 15:09:39 EST


On Mon, 31 Aug 2015 11:57:14 -0700
Guenter Roeck <linux@xxxxxxxxxxxx> wrote:

> Hi Marc,
>
> On 08/31/2015 11:26 AM, Marc Zyngier wrote:
> [ ... ]
> >
> > Actually, the kernel dies because of this:
> >
> > commit adaac459759db4a1fd35baddbe47bac700095496
> > Author: Markus Pargmann <mpa@xxxxxxxxxxxxxx>
> > Date: Sun Aug 30 09:33:53 2015 +0200
> >
> > regmap: Introduce max_raw_read/write for regmap_bulk_read/write
> >
> > There are some buses which have a limit on the maximum number of
> > bytes that can be send/received. An example for this is
> > I2C_FUNC_SMBUS_I2C_BLOCK which does not support any reads/writes of
> > more than 32 bytes. The regmap_bulk operations should still be able
> > to utilize the full 32 bytes in this case.
> >
> > Signed-off-by: Markus Pargmann <mpa@xxxxxxxxxxxxxx>
> > Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> >
> > which never considers bus to be NULL in __regmap_init. With the
> > following patch applied, I can boot to a prompt:
> >
> > From 031eae5a1b34f952ba3dcaecb4eb4ec9d3bda352 Mon Sep 17 00:00:00 2001
> > From: Marc Zyngier <marc.zyngier@xxxxxxx>
> > Date: Mon, 31 Aug 2015 19:16:16 +0100
> > Subject: [PATCH] regmap: Fix max_raw_read/write handling when bus is NULL
> >
> > Commit adaac459759d ("regmap: Introduce max_raw_read/write
> > for regmap_bulk_read/write") added new fields to regmap_bus
> > and started using them in __regmap_init, but failed to
> > consider the case where bus would be NULL, like in the
> > vexpress-syscgf case. The box (actually its qemu version)
> > ends up dying painfully.
> >
> > Fix it by testing bus before doing anything else.
> >
> > Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx>
>
> Yes, that fixes the vexpress failures.
>
> Tested-by: Guenter Roeck <linux@xxxxxxxxxxxx>
>
> However, I still need to revert your patches to get my realview-pb-a8
> and realview-eb tests to work again.
>
> I am a bit concerned about the use of of_address_to_resource(),
> which can return an error, leaving cpu_res undefined. Also, if
> both CONFIG_OF and CONFIG_ACPI are not configured, supports_deactivate
> is set to true by default. This is the configuration used in my
> failing tests.
>
> With that in mind, I ran a simple test.
>
> -static struct static_key supports_deactivate = STATIC_KEY_INIT_TRUE;
> +static struct static_key supports_deactivate = STATIC_KEY_INIT_FALSE;
>
> Bingo, problem solved. Can you try to find a clean solution ?

Yeah, I just came to the same conclusion, and to the following patch: