public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Malte Doersam <malte.d-hi6Y0CQ0nG0@public.gmane.org>
To: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: acpi_pci_link_check's attempt to find the _best_ irq prevents system from using ACPI irq routing
Date: Sat, 26 Apr 2003 19:47:36 +0200	[thread overview]
Message-ID: <200304261944.35901.malte.d@gmx.net> (raw)
In-Reply-To: <F760B14C9561B941B89469F59BA3A847E96E08-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org>

Hi Andy, Hi everbody

It took me severel hours to track down this to this point. As you stated, the 
acpi_pci_link_check doesn't block the booting.  I observed the loop with some 
printks in acpi_pci_link_check:

FYI my links: 
ACPI: PCI Interrupt Link [PILA] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILB] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILC] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILD] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILE] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILF] (IRQs 3 4 5 6 7 9 *11 12 14 15)
ACPI: PCI Interrupt Link [PILG] (IRQs 3 4 5 6 7 9 11 12 14 15, disabled)
ACPI: PCI Interrupt Link [PILh] (IRQs 3 4 5 6 7 9 11 12 14 15, disabled)

and here are my printks, the numbers in {{x}} represent the content of the 
variable before...

acpi_pci_link_check entered
link->irq.active --> IRQ: 11 Penalty: 100
link->irq.active --> IRQ: 11 Penalty: 200
link->irq.active --> IRQ: 11 Penalty: 300
link->irq.active --> IRQ: 11 Penalty: 400
link->irq.active --> IRQ: 11 Penalty: 500
link->irq.active --> IRQ: 11 Penalty: 600
!link->irq.active
!link->irq.active
first list_for_each completed

!link->irq.active
irq=link->irq.possible[0] {{3}}
for (i=( link->irq.possible_count {{10}} -1; i>0;i--) {
if (acpi_irq_penalty[irq] {{10020}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) { 	// 15
if (acpi_irq_penalty[irq] {{10020}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) {	// 14
if (acpi_irq_penalty[irq] {{10020}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) {	// 12
if (acpi_irq_penalty[irq] {{10020}} > acpi_irq_penalty[link->irq.possible[i]] 
{{620} ) {	// 11
irq = link->irq.possible[i] {{11}} ;
if (acpi_irq_penalty[irq] {{620}} > acpi_irq_penalty[link->irq.possible[i]] 
{{20} ) {		//  9
irq = link->irq.possible[i] {{9}} ;
if (acpi_irq_penalty[irq] {{20}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) {		//  7
if (acpi_irq_penalty[irq] {{20}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) {		//  6
if (acpi_irq_penalty[irq] {{20}} > acpi_irq_penalty[link->irq.possible[i]] 
{{20} ) {		//  5
if (acpi_irq_penalty[irq] {{20}} > acpi_irq_penalty[link->irq.possible[i]] 
{{10020} ) {		//  4
second list_for_each complete

acpi_pci_link_set(link,irq);

Ok, as you can see, it is trying to do the acpi_pci_link_set with IRQ 9, which 
doesn't work. Commenting out this check-loop made the disabled links to use 
the first IRQ (3) which worked.

Now to the interesting part, why IRQ doesn't work:

I followed the acpi_pci_link_set through zillions of lines of code ;) to this 
function ( drivers/acpi/parser/psparse.c)

acpi_status acpi_ps_parse_loop ( struct acpi_walk_state * walk_state)

The "offending part" is this:

/* This op complete, notify the dispatcher */

if (walk_state->ascending_callback != NULL ) {
  walk_state->op    = op;
  walk_state->opcode = op->common.aml_opcode;
  printk("Malte DEBUG: last seen line\n");
  status = walk_state->ascending_callback (walk_state);
  printk("Malte DEBUG: never got to this point with IRQ9\n");
  status = acpi_ps_next_parse_state (walk_state, op, status);
  if (status == AE_CTRL_PENDING) {
    status = AE_OK;
    goto close_this_op;
  }
}

Maybe you can send me some appropriate printk-instruction which print some 
usefull information for you about this 'blocker'? :-)
I'm not sure whether this might be an AML-Bug, but my dsdt.asl does compile 
fine with iasl. In the mean time I'm just using IRQ 3 for these links :-)

http://home.fhtw-berlin.de/~s0502837/linux.kernel/2.5.66.dsdt
http://home.fhtw-berlin.de/~s0502837/linux.kernel/dsdt.asl

cheers Malte




Am Mittwoch, 23. April 2003 20:19 schrieben Sie:
> Looks OK to me. You guys need to tell me *why* commenting it out fixes
> things - with it left in, what irq is it picking, and why isn't that irq
> working OK?
>
> Thanks -- Regards -- Andy



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf

       reply	other threads:[~2003-04-26 17:47 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <F760B14C9561B941B89469F59BA3A847E96E08@orsmsx401.jf.intel.com>
     [not found] ` <F760B14C9561B941B89469F59BA3A847E96E08-sBd4vmA9Se4Lll3ZsUKC9FDQ4js95KgL@public.gmane.org>
2003-04-26 17:47   ` Malte Doersam [this message]
2003-04-21  1:30 acpi_pci_link_check's attempt to find the _best_ irq prevents system from using ACPI irq routing Malte Doersam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200304261944.35901.malte.d@gmx.net \
    --to=malte.d-hi6y0cq0ng0@public.gmane.org \
    --cc=acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox