[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120411200427.GD18114@aftab>
Date: Wed, 11 Apr 2012 22:04:27 +0200
From: Borislav Petkov <bp@...64.org>
To: Kay Sievers <kay@...y.org>
Cc: Andreas Herrmann <andreas.herrmann3@....com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
"Petkov, Borislav" <Borislav.Petkov@....com>,
linux-kernel@...r.kernel.org, Dave Jones <davej@...hat.com>
Subject: Re: x86, microcode: Conversion from sysdev class caused regression
+ Dave.
On Wed, Apr 11, 2012 at 07:06:21PM +0200, Kay Sievers wrote:
> > The reason for the error is that subsys_interface_register() doesn't
> > handle the return value of sif->add_dev (and there's also no unwinding
> > of the interface registration). Instead subsys_interface_register
> > always returns 0.
>
> Which is the intended behaviour of 'subsystem interfaces' from the
> driver-core perspective. It should not matter if one of a bunch of
> devices do not 'like' this 'interface'. It is the same model as a
> 'driver', we do not cancel the link-in of a driver if one device does
> not like the driver.
But you're not looking at the return value of sif->add_dev which looks
strange to me. Let me put it this way: why do you have return values to
->add_dev's interface then if you're not going to look at them?
A warning that one of the dev_add's failed could probably make sense
here...
[..]
> I think a quick return in the microcode driver, for a device which has
> no active interface state is the best solution here.
Actually, it is even easier: the code clumsily does:
sysfs_create_group
microcode_init_cpu
if (err)
sysfs_remove_group
so we go and create sysfs group, THEN check whether this CPU is
supported and if not, remove the group again which is a bunch of crap if
you ask me. The right way to go should be:
microcode_init_cpu
if (err)
return;
sysfs_create_group
and then there's no need to do all that sysfs group dancing. Andreas,
let me know if you wanna do it, or I should take care of it.
Thanks.
--
Regards/Gruss,
Boris.
Advanced Micro Devices GmbH
Einsteinring 24, 85609 Dornach
GM: Alberto Bozzo
Reg: Dornach, Landkreis Muenchen
HRB Nr. 43632 WEEE Registernr: 129 19551
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists