asid
ASIdentifiers *asid = ext;
return (i2r_ASIdentifierChoice(out, asid->asnum, indent,
&& i2r_ASIdentifierChoice(out, asid->rdi, indent,
int X509v3_asid_add_inherit(ASIdentifiers *asid, int which)
if (asid == NULL)
choice = &asid->asnum;
choice = &asid->rdi;
int X509v3_asid_add_id_or_range(ASIdentifiers *asid,
if (asid == NULL)
choice = &asid->asnum;
choice = &asid->rdi;
int X509v3_asid_is_canonical(ASIdentifiers *asid)
return (asid == NULL || (ASIdentifierChoice_is_canonical(asid->asnum) && ASIdentifierChoice_is_canonical(asid->rdi)));
int X509v3_asid_canonize(ASIdentifiers *asid)
return (asid == NULL || (ASIdentifierChoice_canonize(asid->asnum) && ASIdentifierChoice_canonize(asid->rdi)));
ASIdentifiers *asid = NULL;
if ((asid = ASIdentifiers_new()) == NULL) {
if (X509v3_asid_add_inherit(asid, which))
if (!X509v3_asid_add_id_or_range(asid, which, min, max)) {
if (!X509v3_asid_canonize(asid))
return asid;
ASIdentifiers_free(asid);
int X509v3_asid_inherits(ASIdentifiers *asid)
return (asid != NULL && ((asid->asnum != NULL && asid->asnum->type == ASIdentifierChoice_inherit) || (asid->rdi != NULL && asid->rdi->type == ASIdentifierChoice_inherit)));
int X509v3_asid_add_inherit(ASIdentifiers *asid, int which);
int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
int X509v3_asid_is_canonical(ASIdentifiers *asid);
int X509v3_asid_canonize(ASIdentifiers *asid);
int X509v3_asid_inherits(ASIdentifiers *asid);
#define INVLPGB_DESCR(asid, pcid) (((pcid) << 16) | (asid))
static struct asid asid[MAXCPU];
if (vcpu->asid.gen != asid[cpu].gen) {
if (++asid[cpu].num >= nasid) {
asid[cpu].num = 1;
if (++asid[cpu].gen == 0)
asid[cpu].gen = 1;
vcpu->asid.gen = asid[cpu].gen;
vcpu->asid.num = asid[cpu].num;
ctrl->asid = vcpu->asid.num;
KASSERT(ctrl->asid != 0, ("Guest ASID must be non-zero"));
KASSERT(ctrl->asid == vcpu->asid.num,
("ASID mismatch: %u/%u", ctrl->asid, vcpu->asid.num));
vcpu->asid.gen = 0;
asid[cpu].gen = ~0UL;
asid[cpu].num = nasid - 1;
SNAPSHOT_VAR_OR_LEAVE(vcpu->asid.gen, meta, err, done);
SNAPSHOT_VAR_OR_LEAVE(vcpu->asid.num, meta, err, done);
ctrl->asid = 0;
struct asid asid;
uint32_t asid; /* 0x58: Guest ASID */
uint64_t asid;
asid = READ_SPECIALREG(ttbr0_el1) & TTBR_ASID_MASK;
: : "r" (asid));
int asid;
asid = COOKIE_TO_ASID(pmap->pm_cookie);
KASSERT(asid >= ASID_FIRST_AVAILABLE &&
asid < set->asid_set_size,
bit_clear(set->asid_set, asid);
static SYSCTL_NODE(_vm_pmap, OID_AUTO, asid, CTLFLAG_RD | CTLFLAG_MPSAFE, 0,
#define COOKIE_FROM(asid, epoch) ((long)((u_int)(asid) | \
int asid, cpuid, epoch;
asid = COOKIE_TO_ASID(curpmap->pm_cookie);
if (asid == -1)
bit_set(set->asid_set, asid);
curpmap->pm_cookie = COOKIE_FROM(asid, epoch);
#define ASID_TO_OPERAND(asid) ({ \
KASSERT((asid) != -1, ("invalid ASID")); \
(uint64_t)(asid) << TTBR_ASID_SHIFT; \
smmu_asid_free(struct smmu_softc *sc, int asid)
bit_clear(sc->asid_set, asid);
dprintf("%s: %lx, %ld, domain %d\n", __func__, va, size, domain->asid);
smmu_tlbi_va(sc, va, domain->asid);
domain->asid);
smmu_tlbi_va(sc, va, domain->asid);
domain->asid = (uint16_t)new_asid;
smmu_asid_free(sc, domain->asid);
smmu_tlbi_asid(sc, domain->asid);
smmu_tlbi_asid(sc, domain->asid);
smmu_asid_free(sc, domain->asid);
cmd[0] |= (uint64_t)entry->tlbi.asid << TLBI_0_ASID_S;
cmd[0] |= (uint64_t)entry->tlbi.asid << TLBI_0_ASID_S;
smmu_tlbi_asid(struct smmu_softc *sc, uint16_t asid)
cmd.tlbi.asid = asid;
smmu_tlbi_va(struct smmu_softc *sc, vm_offset_t va, uint16_t asid)
cmd.tlbi.asid = asid;
val |= (uint64_t)domain->asid << CD0_ASID_S;
uint16_t asid;
uint16_t asid;
hdaa_audio_adddac(struct hdaa_devinfo *devinfo, int asid)
struct hdaa_audio_as *as = &devinfo->as[asid];
asid, as->index);
hdaa_chan_formula(struct hdaa_devinfo *devinfo, int asid,
as = &devinfo->as[asid];
hdaa_chan_type(struct hdaa_devinfo *devinfo, int asid)
as = &devinfo->as[asid];
union uaudio_asid asid = { NULL };
asid.v1 = NULL;
(asid.v1 == NULL)) {
if (desc->bLength >= sizeof(*asid.v2)) {
asid.v2 = (void *)desc;
if (desc->bLength >= sizeof(*asid.v1)) {
asid.v1 = (void *)desc;
if (asid.v1 == NULL || asf1d.v1 == NULL ||
dwFormat = UGETDW(asid.v2->bmFormats);
bChannels = asid.v2->bNrChannels;
wFormat = UGETW(asid.v1->wFormatTag);
sfence_vma_asid(uint64_t asid)
__asm __volatile("sfence.vma x0, %0" :: "r" (asid) : "memory");
sfence_vma_asid_page(uint64_t asid, uintptr_t addr)
__asm __volatile("sfence.vma %0, %1" :: "r" (addr), "r" (asid)
u_long size, u_long asid);
u_long asid)
size, asid);
(uint64_t)hart_mask, start, size, asid);
uint64_t asid;
sfence_vma_asid(fence->asid);
sfence_vma_asid_page(fence->asid, va);
fence.asid = hypctx->guest_regs.hyp_a[4];