[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-smp
Subject:    Re: APICs
From:       Joe <josepha48 () yahoo ! com>
Date:       1999-07-30 12:51:12
[Download RAW message or body]

I am not sure I understand what you are trying to do here? 

If you want all your interrupts on one CPU and the other CPU not
to have any interrupts use 2.2.9 or later (2.2.7 or later may
work ) and boot it with noapic, ('LILO: linux noapic')  and all
your interrupts will be on the boot processor...

correct me if I am wrong someone? but APIC is designed for
interrupts to be shared, and that is the main purpose of it or
the whole idea behind it, so what you are doing here is
destroying or mutilating the behavior of APIC (in a sense). Edge
and level is how the apic is triggered. I believe that has to do
with where on the clock pulse the interrupt is tripped. Ther eis
a patch that I was given that can be used to change an Edge
triggered interupt to a level, or level to an edge, and also to
an XT-PIC


--- Elena Nistal <enistal@tid.es> wrote:
> Hi all,
> I am trying to get one of the two CPUs of my linux box
> isolated from
> interrupts. Sp I have made some changes in the io_apic.c  and
> smp.c
> files of my linux-2.1.131 kernel. But when I make a 'cat
> /proc/interrupts' this is what it lists:
> 
> /*************/
> 
>       CPU0       CPU1
>   0:      73310      90992     IO-APIC-edge  timer
>   1:          1          1             IO-APIC-edge  keyboard
>   2:          0          0             XT-PIC  cascade
>   8:          1          0              IO-APIC-edge  rtc
>  12:        471        351         IO-APIC-edge  PS/2 Mouse
>  13:          1          0             XT-PIC  fpu
>  16:       9848          0          IO-APIC-level  aic7xxx,
> aic7xxx
>  20:       9289          0          IO-APIC-level  Intel
> EtherExpress
> Pro 10/100 Ethernet
>  21:       2201          0           IO-APIC-level  eni
> NMI:          0
> IPI:              0
> /*******************/
> 
> 
> which means that edge trigger interruptions are arriving to
> CPU #1
> (which is the one I am trying to isolate).
> I enclose the patch for io_apic.c and smp.c that I have made,
> to show
> you what I have done... could you please explain me why I do
> not get to
> isolate CPU #1 from edge-trigger interruptions??- Thank you in
> advance
> 
> /***************/
> diff -u -r linux-2.1.131/arch/i386/kernel/io_apic.c
> linux-2.1.131.patched/arch/i386/kernel/io_apic.c
> --- linux-2.1.131/arch/i386/kernel/io_apic.c Wed Oct  7
> 01:44:00 1998
> +++ linux-2.1.131.patched/arch/i386/kernel/io_apic.c Thu Jan 
> 7 12:07:19
> 1999
> @@ -594,7 +594,7 @@
>    if (irq_trigger(idx)) {
>     entry.trigger = 1;
>     entry.mask = 1;
> -   entry.dest.logical.logical_dest = 0xff;
> +   entry.dest.logical.logical_dest = 0x1; /* mpadmin patch */
>    }
> 
>    irq = pin_2_irq(idx,pin);
> diff -u -r linux-2.1.131/arch/i386/kernel/smp.c
> linux-2.1.131.patched/arch/i386/kernel/smp.c
> --- linux-2.1.131/arch/i386/kernel/smp.c Mon Oct  5 22:19:44
> 1998
> +++ linux-2.1.131.patched/arch/i386/kernel/smp.c Thu Jan  7
> 12:07:52
> 1999
> @@ -648,6 +648,10 @@
>    value &= ~(1<<9);  /* Enable focus processor (bit==0) */
>   value |= 0xff;   /* Set spurious IRQ vector to 0xff */
>    apic_write(APIC_SPIV,value);
> +
> + value=apic_read(APIC_LDR);
> + value=(value&0xffffff) | (0x2<<24);
> + apic_write(APIC_LDR, value);
> 
>    value = apic_read(APIC_TASKPRI);
>    value &= ~APIC_TPRI_MASK; /* Set Task Priority to 'accept
> all' */
> @@ -983,7 +987,7 @@
>  void __init smp_boot_cpus(void)
>  {
>   int i;
> - unsigned long cfg;
> + unsigned long cfg, l;
> 
>  #ifdef CONFIG_MTRR
>   /*  Must be done before other processors booted  */
> @@ -1078,6 +1082,10 @@
>    */
>   setup_APIC_clock ();
> 
> + l=apic_read(APIC_LDR);
> + l=(l&0xffffff) | (0x1<<24);
> + apic_write(APIC_LDR, l);
> +
>   /*
>    * Now scan the CPU present map and fire up the other CPUs.
>    */
> @@ -1795,6 +1803,10 @@
>    */
> 
>   ack_APIC_irq ();
> +
> + printk("LOCAL APIC for CPU hard %d, id %d: LDR=0x%x
> DFR=0x%x\n",
> +        hard_smp_processor_id(), smp_processor_id(),
> +        apic_read(APIC_LDR), apic_read(APIC_DFR));
> 
>   __restore_flags(flags);
>  }
> /*****************************/
> 
> 
> Looking forward to hearing from you.
> 
> Best Regards
> --
>
..............................................................................
> 
> Elena Nistal
> Telefonica I+D
> Servicios Avanzados en Red
> Emilio Vargas, 6
> 28043 Madrid (Spain)
> tel.:+34 913379915     fax: +34 913374491
> e-mail:enistal@tid.es
> http://www.tid.es
> 
> 
> -
> Linux SMP list: FIRST see FAQ at
> http://www.irisa.fr/prive/mentre/smp-faq/
> To Unsubscribe: send "unsubscribe linux-smp" to
> majordomo@vger.rutgers.edu
> 
> 

_____________________________________________________________
Do You Yahoo!?
Free instant messaging and more at http://messenger.yahoo.com

-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/mentre/smp-faq/
To Unsubscribe: send "unsubscribe linux-smp" to majordomo@vger.rutgers.edu

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic