[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linuxbios
Subject:    Re: [coreboot] MP table multicore patch
From:       Myles Watson <mylesgw () gmail ! com>
Date:       2010-02-24 15:22:29
Message-ID: 2831fecf1002240722r70476d9dxa7a1ef3d3885502f () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On Wed, Feb 24, 2010 at 12:26 AM, Timothy Pearson <
tpearson@raptorengineeringinc.com> wrote:

> > So two more steps are necessary:
> > - check all the downwards links of a device instead of just walking
> devices
> > and checking their type.
> > - run recursively in a special case on APIC clusters.
> >
> > This sounds a whole lot like something changed in the way "all_devices"
> > works. And if "all_devices" does not mean "all devices" I am sure there
> are
> > more places in our code that need similar fixes.
>
> This is the crux of the issue.  all_devices does NOT mean "all devices",
> it means "all devices attached to the root node, which is all_devices".
>
You're correct; this is the crux.  Here's a snippet of the fam10 boot log
for SimNOW:

Show all devs...Before Device Enumeration.
Root Device: enabled 1, 0 resources
APIC_CLUSTER: 0: enabled 1, 0 resources
APIC: 00: enabled 1, 0 resources
PCI_DOMAIN: 0000: enabled 1, 0 resources
PCI: 00:18.0: enabled 1, 0 resources
PCI: 00:00.0: enabled 1, 0 resources
PCI: 00:00.1: enabled 1, 0 resources
PCI: 00:01.0: enabled 1, 0 resources
PCI: 00:01.1: enabled 1, 0 resources
PCI: 00:00.0: enabled 1, 0 resources
PCI: 00:00.0: enabled 1, 0 resources
PCI: 00:00.1: enabled 1, 0 resources
PCI: 00:00.2: enabled 0, 0 resources
PCI: 00:01.0: enabled 0, 0 resources
PCI: 00:01.0: enabled 1, 0 resources
PNP: 002e.0: enabled 0, 3 resources
PNP: 002e.1: enabled 0, 2 resources
PNP: 002e.2: enabled 1, 2 resources
PNP: 002e.3: enabled 0, 2 resources
PNP: 002e.5: enabled 1, 4 resources
PNP: 002e.6: enabled 0, 1 resources
PNP: 002e.7: enabled 0, 3 resources
PNP: 002e.8: enabled 0, 0 resources
PNP: 002e.9: enabled 0, 0 resources
PNP: 002e.a: enabled 0, 0 resources
PNP: 002e.b: enabled 1, 2 resources
PCI: 00:01.1: enabled 1, 0 resources
PCI: 00:01.2: enabled 1, 0 resources
PCI: 00:01.3: enabled 1, 0 resources
I2C: 00:18: enabled 1, 0 resources
I2C: 00:50: enabled 1, 0 resources
I2C: 00:51: enabled 1, 0 resources
I2C: 00:52: enabled 1, 0 resources
I2C: 00:53: enabled 1, 0 resources
I2C: 00:50: enabled 1, 0 resources
I2C: 00:51: enabled 1, 0 resources
I2C: 00:52: enabled 1, 0 resources
I2C: 00:53: enabled 1, 0 resources
PCI: 00:01.5: enabled 0, 0 resources
PCI: 00:01.6: enabled 0, 0 resources
PCI: 00:18.1: enabled 1, 0 resources
PCI: 00:18.2: enabled 1, 0 resources
PCI: 00:18.3: enabled 1, 0 resources
PCI: 00:18.4: enabled 1, 0 resources


Compare with tree...
Root Device: enabled 1, 0 resources
 APIC_CLUSTER: 0: enabled 1, 0 resources
  APIC: 00: enabled 1, 0 resources
 PCI_DOMAIN: 0000: enabled 1, 0 resources
  PCI: 00:18.0: enabled 1, 0 resources
   PCI: 00:00.0: enabled 1, 0 resources
   PCI: 00:00.1: enabled 1, 0 resources
   PCI: 00:01.0: enabled 1, 0 resources
   PCI: 00:01.1: enabled 1, 0 resources
   PCI: 00:00.0: enabled 1, 0 resources
    PCI: 00:00.0: enabled 1, 0 resources
    PCI: 00:00.1: enabled 1, 0 resources
    PCI: 00:00.2: enabled 0, 0 resources
    PCI: 00:01.0: enabled 0, 0 resources
   PCI: 00:01.0: enabled 1, 0 resources
    PNP: 002e.0: enabled 0, 3 resources
    PNP: 002e.1: enabled 0, 2 resources
    PNP: 002e.2: enabled 1, 2 resources
    PNP: 002e.3: enabled 0, 2 resources
    PNP: 002e.5: enabled 1, 4 resources
    PNP: 002e.6: enabled 0, 1 resources
    PNP: 002e.7: enabled 0, 3 resources
    PNP: 002e.8: enabled 0, 0 resources
    PNP: 002e.9: enabled 0, 0 resources
    PNP: 002e.a: enabled 0, 0 resources
    PNP: 002e.b: enabled 1, 2 resources
   PCI: 00:01.1: enabled 1, 0 resources
   PCI: 00:01.2: enabled 1, 0 resources
   PCI: 00:01.3: enabled 1, 0 resources
    I2C: 00:18: enabled 1, 0 resources
     I2C: 00:50: enabled 1, 0 resources
     I2C: 00:51: enabled 1, 0 resources
     I2C: 00:52: enabled 1, 0 resources
     I2C: 00:53: enabled 1, 0 resources
     I2C: 00:50: enabled 1, 0 resources
     I2C: 00:51: enabled 1, 0 resources
     I2C: 00:52: enabled 1, 0 resources
     I2C: 00:53: enabled 1, 0 resources
   PCI: 00:01.5: enabled 0, 0 resources
   PCI: 00:01.6: enabled 0, 0 resources
  PCI: 00:18.1: enabled 1, 0 resources
  PCI: 00:18.2: enabled 1, 0 resources
  PCI: 00:18.3: enabled 1, 0 resources
  PCI: 00:18.4: enabled 1, 0 resources

There are 44 devices in the tree, and 44 in the all_devices list.  If there
is some place that the list is getting broken, we should fix it.


As the root node, usually the PCI bus and the APICs are visible.  On my
> board, the APICs are all under an APIC cluster, so they are not
> immediately visible from the root node.
>
They're not children of the root node, but they are accessible through the
next pointer:

    for (dev = all_devices; dev; dev = dev->next) {
        do_printk(debug_level,
              "%s: enabled %d, %d resources\n",
              dev_path(dev), dev->enabled,
              dev->resources);
    }




> I don't have access to a board that I can generate before/after tables
> with at this time.  This behavior is very simple to see though; if you
> turn on printk spew and look closely at the printed detected device tables
>
What are printed detected device tables?


If you have any more questions feel free to ask!  Hopefully the root cause
> of the problem can be located and solved.
>
> Sure.  Let's make sure it gets taken care of.

Thanks,
Myles

[Attachment #5 (text/html)]

<br><br><div class="gmail_quote">On Wed, Feb 24, 2010 at 12:26 AM, Timothy Pearson \
<span dir="ltr">&lt;<a \
href="mailto:tpearson@raptorengineeringinc.com">tpearson@raptorengineeringinc.com</a>&gt;</span> \
wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, \
204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> <div class="im">&gt; So two \
more steps are necessary:<br> &gt; - check all the downwards links of a device \
instead of just walking devices<br> &gt; and checking their type.<br>
&gt; - run recursively in a special case on APIC clusters.<br>
&gt;<br>
&gt; This sounds a whole lot like something changed in the way \
&quot;all_devices&quot;<br> &gt; works. And if &quot;all_devices&quot; does not mean \
&quot;all devices&quot; I am sure there are<br> &gt; more places in our code that \
need similar fixes.<br> <br>
</div>This is the crux of the issue.  all_devices does NOT mean &quot;all \
devices&quot;,<br> it means &quot;all devices attached to the root node, which is \
all_devices&quot;.<br></blockquote><div>You&#39;re correct; this is the crux.  \
Here&#39;s a snippet of the fam10 boot log for SimNOW:<br><br>Show all devs...Before \
Device Enumeration. <br>Root Device: enabled 1, 0 resources
<br>APIC_CLUSTER: 0: enabled 1, 0 resources
<br>APIC: 00: enabled 1, 0 resources
<br>PCI_DOMAIN: 0000: enabled 1, 0 resources
<br>PCI: 00:18.0: enabled 1, 0 resources
<br>PCI: 00:00.0: enabled 1, 0 resources
<br>PCI: 00:00.1: enabled 1, 0 resources
<br>PCI: 00:01.0: enabled 1, 0 resources
<br>PCI: 00:01.1: enabled 1, 0 resources
<br>PCI: 00:00.0: enabled 1, 0 resources
<br>PCI: 00:00.0: enabled 1, 0 resources
<br>PCI: 00:00.1: enabled 1, 0 resources
<br>PCI: 00:00.2: enabled 0, 0 resources
<br>PCI: 00:01.0: enabled 0, 0 resources
<br>PCI: 00:01.0: enabled 1, 0 resources
<br>PNP: 002e.0: enabled 0, 3 resources
<br>PNP: 002e.1: enabled 0, 2 resources
<br>PNP: 002e.2: enabled 1, 2 resources
<br>PNP: 002e.3: enabled 0, 2 resources
<br>PNP: 002e.5: enabled 1, 4 resources
<br>PNP: 002e.6: enabled 0, 1 resources
<br>PNP: 002e.7: enabled 0, 3 resources
<br>PNP: 002e.8: enabled 0, 0 resources
<br>PNP: 002e.9: enabled 0, 0 resources
<br>PNP: 002e.a: enabled 0, 0 resources
<br>PNP: 002e.b: enabled 1, 2 resources
<br>PCI: 00:01.1: enabled 1, 0 resources
<br>PCI: 00:01.2: enabled 1, 0 resources
<br>PCI: 00:01.3: enabled 1, 0 resources
<br>I2C: 00:18: enabled 1, 0 resources
<br>I2C: 00:50: enabled 1, 0 resources
<br>I2C: 00:51: enabled 1, 0 resources
<br>I2C: 00:52: enabled 1, 0 resources
<br>I2C: 00:53: enabled 1, 0 resources
<br>I2C: 00:50: enabled 1, 0 resources
<br>I2C: 00:51: enabled 1, 0 resources
<br>I2C: 00:52: enabled 1, 0 resources
<br>I2C: 00:53: enabled 1, 0 resources
<br>PCI: 00:01.5: enabled 0, 0 resources
<br>PCI: 00:01.6: enabled 0, 0 resources
<br>PCI: 00:18.1: enabled 1, 0 resources
<br>PCI: 00:18.2: enabled 1, 0 resources
<br>PCI: 00:18.3: enabled 1, 0 resources
<br>PCI: 00:18.4: enabled 1, 0 resources
<br><br><br>Compare with tree...
<br>Root Device: enabled 1, 0 resources
<br> APIC_CLUSTER: 0: enabled 1, 0 resources
<br>  APIC: 00: enabled 1, 0 resources
<br> PCI_DOMAIN: 0000: enabled 1, 0 resources
<br>  PCI: 00:18.0: enabled 1, 0 resources
<br>   PCI: 00:00.0: enabled 1, 0 resources
<br>   PCI: 00:00.1: enabled 1, 0 resources
<br>   PCI: 00:01.0: enabled 1, 0 resources
<br>   PCI: 00:01.1: enabled 1, 0 resources
<br>   PCI: 00:00.0: enabled 1, 0 resources
<br>    PCI: 00:00.0: enabled 1, 0 resources
<br>    PCI: 00:00.1: enabled 1, 0 resources
<br>    PCI: 00:00.2: enabled 0, 0 resources
<br>    PCI: 00:01.0: enabled 0, 0 resources
<br>   PCI: 00:01.0: enabled 1, 0 resources
<br>    PNP: 002e.0: enabled 0, 3 resources
<br>    PNP: 002e.1: enabled 0, 2 resources
<br>    PNP: 002e.2: enabled 1, 2 resources
<br>    PNP: 002e.3: enabled 0, 2 resources
<br>    PNP: 002e.5: enabled 1, 4 resources
<br>    PNP: 002e.6: enabled 0, 1 resources
<br>    PNP: 002e.7: enabled 0, 3 resources
<br>    PNP: 002e.8: enabled 0, 0 resources
<br>    PNP: 002e.9: enabled 0, 0 resources
<br>    PNP: 002e.a: enabled 0, 0 resources
<br>    PNP: 002e.b: enabled 1, 2 resources
<br>   PCI: 00:01.1: enabled 1, 0 resources
<br>   PCI: 00:01.2: enabled 1, 0 resources
<br>   PCI: 00:01.3: enabled 1, 0 resources
<br>    I2C: 00:18: enabled 1, 0 resources
<br>     I2C: 00:50: enabled 1, 0 resources
<br>     I2C: 00:51: enabled 1, 0 resources
<br>     I2C: 00:52: enabled 1, 0 resources
<br>     I2C: 00:53: enabled 1, 0 resources
<br>     I2C: 00:50: enabled 1, 0 resources
<br>     I2C: 00:51: enabled 1, 0 resources
<br>     I2C: 00:52: enabled 1, 0 resources
<br>     I2C: 00:53: enabled 1, 0 resources
<br>   PCI: 00:01.5: enabled 0, 0 resources
<br>   PCI: 00:01.6: enabled 0, 0 resources
<br>  PCI: 00:18.1: enabled 1, 0 resources
<br>  PCI: 00:18.2: enabled 1, 0 resources
<br>  PCI: 00:18.3: enabled 1, 0 resources
<br>  PCI: 00:18.4: enabled 1, 0 resources
<br> <br>There are 44 devices in the tree, and 44 in the all_devices list.  If there \
is some place that the list is getting broken, we should fix \
it.<br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid \
rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

As the root node, usually the PCI bus and the APICs are visible.  On my<br>
board, the APICs are all under an APIC cluster, so they are not<br>
immediately visible from the root node.<br></blockquote><div>They&#39;re not children \
of the root node, but they are accessible through the next pointer:<br><br>    for \
(dev = all_devices; dev; dev = dev-&gt;next) {<br>        do_printk(debug_level,<br>  \
&quot;%s: enabled %d, %d resources\n&quot;,<br>              dev_path(dev), \
dev-&gt;enabled,<br>              dev-&gt;resources);<br>    }<br><br><br> \
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, \
204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

I don&#39;t have access to a board that I can generate before/after tables<br>
with at this time.  This behavior is very simple to see though; if you<br>
turn on printk spew and look closely at the printed detected device \
tables<br></blockquote><div>What are printed detected device \
tables?<br><br><br></div><blockquote class="gmail_quote" style="border-left: 1px \
solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> If you have \
any more questions feel free to ask!  Hopefully the root cause<br> of the problem can \
be located and solved.<br> <div><div></div><div \
class="h5"><br></div></div></blockquote><div>Sure.  Let&#39;s make sure it gets taken \
care of.<br><br>Thanks,<br>Myles<br></div></div><br>



-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic