On Sun, 5 Dec 2004, Martin Josefsson wrote:
> > -#define E1000_READ_REG(a, reg) ( \
> > - readl((a)->hw_addr + \
> > - (((a)->mac_type >= e1000_82543) ? E1000_##reg :
> > E1000_82542_##reg)))
> > +#define E1000_READ_REG(a, reg) ({ \
> > + unsigned long s, e, d, v; \
> > +\
> > + (a)->mmio_reads++; \
> > + rdtsc(s, d); \
> > + v = readl((a)->hw_addr + \
> > + (((a)->mac_type >= e1000_82543) ? E1000_##reg :
> > E1000_82542_##reg)); \
> > + rdtsc(e, d); \
> > + e -= s; \
> > + printk(KERN_INFO "e1000: MMIO read took %ld clocks\n", e); \
> > + printk(KERN_INFO "e1000: in process %d(%s)\n", current->pid,
> > current->comm); \
> > + dump_stack(); \
> > + v; \
> > +})
> >
> > You might want to disable the stack dump of course.
>
> Will test this in a while.
It gives pretty varied results.
This is during a pktgen run.
The machine is an Athlon MP 2000+ which operated at 1667 MHz
e1000: MMIO read took 481 clocks
e1000: MMIO read took 369 clocks
e1000: MMIO read took 481 clocks
e1000: MMIO read took 11 clocks
e1000: MMIO read took 477 clocks
e1000: MMIO read took 316 clocks
e1000: MMIO read took 481 clocks
e1000: MMIO read took 316 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 332 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 372 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 11 clocks
e1000: MMIO read took 481 clocks
e1000: MMIO read took 388 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 11 clocks
e1000: MMIO read took 485 clocks
e1000: MMIO read took 317 clocks
e1000: MMIO read took 481 clocks
e1000: MMIO read took 337 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 316 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 409 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 334 clocks
e1000: MMIO read took 481 clocks
e1000: MMIO read took 316 clocks
e1000: MMIO read took 480 clocks
e1000: MMIO read took 11 clocks
e1000: MMIO read took 505 clocks
e1000: MMIO read took 359 clocks
e1000: MMIO read took 484 clocks
e1000: MMIO read took 337 clocks
e1000: MMIO read took 464 clocks
e1000: MMIO read took 504 clocks
/Martin
|