Lines Matching refs:pin

62 		int	 acnt;	/* sum of pin asserts (+1) and deasserts (-1) */
97 vioapic_send_intr(struct vioapic *vioapic, int pin)
103 KASSERT(pin >= 0 && pin < REDIR_ENTRIES,
104 ("vioapic_set_pinstate: invalid pin number %d", pin));
109 low = vioapic->rtbl[pin].reg;
110 high = vioapic->rtbl[pin].reg >> 32;
113 VIOAPIC_CTR1(vioapic, "ioapic pin%d: masked", pin);
121 vioapic->rtbl[pin].reg |= IOART_REM_IRR;
129 vioapic_set_pinstate(struct vioapic *vioapic, int pin, bool newstate)
134 KASSERT(pin >= 0 && pin < REDIR_ENTRIES,
135 ("vioapic_set_pinstate: invalid pin number %d", pin));
140 oldcnt = vioapic->rtbl[pin].acnt;
142 vioapic->rtbl[pin].acnt++;
144 vioapic->rtbl[pin].acnt--;
145 newcnt = vioapic->rtbl[pin].acnt;
148 VIOAPIC_CTR2(vioapic, "ioapic pin%d: bad acnt %d",
149 pin, newcnt);
155 VIOAPIC_CTR1(vioapic, "ioapic pin%d: asserted", pin);
157 VIOAPIC_CTR1(vioapic, "ioapic pin%d: deasserted", pin);
159 VIOAPIC_CTR3(vioapic, "ioapic pin%d: %s, ignored, acnt %d",
160 pin, pinstate_str(newstate), newcnt);
164 vioapic_send_intr(vioapic, pin);
225 * Reset the vlapic's trigger-mode register to reflect the ioapic pin
234 int delmode, pin, vector;
245 for (pin = 0; pin < REDIR_ENTRIES; pin++) {
246 low = vioapic->rtbl[pin].reg;
247 high = vioapic->rtbl[pin].reg >> 32;
254 * For a level-triggered 'pin' let the vlapic figure out if
255 * an assertion on this 'pin' would result in an interrupt
271 int regnum, pin, rshift;
291 pin = (regnum - IOAPIC_REDTBL) / 2;
297 return (vioapic->rtbl[pin].reg >> rshift);
308 int regnum, pin, lshift;
327 pin = (regnum - IOAPIC_REDTBL) / 2;
333 last = vioapic->rtbl[pin].reg;
337 vioapic->rtbl[pin].reg &= ~mask64 | RTBL_RO_BITS;
338 vioapic->rtbl[pin].reg |= data64 & ~RTBL_RO_BITS;
340 VIOAPIC_CTR2(vioapic, "ioapic pin%d: redir table entry %#lx",
341 pin, vioapic->rtbl[pin].reg);
348 changed = last ^ vioapic->rtbl[pin].reg;
350 VIOAPIC_CTR1(vioapic, "ioapic pin%d: recalculate "
351 "vlapic trigger-mode register", pin);
361 * - pin is not masked
363 * - pin level is asserted
365 if ((vioapic->rtbl[pin].reg & IOART_INTMASK) == IOART_INTMCLR &&
366 (vioapic->rtbl[pin].reg & IOART_REM_IRR) == 0 &&
367 (vioapic->rtbl[pin].acnt > 0)) {
368 VIOAPIC_CTR2(vioapic, "ioapic pin%d: asserted at rtbl "
369 "write, acnt %d", pin, vioapic->rtbl[pin].acnt);
370 vioapic_send_intr(vioapic, pin);
441 int pin;
451 * of iterating on every single pin each time.
454 for (pin = 0; pin < REDIR_ENTRIES; pin++) {
455 if ((vioapic->rtbl[pin].reg & IOART_REM_IRR) == 0)
457 if ((vioapic->rtbl[pin].reg & IOART_INTVEC) != vector)
459 vioapic->rtbl[pin].reg &= ~IOART_REM_IRR;
460 if (vioapic->rtbl[pin].acnt > 0) {
461 VIOAPIC_CTR2(vioapic, "ioapic pin%d: asserted at eoi, "
462 "acnt %d", pin, vioapic->rtbl[pin].acnt);
463 vioapic_send_intr(vioapic, pin);