Re: [PATCH 2/6] PCI: Add PCI_EXP_SLTCAP_*_SHIFT macros

Marek Behún
2022-02-25T17:23:35Z

On Fri, 25 Feb 2022 09:37:56 -0600
Bjorn Helgaas <helgaas@kernel.org> wrote:

> On Fri, Feb 25, 2022 at 01:24:51PM +0100, Pali Rohár wrote:
> > On Thursday 24 February 2022 14:28:43 Bjorn Helgaas wrote:
> > > On Tue, Feb 22, 2022 at 05:31:54PM +0100, Pali Rohár wrote:
> > > > These macros allows to easily compose and extract Slot Power Limit and
> > > > Physical Slot Number values from Slot Capability Register.
> > > >
> > > > Signed-off-by: Pali Rohár <pali@kernel.org>
> > > > Signed-off-by: Marek Behún <kabel@kernel.org>
> > > > ---
> > > > include/uapi/linux/pci_regs.h | 3 +++
> > > > 1 file changed, 3 insertions(+)
> > > >
> > > > diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h
> > > > index 108f8523fa04..3fc9a4cac630 100644
> > > > --- a/include/uapi/linux/pci_regs.h
> > > > +++ b/include/uapi/linux/pci_regs.h
> > > > @@ -591,10 +591,13 @@
> > > > #define PCI_EXP_SLTCAP_HPS 0x00000020 /* Hot-Plug Surprise */
> > > > #define PCI_EXP_SLTCAP_HPC 0x00000040 /* Hot-Plug Capable */
> > > > #define PCI_EXP_SLTCAP_SPLV 0x00007f80 /* Slot Power Limit Value */
> > > > +#define PCI_EXP_SLTCAP_SPLV_SHIFT 7 /* Slot Power Limit Value shift */
> > >
> > > Is there a way to use FIELD_PREP() and FIELD_GET() instead? It seems
> > > like that's what the cool kids are doing now.
> >
> > This is possible too.
> >
> > I have proposed a patch with _SHIFT macros as this is the way how are
> > other macros in this file defined and used.
>
> Yes, it's a mix. For some recent additions, I've resisted adding the
> _SHIFT macros on the theory that they clutter the file, they never
> change, and the main point of the #defines is readability and so
> grep/tags/etc can find things.
>
> There are a *few* users of FIELD_PREP() and FIELD_GET():
>
> git grep -E "FIELD_(GET|PREP)\(PCI_EXP"
>
> and I'm inclined to go that direction in the future. What do you
> think?

I am also pro that direction.

Would you also like to convert current usages in the .c driver files?

We can't remove the existing macros since they are in UAPI, but we can
convert drivers so that they don't use _SHIFT macros.

Marek