On Fri, Feb 8, 2019 at 8:47 PM Michael Ellerman <m...@ellerman.id.au> wrote: > > Oliver O'Halloran <ooh...@gmail.com> writes: > > diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c > > index f6e65375a8de..d1f0bdf41fac 100644 > > --- a/arch/powerpc/kernel/eeh.c > > +++ b/arch/powerpc/kernel/eeh.c > > @@ -1810,7 +1810,7 @@ static int __init eeh_init_proc(void) > > &eeh_enable_dbgfs_ops); > > debugfs_create_u32("eeh_max_freezes", 0600, > > powerpc_debugfs_root, &eeh_max_freezes); > > -#endif > > + eeh_cache_debugfs_init(); > > Oops :)
Yeah :( > > diff --git a/arch/powerpc/kernel/eeh_cache.c > > b/arch/powerpc/kernel/eeh_cache.c > > index b2c320e0fcef..dba421a577e7 100644 > > --- a/arch/powerpc/kernel/eeh_cache.c > > +++ b/arch/powerpc/kernel/eeh_cache.c > > @@ -298,9 +299,34 @@ void eeh_addr_cache_build(void) > > eeh_addr_cache_insert_dev(dev); > > eeh_sysfs_add_device(dev); > > } > > +} > > > > -#ifdef DEBUG > > - /* Verify tree built up above, echo back the list of addrs. */ > > - eeh_addr_cache_print(&pci_io_addr_cache_root); > > -#endif > > +static int eeh_addr_cache_show(struct seq_file *s, void *v) > > +{ > > + struct rb_node *n = rb_first(&pci_io_addr_cache_root.rb_root); > > + struct pci_io_addr_range *piar; > > + int cnt = 0; > > + > > + spin_lock(&pci_io_addr_cache_root.piar_lock); > > + while (n) { > > + piar = rb_entry(n, struct pci_io_addr_range, rb_node); > > + > > + seq_printf(s, "%s addr range %3d [%pap-%pap]: %s\n", > > + (piar->flags & IORESOURCE_IO) ? "i/o" : "mem", cnt, > > + &piar->addr_lo, &piar->addr_hi, > > pci_name(piar->pcidev)); > > + > > + n = rb_next(n); > > + cnt++; > > + } > > You can write that as a for loop can't you? > > struct rb_node *n; > int i = 0; > > for (n = rb_first(&pci_io_addr_cache_root.rb_root); n; n = > rb_next(n), i++) { IIRC I did try that, but it's too long. 85 cols wide according to my editor. > piar = rb_entry(n, struct pci_io_addr_range, rb_node); > > seq_printf(s, "%s addr range %3d [%pap-%pap]: %s\n", > (piar->flags & IORESOURCE_IO) ? "i/o" : "mem", i, > &piar->addr_lo, &piar->addr_hi, > pci_name(piar->pcidev)); > } > > cheers