[LinuxBIOS] Enabling APIC 82801xx
Marc Jones
marc.jones at amd.com
Fri Sep 28 18:12:40 CEST 2007
joe at smittys.pointclark.net wrote:
> Quoting joe at smittys.pointclark.net:
>
>> Quoting joe at smittys.pointclark.net:
>>
>>> OK, I have a new booting problem. LB dies on the
>>> i82801xx_enable_ioapic() function in 82801xx_lpc.c:
>>>
>>>
>>> void i82801xx_enable_ioapic(struct device *dev)
>>> {
>>> uint32_t reg32;
>>> volatile uint32_t *ioapic_index = (volatile uint32_t *)0xfec00000;
>>> volatile uint32_t *ioapic_data = (volatile uint32_t *)0xfec00010;
>>>
>>> reg32 = pci_read_config32(dev, GEN_CNTL);
>>> reg32 |= (3 << 7); /* Enable IOAPIC */
>>> reg32 |= (1 << 13); /* Coprocessor error enable */
>>> reg32 |= (1 << 1); /* Delayed transaction enable */
>>> reg32 |= (1 << 2); /* DMA collection buffer enable */
>>> pci_write_config32(dev, GEN_CNTL, reg32);
>>> printk_debug("IOAPIC Southbridge enabled %x\n", reg32);
>>>
>>> *ioapic_index = 0;
>>> *ioapic_data = (1 << 25);
>>>
>>> *ioapic_index = 0;
>>> reg32 = *ioapic_data;
>>> printk_debug("Southbridge APIC ID = %x\n", reg32);
>>> if (reg32 != (1 << 25))
>>> die("APIC Error\n");
>>>
>>> /* TODO: From i82801ca, needed/useful on other ICH? */
>>> *ioapic_index = 3; // Select Boot Configuration register
>>> *ioapic_data = 1; // Use Processor System Bus to deliver interrupts
>>> }
>>>
>>> Initializing devices...
>>> Root Device init
>>> PCI: 00:00.0 init
>>> Northbridge init
>>> PCI: 00:1d.0 init
>>> PCI: 00:1d.1 init
>>> PCI: 00:1d.2 init
>>> PCI: 00:1d.7 init
>>> EHCI: Setting up controller.. done.
>>> PCI: 00:1e.0 init
>>> PCI: 00:1f.0 init
>>> IOAPIC Southbridge enabled 2186
>>> Southbridge APIC ID = 0
>>> APIC Error
>>>
>>> What is going on here? Why is *ioapic_data coming back as 0x0 after it
>>> has been set to 0x2000000 (1 << 25)? Help?
>>>
>>>
>> Hmm. Could this be because *ioapic_data is not able to use the memory
>> space at 0xfec00010?? I also noticed in the bootlog the AC'97 Audio
>> Controller is using this memory space:
>>
>> PCI: 00:1f.0 assign_resources, bus 0 link: 0
>> PCI: 00:1f.5 1c <- [0x00fec00000 - 0x00fec000ff] mem
>>
>> Could this be causing the issue? If so how would I tell the AC'97
>> Audio Controller to use a different memory space?
>>
> Yup I was right, I disabled the AC'97 Audio Controller and it booted
> right up. Now I just have to figure out why the ac'97 audio is using
> this memory space and how to chage it. Anyone....Help?
>
> Thanks - Joe
>
That is strange. In devices\device.c:
#define DEVICE_MEM_HIGH 0xFEBFFFFFUL
There shouldn't be any PCI devices allocated at 0xFEC0_0000.
Marc
--
Marc Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com
http://www.amd.com/embeddedprocessors
More information about the coreboot
mailing list