[Intel-xe] [PATCH] drm/xe/pvc: Don't try to invalidate AuxCCS TLB
Kalvala, Haridhar
haridhar.kalvala at intel.com
Fri May 26 03:54:19 UTC 2023
On 5/25/2023 8:30 PM, Matt Roper wrote:
> On Thu, May 25, 2023 at 06:46:03PM +0530, Kalvala, Haridhar wrote:
>> On 5/25/2023 12:56 AM, Matt Roper wrote:
>>> Generally !has_flatccs implies that a platform has AuxCCS compression
>>> and thus needs to invalidate the AuxCCS TLB. However PVC is a special
>>> case because it has no compression of either type (FlatCCS or AuxCCS)
>>> so we should avoid writing to non-existent AuxCCS registers.
>> Hi Matt,
>>
>> Looks good to me.
>>
>> Just a query, if their is no compression support, do we need to remove flag
>>
>> ".has_flat_ccs" from PVC description structure.
> You mean from graphics_xehpc? That already indicates that flat_ccs is
> disabled:
>
> .has_flat_ccs = 0,
>
> which is correct. The change here is just to make sure that the driver
> doesn't assume that lack of flatccs implies that we have auxccs instead
> (on PVC we have neither flatccs nor auxccs).
>
>
> Matt
>
>> Regards,
>>
>> Haridhar Kalvala
Reviewed-by: Haridhar Kalvala <haridhar.kalvala at intel.com>
>>> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_ring_ops.c | 16 ++++++++++++++--
>>> 1 file changed, 14 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_ring_ops.c b/drivers/gpu/drm/xe/xe_ring_ops.c
>>> index 74c1b5dfbaee..d2fa0b4c8bcc 100644
>>> --- a/drivers/gpu/drm/xe/xe_ring_ops.c
>>> +++ b/drivers/gpu/drm/xe/xe_ring_ops.c
>>> @@ -190,6 +190,18 @@ static void __emit_job_gen12_copy(struct xe_sched_job *job, struct xe_lrc *lrc,
>>> xe_lrc_write_ring(lrc, dw, i * sizeof(*dw));
>>> }
>>> +static bool has_aux_ccs(struct xe_device *xe)
>>> +{
>>> + /*
>>> + * PVC is a special case that has no compression of either type
>>> + * (FlatCCS or AuxCCS).
>>> + */
>>> + if (xe->info.platform == XE_PVC)
>>> + return false;
>>> +
>>> + return !xe->info.has_flat_ccs;
>>> +}
>>> +
>>> static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>>> u64 batch_addr, u32 seqno)
>>> {
>>> @@ -202,7 +214,7 @@ static void __emit_job_gen12_video(struct xe_sched_job *job, struct xe_lrc *lrc,
>>> dw[i++] = preparser_disable(true);
>>> /* hsdes: 1809175790 */
>>> - if (!xe->info.has_flat_ccs) {
>>> + if (has_aux_ccs(xe)) {
>>> if (decode)
>>> i = emit_aux_table_inv(gt, VD0_AUX_NV, dw, i);
>>> else
>>> @@ -248,7 +260,7 @@ static void __emit_job_gen12_render_compute(struct xe_sched_job *job,
>>> i = emit_pipe_invalidate(mask_flags, dw, i);
>>> /* hsdes: 1809175790 */
>>> - if (!xe->info.has_flat_ccs)
>>> + if (has_aux_ccs(xe))
>>> i = emit_aux_table_inv(gt, GFX_CCS_AUX_NV, dw, i);
>>> dw[i++] = preparser_disable(false);
>> --
>> Regards,
>> Haridhar Kalvala
>>
--
Regards,
Haridhar Kalvala
More information about the Intel-xe
mailing list