Skip to content

Commit

Permalink
coresight: etm4x: cleaning up default filter configuration
Browse files Browse the repository at this point in the history
The default filter configuration was hard to read and included
some redundancy.  This patch attempts to stream line configuration
and improve readability.

No change of functionality is included.

Signed-off-by: Mathieu Poirier <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
mathieupoirier authored and gregkh committed Aug 31, 2016
1 parent 2a5695a commit 5edd944
Showing 1 changed file with 27 additions and 26 deletions.
53 changes: 27 additions & 26 deletions drivers/hwtracing/coresight/coresight-etm4x.c
Original file line number Diff line number Diff line change
Expand Up @@ -583,39 +583,34 @@ static void etm4_set_default_config(struct etmv4_config *config)

static void etm4_set_default_filter(struct etmv4_config *config)
{
/*
* TRCVICTLR::SSSTATUS == 1, the start-stop logic is
* in the started state
*/
config->vinst_ctrl |= BIT(9);
u64 start, stop, access_type = 0;

/*
* Configure address range comparator '0' to encompass all
* possible addresses.
*/
start = 0x0;
stop = ~0x0;

/* First half of default address comparator: start at address 0 */
config->addr_val[ETM_DEFAULT_ADDR_COMP] = 0x0;
/* trace instruction addresses */
config->addr_acc[ETM_DEFAULT_ADDR_COMP] &= ~(BIT(0) | BIT(1));
/* EXLEVEL_NS, bits[12:15], only trace application and kernel space */
config->addr_acc[ETM_DEFAULT_ADDR_COMP] |= ETM_EXLEVEL_NS_HYP;
/* EXLEVEL_S, bits[11:8], don't trace anything in secure state */
config->addr_acc[ETM_DEFAULT_ADDR_COMP] |= (ETM_EXLEVEL_S_APP |
ETM_EXLEVEL_S_OS |
ETM_EXLEVEL_S_HYP);
config->addr_type[ETM_DEFAULT_ADDR_COMP] = ETM_ADDR_TYPE_RANGE;
/* EXLEVEL_NS, bits[12:15], always stay away from hypervisor mode. */
access_type = ETM_EXLEVEL_NS_HYP;

/*
* Second half of default address comparator: go all
* the way to the top.
*/
config->addr_val[ETM_DEFAULT_ADDR_COMP + 1] = ~0x0;
/* trace instruction addresses */
config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] &= ~(BIT(0) | BIT(1));
/* Address comparator type must be equal for both halves */
config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] =
config->addr_acc[ETM_DEFAULT_ADDR_COMP];
* EXLEVEL_S, bits[11:8], don't trace anything happening
* in secure state.
*/
access_type |= (ETM_EXLEVEL_S_APP |
ETM_EXLEVEL_S_OS |
ETM_EXLEVEL_S_HYP);

/* First half of default address comparator */
config->addr_val[ETM_DEFAULT_ADDR_COMP] = start;
config->addr_acc[ETM_DEFAULT_ADDR_COMP] = access_type;
config->addr_type[ETM_DEFAULT_ADDR_COMP] = ETM_ADDR_TYPE_RANGE;

/* Second half of default address comparator */
config->addr_val[ETM_DEFAULT_ADDR_COMP + 1] = stop;
config->addr_acc[ETM_DEFAULT_ADDR_COMP + 1] = access_type;
config->addr_type[ETM_DEFAULT_ADDR_COMP + 1] = ETM_ADDR_TYPE_RANGE;

/*
Expand All @@ -624,7 +619,13 @@ static void etm4_set_default_filter(struct etmv4_config *config)
*/
config->viiectlr = BIT(0);

/* no start-stop filtering for ViewInst */
/*
* TRCVICTLR::SSSTATUS == 1, the start-stop logic is
* in the started state
*/
config->vinst_ctrl |= BIT(9);

/* No start-stop filtering for ViewInst */
config->vissctlr = 0x0;
}

Expand Down

0 comments on commit 5edd944

Please sign in to comment.