Re: Question about using #ifdef CONFIG_PPC64 in driver code

From: Christoph Hellwig
Date: Mon Oct 07 2019 - 02:48:31 EST


On Sun, Oct 06, 2019 at 12:33:31PM +0300, Oded Gabbay wrote:
> Hi Greg,
> a while ago we had an argument about identifying in my driver's code
> whether I'm running on x86 or powerpc. I tried to do something
> dynamically (based on parent pci bridge ID), and you and other people
> objected to it.
>
> I see in other drivers (more then a few) that they are using #ifdef
> CONFIG_PPC64 in some places for similar things (e.g. to run code that
> is only needed in case of powerpc).

> e.g. from ocxl driver in misc:
>
> #ifdef CONFIG_PPC64
> static long afu_ioctl_enable_p9_wait(struct ocxl_context *ctx,
> ...
> #endif
> and also:
>
> #ifdef CONFIG_PPC64
> if (cpu_has_feature(CPU_FTR_P9_TIDR))
> arg.flags[0] |= OCXL_IOCTL_FEATURES_FLAGS0_P9_WAIT;
> #endif
>
> Is this approach acceptable on you ?

This is a pretty horrible example and needs to be fixed up.

> Can I do something similar in my driver:
>
> #ifdef CONFIG_PPC64
> foo (64)
> #else
> foo (48)
> #endif

No, you can't.