{{ 0 }}
};
+/**
+ * BXT 2x6 validated L3 configurations. \sa ivb_l3_configs.
+ */
+static const struct gen_l3_config bxt_2x6_l3_configs[] = {
+ /* SLM URB ALL DC RO IS C T */
+ {{ 0, 32, 48, 0, 0, 0, 0, 0 }},
+ {{ 0, 32, 0, 8, 40, 0, 0, 0 }},
+ {{ 0, 32, 0, 32, 16, 0, 0, 0 }},
+ {{ 16, 16, 48, 0, 0, 0, 0, 0 }},
+ {{ 16, 16, 0, 40, 8, 0, 0, 0 }},
+ {{ 16, 16, 0, 16, 32, 0, 0, 0 }},
+ {{ 0 }}
+};
+
+/**
+ * CNL validated L3 configurations. \sa ivb_l3_configs.
+ */
+static const struct gen_l3_config cnl_l3_configs[] = {
+ /* SLM URB ALL DC RO IS C T */
+ {{ 0, 64, 64, 0, 0, 0, 0, 0 }},
+ {{ 0, 64, 0, 16, 48, 0, 0, 0 }},
+ {{ 0, 48, 0, 16, 64, 0, 0, 0 }},
+ {{ 0, 32, 0, 0, 96, 0, 0, 0 }},
+ {{ 0, 32, 96, 0, 0, 0, 0, 0 }},
+ {{ 0, 32, 0, 16, 80, 0, 0, 0 }},
+ {{ 32, 16, 80, 0, 0, 0, 0, 0 }},
+ {{ 32, 16, 0, 64, 16, 0, 0, 0 }},
+ {{ 32, 0, 96, 0, 0, 0, 0, 0 }},
+ {{ 0 }}
+};
+
/**
* Return a zero-terminated array of validated L3 configurations for the
* specified device.
return (devinfo->is_cherryview ? chv_l3_configs : bdw_l3_configs);
case 9:
+ if (devinfo->l3_banks == 1)
+ return bxt_2x6_l3_configs;
return chv_l3_configs;
+ case 10:
+ return cnl_l3_configs;
+
default:
unreachable("Not implemented");
}
static unsigned
get_l3_way_size(const struct gen_device_info *devinfo)
{
+ const unsigned way_size_per_bank =
+ devinfo->gen >= 9 && devinfo->l3_banks == 1 ? 4 : 2;
+
assert(devinfo->l3_banks);
- return 2 * devinfo->l3_banks;
+ return way_size_per_bank * devinfo->l3_banks;
}
/**