Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/vmm/amd/amdvi_hw.c
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | |||||
#include <machine/pci_cfgreg.h> | #include <machine/pci_cfgreg.h> | ||||
#include "pcib_if.h" | #include "pcib_if.h" | ||||
#include "io/iommu.h" | #include "io/iommu.h" | ||||
#include "amdvi_priv.h" | #include "amdvi_priv.h" | ||||
SYSCTL_DECL(_hw_vmm); | SYSCTL_DECL(_hw_vmm); | ||||
SYSCTL_NODE(_hw_vmm, OID_AUTO, amdvi, CTLFLAG_RW, NULL, NULL); | SYSCTL_NODE(_hw_vmm, OID_AUTO, amdvi, CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, | ||||
NULL); | |||||
#define MOD_INC(a, s, m) (((a) + (s)) % ((m) * (s))) | #define MOD_INC(a, s, m) (((a) + (s)) % ((m) * (s))) | ||||
#define MOD_DEC(a, s, m) (((a) - (s)) % ((m) * (s))) | #define MOD_DEC(a, s, m) (((a) - (s)) % ((m) * (s))) | ||||
/* Print RID or device ID in PCI string format. */ | /* Print RID or device ID in PCI string format. */ | ||||
#define RID2PCI_STR(d) PCI_RID2BUS(d), PCI_RID2SLOT(d), PCI_RID2FUNC(d) | #define RID2PCI_STR(d) PCI_RID2BUS(d), PCI_RID2SLOT(d), PCI_RID2FUNC(d) | ||||
static void amdvi_dump_cmds(struct amdvi_softc *softc, int count); | static void amdvi_dump_cmds(struct amdvi_softc *softc, int count); | ||||
▲ Show 20 Lines • Show All 872 Lines • ▼ Show 20 Lines | SYSCTL_ADD_ULONG(ctx, child, OID_AUTO, "command_count", CTLFLAG_RD, | ||||
&softc->total_cmd, "Command submitted count"); | &softc->total_cmd, "Command submitted count"); | ||||
SYSCTL_ADD_U16(ctx, child, OID_AUTO, "pci_rid", CTLFLAG_RD, | SYSCTL_ADD_U16(ctx, child, OID_AUTO, "pci_rid", CTLFLAG_RD, | ||||
&softc->pci_rid, 0, "IOMMU RID"); | &softc->pci_rid, 0, "IOMMU RID"); | ||||
SYSCTL_ADD_U16(ctx, child, OID_AUTO, "start_dev_rid", CTLFLAG_RD, | SYSCTL_ADD_U16(ctx, child, OID_AUTO, "start_dev_rid", CTLFLAG_RD, | ||||
&softc->start_dev_rid, 0, "Start of device under this IOMMU"); | &softc->start_dev_rid, 0, "Start of device under this IOMMU"); | ||||
SYSCTL_ADD_U16(ctx, child, OID_AUTO, "end_dev_rid", CTLFLAG_RD, | SYSCTL_ADD_U16(ctx, child, OID_AUTO, "end_dev_rid", CTLFLAG_RD, | ||||
&softc->end_dev_rid, 0, "End of device under this IOMMU"); | &softc->end_dev_rid, 0, "End of device under this IOMMU"); | ||||
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "command_head", | SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "command_head", | ||||
CTLTYPE_UINT | CTLFLAG_RD, softc, 0, | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, softc, 0, | ||||
amdvi_handle_sysctl, "IU", "Command head"); | amdvi_handle_sysctl, "IU", "Command head"); | ||||
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "command_tail", | SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "command_tail", | ||||
CTLTYPE_UINT | CTLFLAG_RD, softc, 1, | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, softc, 1, | ||||
amdvi_handle_sysctl, "IU", "Command tail"); | amdvi_handle_sysctl, "IU", "Command tail"); | ||||
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "event_head", | SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "event_head", | ||||
CTLTYPE_UINT | CTLFLAG_RD, softc, 2, | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, softc, 2, | ||||
amdvi_handle_sysctl, "IU", "Command head"); | amdvi_handle_sysctl, "IU", "Command head"); | ||||
SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "event_tail", | SYSCTL_ADD_PROC(ctx, child, OID_AUTO, "event_tail", | ||||
CTLTYPE_UINT | CTLFLAG_RD, softc, 3, | CTLTYPE_UINT | CTLFLAG_RD | CTLFLAG_MPSAFE, softc, 3, | ||||
amdvi_handle_sysctl, "IU", "Command tail"); | amdvi_handle_sysctl, "IU", "Command tail"); | ||||
} | } | ||||
int | int | ||||
amdvi_setup_hw(struct amdvi_softc *softc) | amdvi_setup_hw(struct amdvi_softc *softc) | ||||
{ | { | ||||
device_t dev; | device_t dev; | ||||
int status; | int status; | ||||
▲ Show 20 Lines • Show All 492 Lines • Show Last 20 Lines |