Subject: [PATCH V2] AHCI: Workaround for ThunderX Errata#22536

From: [email-masked] (David Daney)
Date: Tue, 16 Feb 2016 11:38:59 -0800

On 02/16/2016 11:14 AM, Tirumalesh Chalamarla wrote:
>
>
> On 02/16/2016 06:42 AM, Robert Richter wrote:
>> On 15.02.16 13:30:41, Tejun Heo wrote:
>>> On Sun, Feb 14, 2016 at 07:36:18PM -0800, Tirumalesh Chalamarla wrote:
>>>> There is no need for special Driver, AHCI is sufficient for
>>>> ThunderX, the
>>>> file only contains this interrupt handler,
>>>> is it preferable if this interrupt handler in libahci.c with others,
>>>> instead
>>>> of separate file?
>>>
>>> Yeap, just fold it in ahci.c with surrounding #ifdef guard.
>>
>> Yes, please use #ifdef CONFIG_CAVIUM_ERRATUM_22536 ... and add a
>> kconfig entry for this to arch/arm64/Kconfig.
>>
> Are you sure, this is not a workaround that is based on alternative
> framework rather on pci device and vendor
>
> do you think CONFIG_ARCH_THUNDER a good alternative?

No.  CONFIG_ARCH_THUNDER should be removed all together.

Grouping a bunch of unrelated features under a single config variable 
creates a very brittle system.  What are you going to do when a new 
hardware revision is released?  Create CONFIG_ARCH_THUNDER2?  Which one 
of these two would you select if building a kernel?  It is a choice that 
we don't want to force users (kernel builders) to have to waste mental 
energy on.

Instead, let's try to make things work out of the box without having to 
set a bunch of random config variables.

If a generic arm64 kernel won't get too bloated, I would suggest just 
enabling the compilation of the code unconditionally (at least for 
arm64).  The use of the code would still be gated by the PCI version 
probe that is part of the patch.

David Daney