Subject: Re: [PATCH V4] powerpc/MPIC: Add get_version API both for internal and external use

From: Scott Wood <[email-masked]>
Date: Tue, 9 Apr 2013 22:07:35 -0500

On 04/09/2013 10:04:44 PM, Jia Hongtao-B38951 wrote:
>=20
>=20
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Wednesday, April 10, 2013 10:32 AM
> > To: Jia Hongtao-B38951
> > Cc: [email-masked]; [email-masked]; Wood =20
> Scott-
> > B07421; Li Yang-R58472; Jia Hongtao-B38951
> > Subject: Re: [PATCH V4] powerpc/MPIC: Add get_version API both for
> > internal and external use
> >
> > On 04/07/2013 09:01:54 PM, Jia Hongtao wrote:
> > > diff --git a/arch/powerpc/sysdev/mpic.c =20
> b/arch/powerpc/sysdev/mpic.c
> > > index d30e6a6..48c8fae 100644
> > > --- a/arch/powerpc/sysdev/mpic.c
> > > +++ b/arch/powerpc/sysdev/mpic.c
> > > @@ -1165,10 +1165,30 @@ static struct irq_domain_ops =20
> mpic_host_ops =3D {
> > >  	.xlate =3D mpic_host_xlate,
> > >  };
> > >
> > > +static u32 fsl_mpic_get_version(struct mpic *mpic) {
> > > +	u32 brr1;
> > > +
> > > +	brr1 =3D _mpic_read(mpic->reg_type, &mpic->thiscpuregs,
> > > +			MPIC_FSL_BRR1);
> > > +
> > > +	return brr1 & MPIC_FSL_BRR1_VER;
> > > +}
> >
> > If it's not an FSL mpic, thiscpuregs->base will be NULL.  Please =20
> check
> > mpic->flags for MPIC_FSL.
> >
> > > +
> > >  /*
> > >   * Exported functions
> > >   */
> > >
> > > +u32 fsl_mpic_primary_get_version(void)
> > > +{
> > > +	struct mpic *mpic =3D mpic_primary;
> > > +
> > > +	if (mpic)
> > > +		return fsl_mpic_get_version(mpic);
> > > +
> > > +	return 0;
> > > +}
> >
> > ...especially since the external version doesn't check for it =20
> either.
> >
> > Otherwise, this and the MSI-X patch look OK to me.
> >
> > -Scott
>=20
>=20
> Since all the functions including mpic_alloc() and mpic_init() do the
> check for MPIC_FSL before using fsl_mpic_get_version() I'd like to add
> check just for fsl_mpic_primary_get_version().
>=20
> It will be like this:
> u32 fsl_mpic_primary_get_version(void)
> {
>         struct mpic *mpic =3D mpic_primary;
>=20
>         if (mpic && (mpic->flags & MPIC_FSL))
>                 return fsl_mpic_get_version(mpic);
>=20
>         return 0;
> }
>=20
> Could we reach an agreement here?

Is there any particular reason?  It would be more robust and more =20
consistent if the check were done in fsl_mpic_get_version().

-Scott=