Port-sparc64 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Removing duplicated pyro interrupt logic
Hi,
> I am working on adding interrupts to the Fire/MICV I2C controller on the
> U45, V245 and similar. In OFW, the controller parent is mainbus, but the
> interrupts are routed through one of the pyro leaves. This is similar to
> ebus@mainbus interrupt routing.
> I split pyro_intr_establish() into a stub which locates the softc from the
> pdb and then pyro_intr_establish_sc() which does the work. In pyro_softc,
> I keep a pointer to pyro_intr_establish_sc(). This means that we can find
> the correct pyro leaf and call its pyro_intr_establish_sc() directly - I
> do this in firei2c_intr_establish().
I've committed these changes, including the corresponding change to
ebus@mainbus.
Running tests before and after the interrupt changes gives me a reduction
from around 50 seconds to around 4 seconds when reading an 8K EEPROM on the
i2c bus [*] and with a large decrease in system time too, as we no longer
busy-wait for i2c commands to complete. Note, that pcfiic0 on U25/U45 is
slower, because they have a different implementation, so the 8K read
takes about 12 seconds there.
I also recently committed interrupt changes for pcfiic, so there is a
similar improvement there, for machines with working pcfiic interrupts.
Regards,
Julian
[*] for example:
time dd if=/dev/seeprom3 of=/dev/null bs=1 count=8192
8192+0 records in
8192+0 records out
8192 bytes transferred in 4.250 secs (1927 bytes/sec)
4.26 real 0.00 user 0.13 sys
--
Home |
Main Index |
Thread Index |
Old Index