[Patch v2 1/2] powerpc: Send SIGBUS on unaligned copy and paste

Balbir Singh bsingharora at gmail.com
Mon Jun 20 13:06:01 AEST 2016



On 20/06/16 09:48, Chris Smart wrote:
> On Fri, Jun 17, 2016 at 05:20:05PM +1000, Balbir Singh wrote:
>>
>>
>> On 17/06/16 09:33, Chris Smart wrote:
> 
> [snip]
> 
>>> +
>>> +    /*
>>> +     * ISA 3.0 (such as P9) copy, copy_first, paste and paste_last alignment
>>> +     * check.
>>> +     *
>>> +     * Send a SIGBUS to the process that caused the fault.
>>> +     *
>>> +     * We do not emulate these because paste may contain additional metadata
>>> +     * when pasting to a co-processor. Furthermore, paste_last is the
>>> +     * synchronisation point for preceding copy/paste sequences.
>>> +     */
>>> +    if ((instruction & 0xfc0006fe) == PPC_INST_COPY)
>>> +        return -EIO;
>>
>> Should this all be under cpu_has_feature(CPU_FTR_ARCH_300)?
>>
> 
> I'm not sure we should or not. That instruction only exists on those
> machines so is it worth adding an additional check when the next check
> will fail anyway?
> 
> I guess it would reduce non ISA 3.0 machines to just a single check rather
> than two, but increases ISO 3.0 machines to three.
> 

Ideally we can do features and fixups, but that today works mostly for the
assembly code we have. In this case we might get away by doing the if and "&",
I would recommend adding a branch hint

if (unlikely(...))

Balbir Singh


More information about the Linuxppc-dev mailing list