genxml: forbid usage of L1CC_WBP/L1CC_UC for stateless messages

We want to avoid those settings so that we do not have to emit a tile
fence to implement Wa_22013689345.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19322>
This commit is contained in:
Lionel Landwerlin 2022-10-29 01:39:04 +03:00 committed by Marge Bot
parent 945637514e
commit 1d9608be1a
3 changed files with 13 additions and 9 deletions

View file

@ -6892,8 +6892,8 @@
<field name="General State Base Address" start="44" end="95" type="address" />
<field name="Stateless Data Port Access MOCS" start="112" end="118" type="uint" nonzero="true" />
<field name="L1 Cache Control" start="119" end="121" type="uint" prefix="L1CC">
<value name="WBP" value="0" />
<value name="UC" value="1" />
<value name="WBP" value="0" dont_use="1" />
<value name="UC" value="1" dont_use="1" />
<value name="WB" value="2" />
<value name="WT" value="3" />
<value name="WS" value="4" />

View file

@ -133,6 +133,7 @@ class Field(object):
self.end = int(attrs["end"])
self.type = attrs["type"]
self.nonzero = bool_from_str(attrs.get("nonzero", "false"))
self.prefix = attrs["prefix"] if "prefix" in attrs else None
assert self.start <= self.end, \
'field {} has end ({}) < start ({})'.format(self.name, self.end,
@ -141,11 +142,6 @@ class Field(object):
assert self.end == self.start, \
'bool field ({}) is too wide'.format(self.name)
if "prefix" in attrs:
self.prefix = attrs["prefix"]
else:
self.prefix = None
if "default" in attrs:
# Base 0 recognizes 0x, 0o, 0b prefixes in addition to decimal ints.
self.default = int(attrs["default"], base=0)
@ -340,6 +336,13 @@ class Group(object):
else:
address_count = 1
# Assert in dont_use values
for field in dw.fields:
for value in field.values:
if value.dont_use:
print(" assert(values->%s != %s);" %
(field.name, field.prefix + "_" + value.name))
if dw.size == 32 and dw.address == None:
v = None
print(" dw[%d] =" % index)
@ -423,6 +426,7 @@ class Value(object):
def __init__(self, attrs):
self.name = safe_name(attrs["name"])
self.value = ast.literal_eval(attrs["value"])
self.dont_use = int(attrs["dont_use"]) != 0 if "dont_use" in attrs else False
class Parser(object):
def __init__(self):
@ -490,7 +494,7 @@ class Parser(object):
if "prefix" in attrs:
self.prefix = safe_name(attrs["prefix"])
else:
self.prefix= None
self.prefix = None
elif name == "value":
self.values.append(Value(attrs))

View file

@ -86,7 +86,7 @@ GENXML_DESC = {
'struct' : [ 'name', 'length', ],
'field' : [ 'name', 'start', 'end', 'type', 'default', 'prefix', 'nonzero' ],
'instruction' : [ 'name', 'bias', 'length', 'engine', ],
'value' : [ 'name', 'value', ],
'value' : [ 'name', 'value', 'dont_use', ],
'group' : [ 'count', 'start', 'size', ],
'register' : [ 'name', 'length', 'num', ],
}