> -----Original Message----- > From: Jan Beulich [mailto:JBeulich@xxxxxxxx] > Sent: Monday, April 14, 2014 1:15 AM > To: KY Srinivasan > Cc: olaf@xxxxxxxxx; apw@xxxxxxxxxxxxx; x86@xxxxxxxxxx; > tglx@xxxxxxxxxxxxx; devel@xxxxxxxxxxxxxxxxxxxxxx; > gregkh@xxxxxxxxxxxxxxxxxxx; jasowang@xxxxxxxxxx; linux- > kernel@xxxxxxxxxxxxxxx; hpa@xxxxxxxxx > Subject: Re: [PATCH V2 1/1] X86: Probe for PIC and set legacy_pic > appropriately > > >>> On 12.04.14 at 07:56, <kys@xxxxxxxxxxxxx> wrote: > > --- a/arch/x86/kernel/i8259.c > > +++ b/arch/x86/kernel/i8259.c > > @@ -299,11 +299,30 @@ static void unmask_8259A(void) static void > > init_8259A(int auto_eoi) { > > unsigned long flags; > > + unsigned char probe_val = ~(1 << PIC_CASCADE_IR); > > + unsigned char new_val; > > > > i8259A_auto_eoi = auto_eoi; > > > > raw_spin_lock_irqsave(&i8259A_lock, flags); > > > > + /* > > + * Check to see if we have a PIC. > > + * Mask all except the cascade and read > > + * back the value we just wrote. If we don't > > + * have a PIC, we will read 0xff as opposed to the > > + * value we wrote. > > + */ > > + outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ > > + outb(probe_val, PIC_MASTER_IMR); > > + new_val = inb(PIC_MASTER_IMR); > > + if (probe_val != new_val) { > > + printk(KERN_INFO "Using NULL legacy PIC\n"); > > + legacy_pic = &null_legacy_pic; > > + raw_spin_unlock_irqrestore(&i8259A_lock, flags); > > + return; > > + } > > + > > outb(0xff, PIC_MASTER_IMR); /* mask all of 8259A-1 */ > > outb(0xff, PIC_SLAVE_IMR); /* mask all of 8259A-2 */ > > And I guess you should delete this last line now that this is already being > done slightly earlier - having it done twice is possibly going to confuse future > readers (in that they might ask themselves or others whether this really > needs to be done twice). Good point! I will fix this and resend. K. Y > > Jan _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel