Linux pays no attention to the resource consumption reported for legacy devices in the DSDT Each of these devices each contain _CRS specifying the IO, DMA, and IRQ resources consumed by the device. For example, the mouse: Device (PS2M) { Name (_HID, EisaId ("PNP0F03")) Name (_CID, 0x130FD041) Method (_STA, 0, NotSerialized) { ShiftLeft (0x01, 0x0C, Local0) If (And (IOST, Local0)) { Return (0x0F) } If (OSFL ()) { Return (0x0B) } Else { Return (0x00) } } Name (CRS1, ResourceTemplate () { IRQNoFlags () {12} }) Name (CRS2, ResourceTemplate () { IO (Decode16, 0x0060, 0x0060, 0x00, 0x01) IO (Decode16, 0x0064, 0x0064, 0x00, 0x01) IRQNoFlags () {12} }) Method (_CRS, 0, NotSerialized) { ShiftLeft (0x01, 0x0A, Local0) If (And (IOST, Local0)) { Return (CRS1) } Else { Return (CRS2) } } } There are three potential benefits to mining this information. 1. correct resource values can be used. For legacy devices with hard-coded values, this 'ain't broke, so don't fix it'. However, if additional resources are added to the motherboard, this method would recognized that while the hard-coded drivers would not. 2. resource conflicts can be avoided. Again, Linux already skirts this issue by other methods. We'll come re-open this bug only when those methods start to fail... 3. free resources can be freed. In the example above, if the PS2 mouse is not present, the OS could realized, for example, that IRQ12 is available for other uses. This could be useful on a PIC-mode IRQ-starved system.... Here are the other south bridge devices listed in the DSDT for my D875PBZ: Device (SBRG) Device (PIC) Name (_HID, EisaId ("PNP0000")) Device (DMAD) Name (_HID, EisaId ("PNP0200")) Device (TMR) Name (_HID, EisaId ("PNP0100")) Device (RTC0) Name (_HID, EisaId ("PNP0B00")) Device (PS2K) Name (_HID, EisaId ("PNP0303")) Device (PS2M) Name (_HID, EisaId ("PNP0F03")) Device (SPKR) Name (_HID, EisaId ("PNP0800")) Device (COPR) Name (_HID, EisaId ("PNP0C04")) Device (\_SB.PCI0.SBRG.FDC0) Name (_HID, EisaId ("PNP0700")) Device (\_SB.PCI0.SBRG.UAR1) Name (_HID, EisaId ("PNP0501")) Device (\_SB.PCI0.SBRG.LPT) Name (_HID, EisaId ("PNP0400")) Device (\_SB.PCI0.SBRG.ECP) Name (_HID, EisaId ("PNP0401")) Device (SYSR) Name (_HID, EisaId ("PNP0C02")) Device (FWH) Name (_HID, EisaId ("INT0800")) Device (OSYS) Name (_HID, EisaId ("PNP0C02")) Device (\_SB.SYSM) Name (_HID, EisaId ("PNP0C01"))
*** Bug 2733 has been marked as a duplicate of this bug. ***
Current PNPACPI can penalize legacy irqs, so if pci devices will not use legacy devices' interrupt. >1. correct resource values can be used. I think PNPACPI can do it if legacy drivers use PNPACPI >3. free resources can be freed. > In the example above, if the PS2 mouse is not present, > the OS could realized, for example, that IRQ12 is available > for other uses. This could be useful on a PIC-mode IRQ-starved > system.... This is hard. you can hotplug PS2 mouse in Linux. Besides, PNP layer has some mechanism to assign free resources to legacy devices.
is this still a problem with linux-2.6.22.stable?
issue 1 is sloved. issue 2 and 3 are the same issue - Linux don't check if PNP resources are in use. But the issues don't make sense, as PNP resources are basically some io ports and the ports are below 1k, hotplug PCI devices don't use it. for pnp irq, we already penalize it, so we have no issue. I thought the issue doesn't exist in practice. I'd mark the track closed.