blob: 39034b3b2fcbed8c3a8ec9798853e19c9b78fe55 [file] [log] [blame]
/*
*
* (C) COPYRIGHT 2012 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the GNU General Public License version 2
* as published by the Free Software Foundation, and any use by you of this program is subject to the terms of such GNU licence.
*
* A copy of the licence is included with the program, and can also be obtained from Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
/**
* @file
* Software workarounds configuration for Hardware issues.
*/
#ifndef _BASE_HWCONFIG_H_
#define _BASE_HWCONFIG_H_
#include <malisw/mali_malisw.h>
/**
* List of all workarounds.
*
*/
typedef enum base_hw_issue {
/* The current version of the model doesn't support Soft-Stop */
BASE_HW_ISSUE_5736,
/* Need way to guarantee that all previously-translated memory accesses are commited */
BASE_HW_ISSUE_6367,
/* Unaligned load stores crossing 128 bit boundaries will fail */
BASE_HW_ISSUE_6402,
/* On job complete with non-done the cache is not flushed */
BASE_HW_ISSUE_6787,
/* The clamp integer coordinate flag bit of the sampler descriptor is reserved */
BASE_HW_ISSUE_7144,
/* CRC computation can only happen when the bits per pixel is less than or equal to 32 */
BASE_HW_ISSUE_7393,
/* Write of PRFCNT_CONFIG_MODE_MANUAL to PRFCNT_CONFIG causes a instrumentation dump if
PRFCNT_TILER_EN is enabled */
BASE_HW_ISSUE_8186,
/* TIB: Reports faults from a vtile which has not yet been allocated */
BASE_HW_ISSUE_8245,
/* WLMA memory goes wrong when run on shader cores other than core 0. */
BASE_HW_ISSUE_8250,
/* Hierz doesn't work when stenciling is enabled */
BASE_HW_ISSUE_8260,
/* Livelock in L0 icache */
BASE_HW_ISSUE_8280,
/* uTLB deadlock could occur when writing to an invalid page at the same time as
* access to a valid page in the same uTLB cache line ( == 4 PTEs == 16K block of mapping) */
BASE_HW_ISSUE_8316,
/* HT: TERMINATE for RUN command ignored if previous LOAD_DESCRIPTOR is still executing */
BASE_HW_ISSUE_8394,
/* CSE : Sends a TERMINATED response for a task that should not be terminated */
/* (Note that PRLAM-8379 also uses this workaround) */
BASE_HW_ISSUE_8401,
/* Repeatedly Soft-stopping a job chain consisting of (Vertex Shader, Cache Flush, Tiler)
* jobs causes 0x58 error on tiler job. */
BASE_HW_ISSUE_8408,
/* Disable the Pause Buffer in the LS pipe. */
BASE_HW_ISSUE_8443,
/* Stencil test enable 1->0 sticks */
BASE_HW_ISSUE_8456,
/* Tiler heap issue using FBOs or multiple processes using the tiler simultaneously */
/* (Note that PRLAM-9049 also uses this work-around) */
BASE_HW_ISSUE_8564,
/* Livelock issue using atomic instructions (particularly when using atomic_cmpxchg as a spinlock) */
BASE_HW_ISSUE_8791,
/* Fused jobs are not supported (for various reasons) */
/* Jobs with relaxed dependencies do not support soft-stop */
/* (Note that PRLAM-8803, PRLAM-8393, PRLAM-8559, PRLAM-8601 & PRLAM-8607 all use this work-around) */
BASE_HW_ISSUE_8803,
/* Blend shader output is wrong for certain formats */
BASE_HW_ISSUE_8833,
/* Occlusion queries can create false 0 result in boolean and counter modes */
BASE_HW_ISSUE_8879,
/* Output has half intensity with blend shaders enabled on 8xMSAA. */
BASE_HW_ISSUE_8896,
/* 8xMSAA does not work with CRC */
BASE_HW_ISSUE_8975,
/* Boolean occlusion queries don't work properly due to sdc issue. */
BASE_HW_ISSUE_8986,
/* Change in RMUs in use causes problems related with the core's SDC */
BASE_HW_ISSUE_8987,
/* Occlusion query result is not updated if color writes are disabled. */
BASE_HW_ISSUE_9010,
/* Problem with number of work registers in the RSD if set to 0 */
BASE_HW_ISSUE_9275,
/* Incorrect coverage mask for 8xMSAA */
BASE_HW_ISSUE_9423,
/* Compute endpoint has a 4-deep queue of tasks, meaning a soft stop won't complete until all 4 tasks have completed */
BASE_HW_ISSUE_9435,
/* HT: Tiler returns TERMINATED for command that hasn't been terminated */
BASE_HW_ISSUE_9510,
/* Occasionally the GPU will issue multiple page faults for the same address before the MMU page table has been read by the GPU */
BASE_HW_ISSUE_9630,
/* RA DCD load request to SDC returns invalid load ignore causing colour buffer mismatch */
BASE_HW_ISSUE_10327,
/* The BASE_HW_ISSUE_END value must be the last issue listed in this enumeration
* and must be the last value in each array that contains the list of workarounds
* for a particular HW version.
*/
BASE_HW_ISSUE_END
} base_hw_issue;
/**
* Workarounds configuration for each HW revision
*/
/* Mali T60x r0p0-15dev0 - 2011-W39-stable-9 */
static const base_hw_issue base_hw_issues_t60x_r0p0_15dev0[] =
{
BASE_HW_ISSUE_6367,
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_6787,
BASE_HW_ISSUE_7144,
BASE_HW_ISSUE_7393,
BASE_HW_ISSUE_8186,
BASE_HW_ISSUE_8245,
BASE_HW_ISSUE_8250,
BASE_HW_ISSUE_8260,
BASE_HW_ISSUE_8280,
BASE_HW_ISSUE_8316,
BASE_HW_ISSUE_8394,
BASE_HW_ISSUE_8401,
BASE_HW_ISSUE_8408,
BASE_HW_ISSUE_8443,
BASE_HW_ISSUE_8456,
BASE_HW_ISSUE_8564,
BASE_HW_ISSUE_8791,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8833,
BASE_HW_ISSUE_8896,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_8986,
BASE_HW_ISSUE_8987,
BASE_HW_ISSUE_9010,
BASE_HW_ISSUE_9275,
BASE_HW_ISSUE_9423,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_9510,
BASE_HW_ISSUE_9630,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
/* Mali T60x r0p0-00rel0 - 2011-W46-stable-13c */
static const base_hw_issue base_hw_issues_t60x_r0p0_eac[] =
{
BASE_HW_ISSUE_6367,
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_6787,
BASE_HW_ISSUE_7393,
BASE_HW_ISSUE_8564,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_9010,
BASE_HW_ISSUE_9275,
BASE_HW_ISSUE_9423,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_9510,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
/* Mali T60x r0p1 */
static const base_hw_issue base_hw_issues_t60x_r0p1[] =
{
BASE_HW_ISSUE_6367,
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_6787,
BASE_HW_ISSUE_7393,
BASE_HW_ISSUE_8564,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_9010,
BASE_HW_ISSUE_9275,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_9510,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
/* Mali T65x r0p1 */
static const base_hw_issue base_hw_issues_t65x_r0p1[] =
{
BASE_HW_ISSUE_6367,
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_6787,
BASE_HW_ISSUE_7393,
BASE_HW_ISSUE_8564,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_9010,
BASE_HW_ISSUE_9275,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_9510,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
/* Mali T62x r0p0 */
static const base_hw_issue base_hw_issues_t62x_r0p0[] =
{
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_10327,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
/* Mali T67x r0p0 */
static const base_hw_issue base_hw_issues_t67x_r0p0[] =
{
BASE_HW_ISSUE_6402,
BASE_HW_ISSUE_8803,
BASE_HW_ISSUE_8975,
BASE_HW_ISSUE_9435,
BASE_HW_ISSUE_10327,
/* List of hardware issues must end with BASE_HW_ISSUE_END */
BASE_HW_ISSUE_END
};
#endif /* _BASE_HWCONFIG_H_ */