PERFORCE change 94878 for review
John-Mark Gurney
jmg at FreeBSD.org
Sun Apr 9 23:29:07 UTC 2006
http://perforce.freebsd.org/chv.cgi?CH=94878
Change 94878 by jmg at jmg_arlene on 2006/04/09 23:28:51
return _INVALID_IRQ when requesting an interrupt, we might want to
expand this value to anything outside 1 through 4...
in route_interrupt, just return the pin... no more routing to do..
Affected files ...
.. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#35 edit
Differences ...
==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/hv_pci.c#35 (text+ko) ====
@@ -81,9 +81,7 @@
static pcib_maxslots_t hvpci_maxslots;
static pcib_read_config_t hvpci_read_config;
static pcib_write_config_t hvpci_write_config;
-#ifdef notyet
static pcib_route_interrupt_t hvpci_route_interrupt;
-#endif
static device_method_t hv_pcib_methods[] = {
/* Device interface */
@@ -109,9 +107,7 @@
DEVMETHOD(pcib_maxslots, hvpci_maxslots),
DEVMETHOD(pcib_read_config, hvpci_read_config),
DEVMETHOD(pcib_write_config, hvpci_write_config),
-#if 0
DEVMETHOD(pcib_route_interrupt, hvpci_route_interrupt),
-#endif
{ 0, 0 }
};
@@ -273,6 +269,8 @@
switch (width) {
case 1:
ret = data & 0xff;
+ if (ret == 0 && reg == PCIR_INTLINE)
+ ret = PCI_INVALID_IRQ;
#if 0
printf("%ld = read_config(%#lx, %#x, %d, %d) = %#x\n", r,
sc->hs_devhandle, HVPCI_BDF(bus, slot, func), reg, width, ret);
@@ -337,12 +335,12 @@
printf("put failed with: %ld\n", r);
}
-#ifdef notyet
static int
hvpci_route_interrupt(device_t bridge, device_t dev, int pin)
{
+
+ return (pin);
}
-#endif
static int
hvpci_read_ivar(device_t dev, device_t child, int which, uintptr_t *result)
@@ -385,11 +383,11 @@
sc = device_get_softc(dev);
- /* we use 0 through 3 for INTx interrupts, while sun uses 1 through 4 */
+ /* sun4v uses 1 through 4 interrupts */
pciintr = rman_get_start(ires);
- KASSERT(pciintr >= 0 && pciintr <= 3,
+ KASSERT(pciintr >= 1 && pciintr <= 4,
("interrupt out of range"));
- rid = pciintr + 1;
+ rid = pciintr;
if (sc->hs_intr[pciintr] == NULL) {
if ((sc->hs_intr[pciintr] = bus_alloc_resource_any(dev,
SYS_RES_IRQ, &rid, RF_SHAREABLE | RF_ACTIVE)) == NULL) {
More information about the p4-projects
mailing list