[Intel-gfx] [PATCH v9 1/2] drm/i915: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads
Oscar Mateo
oscar.mateo at intel.com
Wed Apr 18 16:47:56 UTC 2018
On 4/18/2018 9:45 AM, Oscar Mateo wrote:
>
>
> On 4/18/2018 9:38 AM, Chris Wilson wrote:
>> Quoting Oscar Mateo (2018-04-18 17:30:41)
>>>
>>> On 4/17/2018 3:58 PM, Yunwei Zhang wrote:
>>>> + /*
>>>> + * HW expects MCR to be programed to a enabled slice/subslice
>>>> pair
>>>> + * before any MMIO read into slice/subslice register
>>>> + */
>>> The comment above makes more sense in sanitize_mcr, together with
>>> the WA
>>> label. You can make it a bit more verbose with the info in the commit
>>> message. Something like this:
>>>
>>> /*
>>> * WaProgramMgsrForCorrectSliceSpecificMmioReads:cnl,icl
>>> * Before any MMIO read into slice/subslice specific registers, MCR
>>> * packet control register needs to be programmed to point to any
>>> * enabled s/ss pair. Otherwise, incorrect values will be returned.
>>> * This means each subsequent MMIO read will be forwarded to an
>>> * specific s/ss combination, but this is OK since these registers
>>> * are consistent across s/ss in almost all cases. In the rare
>>> * occasions, such as INSTDONE, where this value is dependent
>>> * on s/ss combo, the read shoud be done with read_subslice_reg.
>>> */
>>>
>>> I don't think any other comment is required here.
>> Apart from the answer to the earlier question, what mmio read after this
>> point? If all slice/subslice register access is through this function,
>> what are you trying to protect? Very curious.
>> -Chris
>
> The problem is that the BSpec does not have a comprehensive list of
> registers that live in the slice/subslice, so it's difficult to know
> when this is going to become a problem. For example, I know from
> previous experience that the MOCS tables are replicated across slices
> (that's why we couldn't let UMD decide when to shutdown them: because
> the MOCS tables get lost as soon as you reconfigure the number of
> s/ss. The only way to do this in by poking in the context, so that the
> MOCS gets reprogrammed immediately after).
This hasn't been an issue until know because the hardware would route
your read to a valid s/ss combo whenever the MCR select was 0s.
Apparently, this is not the case anymore...
More information about the Intel-gfx
mailing list