mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
hw/arm/smmuv3: Refactor stage-1 PTW
In preparation for adding stage-2 support, rename smmu_ptw_64 to smmu_ptw_64_s1 and refactor some of the code so it can be reused in stage-2 page table walk. Remove AA64 check from PTW as decode_cd already ensures that AA64 is used, otherwise it faults with C_BAD_CD. A stage member is added to SMMUPTWEventInfo to differentiate between stage-1 and stage-2 ptw faults. Add stage argument to trace_smmu_ptw_level be consistent with other trace events. Signed-off-by: Mostafa Saleh <smostafa@google.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Tested-by: Eric Auger <eric.auger@redhat.com> Tested-by: Jean-Philippe Brucker <jean-philippe@linaro.org> Message-id: 20230516203327.2051088-4-smostafa@google.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
3b736c6184
commit
bcc919e756
4 changed files with 26 additions and 21 deletions
|
@ -23,9 +23,18 @@
|
|||
#include "hw/pci/pci.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define SMMU_PCI_BUS_MAX 256
|
||||
#define SMMU_PCI_DEVFN_MAX 256
|
||||
#define SMMU_PCI_DEVFN(sid) (sid & 0xFF)
|
||||
#define SMMU_PCI_BUS_MAX 256
|
||||
#define SMMU_PCI_DEVFN_MAX 256
|
||||
#define SMMU_PCI_DEVFN(sid) (sid & 0xFF)
|
||||
|
||||
/* VMSAv8-64 Translation constants and functions */
|
||||
#define VMSA_LEVELS 4
|
||||
|
||||
#define VMSA_STRIDE(gran) ((gran) - VMSA_LEVELS + 1)
|
||||
#define VMSA_BIT_LVL(isz, strd, lvl) ((isz) - (strd) * \
|
||||
(VMSA_LEVELS - (lvl)))
|
||||
#define VMSA_IDXMSK(isz, strd, lvl) ((1ULL << \
|
||||
VMSA_BIT_LVL(isz, strd, lvl)) - 1)
|
||||
|
||||
/*
|
||||
* Page table walk error types
|
||||
|
@ -40,6 +49,7 @@ typedef enum {
|
|||
} SMMUPTWEventType;
|
||||
|
||||
typedef struct SMMUPTWEventInfo {
|
||||
int stage;
|
||||
SMMUPTWEventType type;
|
||||
dma_addr_t addr; /* fetched address that induced an abort, if any */
|
||||
} SMMUPTWEventInfo;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue