ia64/xen-unstable

changeset 1291:eb744c57aa04

bitkeeper revision 1.853 (407282d3tJwEyg57cPIuOEErciWHgA)

Port missing file updates from Linux 2.4.25.
author kaf24@scramble.cl.cam.ac.uk
date Tue Apr 06 10:13:39 2004 +0000 (2004-04-06)
parents 376ee82d5adc
children 505455b1e691
files xen/arch/i386/io_apic.c
line diff
     1.1 --- a/xen/arch/i386/io_apic.c	Tue Apr 06 09:50:25 2004 +0000
     1.2 +++ b/xen/arch/i386/io_apic.c	Tue Apr 06 10:13:39 2004 +0000
     1.3 @@ -937,6 +937,7 @@ void __init print_IO_APIC(void)
     1.4  	printk(KERN_DEBUG ".......     : IO APIC version: %04X\n", reg_01.version);
     1.5  	if (	(reg_01.version != 0x01) && /* 82489DX IO-APICs */
     1.6  		(reg_01.version != 0x02) && /* VIA */
     1.7 +		(reg_01.version != 0x03) && /* later VIA */
     1.8  		(reg_01.version != 0x10) && /* oldest IO-APICs */
     1.9  		(reg_01.version != 0x11) && /* Pentium/Pro IO-APICs */
    1.10  		(reg_01.version != 0x13) && /* Xeon IO-APICs */
    1.11 @@ -946,13 +947,31 @@ void __init print_IO_APIC(void)
    1.12  	if (reg_01.__reserved_1 || reg_01.__reserved_2)
    1.13  		UNEXPECTED_IO_APIC();
    1.14  
    1.15 -	if (reg_01.version >= 0x10) {
    1.16 +	/*
    1.17 +	 * Some Intel chipsets with IO APIC VERSION of 0x1? don't have reg_02,
    1.18 +	 * but the value of reg_02 is read as the previous read register
    1.19 +	 * value, so ignore it if reg_02 == reg_01.
    1.20 +	 */
    1.21 +	if (reg_01.version >= 0x10 && *(int *)&reg_02 != *(int *)&reg_01) {
    1.22  		printk(KERN_DEBUG ".... register #02: %08X\n", *(int *)&reg_02);
    1.23  		printk(KERN_DEBUG ".......     : arbitration: %02X\n", reg_02.arbitration);
    1.24  		if (reg_02.__reserved_1 || reg_02.__reserved_2)
    1.25  			UNEXPECTED_IO_APIC();
    1.26  	}
    1.27  
    1.28 +	/*
    1.29 +	 * Some Intel chipsets with IO APIC VERSION of 0x2? don't have reg_02
    1.30 +	 * or reg_03, but the value of reg_0[23] is read as the previous read
    1.31 +	 * register value, so ignore it if reg_03 == reg_0[12].
    1.32 +	 */
    1.33 +	if (reg_01.version >= 0x20 && *(int *)&reg_03 != *(int *)&reg_02 &&
    1.34 +	    *(int *)&reg_03 != *(int *)&reg_01) {
    1.35 +		printk(KERN_DEBUG ".... register #03: %08X\n", *(int *)&reg_03);
    1.36 +		printk(KERN_DEBUG ".......     : Boot DT    : %X\n", reg_03.boot_DT);
    1.37 +		if (reg_03.__reserved_1)
    1.38 +			UNEXPECTED_IO_APIC();
    1.39 +	}
    1.40 +
    1.41  	printk(KERN_DEBUG ".... IRQ redirection table:\n");
    1.42  
    1.43  	printk(KERN_DEBUG " NR Log Phy Mask Trig IRR Pol"