2010-06-07 21:05:43

by H. Peter Anvin

[permalink] [raw]
Subject: Re: [tip:x86/irq] x86, acpi/irq: Handle isa irqs that are not identity mapped to gsi's.

On 05/05/2010 02:32 AM, Eric W. Biederman wrote:
>>
>> can you use legacy_irq->nr_legacy_irqs instead of NR_IRQS_LEGACY ?
>
> No. legacy_irq->nr_legacy_irqs is just for dealing with hardware that
> does not have i8259 pics.
>

I don't know if it is "just" for this purpose. Quite on the contrary.
In fact, the fact that NR_IRQS_LEGACY is showing up at all looks like a
real problem.

> Here I am reserving 16 irqs above the gsi range in case we get a
> weird gsi to isa irq mapping.

But that 16 is exactly because those are the (platform-specific) legacy
IRQs.

> Currently the sfi spec doesn't mention anything explicitly. I
> took a quick read through it and sfi and I presume Moorestown
> is talking about non pci irqs. So I would not be surprised
> if we didn't have isa device drivers running on platforms
> without i8259s.

I'm confused about the above. Where do you see any mention to fixed
(ISA) IRQs in SFI or Moorestown? Jacob tells me they don't exist.

> Currently the code had a small bug dealing with multiple ioapics and
> the spec really is incomplete about how you map irqs from pci devices
> to interrupts. So it looks like SFI and Moorestown are more a lab
> experiment than real hardware at the moment. So I expect when
> it gets completely fleshed out we will have to jump through a
> similar set of hoops as we do with acpi to ensure the first 16
> irqs are not used for anything except isa irqs.

Moorestown hardware certainly exists, although not all the support is
upstream yet.

Either which way, anything which perpetuates NR_IRQS_LEGACY as a
compile-time constant is begging for people to get things wrong, and it
really needs to go away.

-hpa


2010-06-08 22:20:42

by Yinghai Lu

[permalink] [raw]
Subject: Re: [tip:x86/irq] x86, acpi/irq: Handle isa irqs that are not identity mapped to gsi's.

On 06/07/2010 02:05 PM, H. Peter Anvin wrote:
> On 05/05/2010 02:32 AM, Eric W. Biederman wrote:
>>>
>>> can you use legacy_irq->nr_legacy_irqs instead of NR_IRQS_LEGACY ?
>>
>> No. legacy_irq->nr_legacy_irqs is just for dealing with hardware that
>> does not have i8259 pics.
>>
>
> I don't know if it is "just" for this purpose. Quite on the contrary.
> In fact, the fact that NR_IRQS_LEGACY is showing up at all looks like a
> real problem.
>
>> Here I am reserving 16 irqs above the gsi range in case we get a
>> weird gsi to isa irq mapping.
>
> But that 16 is exactly because those are the (platform-specific) legacy
> IRQs.
>
>> Currently the sfi spec doesn't mention anything explicitly. I
>> took a quick read through it and sfi and I presume Moorestown
>> is talking about non pci irqs. So I would not be surprised
>> if we didn't have isa device drivers running on platforms
>> without i8259s.
>
> I'm confused about the above. Where do you see any mention to fixed
> (ISA) IRQs in SFI or Moorestown? Jacob tells me they don't exist.
>
>> Currently the code had a small bug dealing with multiple ioapics and
>> the spec really is incomplete about how you map irqs from pci devices
>> to interrupts. So it looks like SFI and Moorestown are more a lab
>> experiment than real hardware at the moment. So I expect when
>> it gets completely fleshed out we will have to jump through a
>> similar set of hoops as we do with acpi to ensure the first 16
>> irqs are not used for anything except isa irqs.
>
> Moorestown hardware certainly exists, although not all the support is
> upstream yet.
>
> Either which way, anything which perpetuates NR_IRQS_LEGACY as a
> compile-time constant is begging for people to get things wrong, and it
> really needs to go away.

yes, it should be replaced legacy_irq->nr_legacy_irs to make Moorestown to have sane irq index.

otherwise gsi_to_irq will mapping all [0, 15] to start from nr_irqs_gsi.

Thanks

Yinghai