<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1"
 http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
On 3/30/10 12:44 AM, ron minnich wrote:
<blockquote
 cite="mid:13426df11003291544r1c4a578ek4702acb73f84a7dc@mail.gmail.com"
 type="cite">
  <pre wrap="">The IRQ_SLOTS_COUNT was ONLY needed because of very early bug in gcc 3.

The bug was with things like this:

struct blah {
   int x;
};

struct bee {
   struct blah[0];
};

The idea here is you can initialize the bee struct and the number of
blah structs depends on the initializer, not the declaration.

In the early days of v3 gcc would not handle the initialization
correctly at all. Really, IRQ_SLOTS_COUNT should be something we can
get along without. (at least that's what memory tells me).
  </pre>
</blockquote>
<br>
It became a bit harder when we started to be smart and did this:<br>
<br>
...<br>
        32+16*CONFIG_IRQ_SLOT_COUNT,     /* There can be total
CONFIG_IRQ_SLOT_COUNT devices on the bus */<br>
...<br>
<br>
in the struct. So without CONFIG_IRQ_SLOT_COUNT, the struct is invalid,
at least on those boards I checked.<br>
<br>
<blockquote
 cite="mid:13426df11003291544r1c4a578ek4702acb73f84a7dc@mail.gmail.com"
 type="cite">
  <pre wrap="">Note that on gcc2 it had to be 1, that was the convention; then it
became 0 later.

  </pre>
</blockquote>
I wonder, how can we completely create pirq_tables dynamically... Is it
that hard?<br>
<br>
<b>                {0x00,(0x01<<3)|0x0, {{0x60, 0xdcf8}, {0x61,
0xdcf8}, {0x62, 0xdcf8}, {0x63, 0x0dcd8}}, 0x0, 0x0}, // PCIe?<br>
                {0x00,(0x02<<3)|0x0, {{0x60, 0xdcf8}, {0x00,
0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, // VGA<br>
                {0x00,(0x1e<<3)|0x0, {{0x61, 0xdcf8}, {0x68,
0xdcf8}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, // PCI bridge<br>
                {0x00,(0x1f<<3)|0x0, {{0x62, 0xdcf8}, {0x63,
0xdcd8}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, // LPC<br>
                {0x00,(0x1d<<3)|0x0, {{0x6b, 0xdcf8}, {0x63,
0xdcd8}, {0x62, 0xdcf8}, {0x60, 0x0dcf8}}, 0x0, 0x0}, // USB#1<br>
</b><br>
How can we decide which interrupts to allow, i.e dcf8, dcd8, ...<br>
<br>
I saw some clean bios implementations that just created one PIRQ entry
for every PCI device in the system... I think that should work for us,
too.<br>
But how can we find out the mapping... <br>
If we could do this on ACPI boards only, that would be fine, ... ACPI
knows the information, too, but in another format..<br>
<br>
<br>
<br>
<br>
<br>
<pre class="moz-signature" cols="72">-- 
coresystems GmbH • Brahmsstr. 16 • D-79104 Freiburg i. Br.
      Tel.: +49 761 7668825 • Fax: +49 761 7664613
Email: <a class="moz-txt-link-abbreviated" href="mailto:info@coresystems.de">info@coresystems.de</a>  • <a class="moz-txt-link-freetext" href="http://www.coresystems.de/">http://www.coresystems.de/</a>
Registergericht: Amtsgericht Freiburg • HRB 7656
Geschäftsführer: Stefan Reinauer • Ust-IdNr.: DE245674866
</pre>
</body>
</html>