lkml.org 
[lkml]   [2002]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] Summit support for 2.5 [0/4]
    > On Sun, 13 Oct 2002, Martin J. Bligh wrote:
    >> 1. Time
    >> 2. It'd make the patches much bigger and harder to read.
    >
    > Hmm.. I'd actually rather have the code split up in the proper location,
    > even if it would mean that summit support wouldn't work (or even
    > necessarily compile) by the feature-freeze.

    OK. Having looked at this, it actuallly looks easy enough, and
    cleaner if I can just stick to the Summit stuff for now. The
    patches will actually be smaller, and the only disadvantage seems
    to be that I'll end up with less hair ;-)

    Below is a brief proof-of-concept I did, please cluebat me now if
    this isn't the type of thing you want before I burn hours and blood
    pressure fixing up the rest of it.

    Consider me "re-aligned" ;-)

    M.

    PS. This distros want Summit to autodetect for their install kernels,
    which is what the x86_summit switch is for.

    ------------

    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/Config.help subarch-1/arch/i386/Config.help
    --- virgin/arch/i386/Config.help Fri Oct 11 21:21:31 2002
    +++ subarch-1/arch/i386/Config.help Sun Oct 13 18:40:30 2002
    @@ -73,6 +73,12 @@ CONFIG_X86_CYCLONE
    If you are suffering from time skew using a multi-CEC system, say YES.
    Otherwise it is safe to say NO.

    +CONFIG_X86_SUMMIT
    + This option is needed for IBM systems that use the Summit/EXA chipset.
    + In particular, it is needed for the x440.
    +
    + If you don't have one of these computers, you should say N here.
    +
    CONFIG_X86_UP_IOAPIC
    An IO-APIC (I/O Advanced Programmable Interrupt Controller) is an
    SMP-capable replacement for PC-style interrupt controllers. Most
    diff -urpN -X
    /home/fletch/.diff.exclude virgin/arch/i386/Makefile subarch-1/arch/i386/Makefile
    --- virgin/arch/i386/Makefile Fri Oct 11 21:21:39 2002
    +++ subarch-1/arch/i386/Makefile Sun Oct 13 17:54:32 2002
    @@ -46,7 +46,11 @@ CFLAGS += $(cflags-y)
    ifdef CONFIG_VISWS
    MACHINE := mach-visws
    else
    -MACHINE := mach-generic
    + ifdef CONFIG_X86_SUMMIT
    + MACHINE := mach-summit
    + else
    + MACHINE := mach-generic
    + endif
    endif

    HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/config.in subarch-1/arch/i386/config.in
    --- virgin/arch/i386/config.in Fri Oct 11 21:21:38 2002
    +++ subarch-1/arch/i386/config.in Sun Oct 13 18:40:30 2002
    @@ -172,7 +172,8 @@ else
    if [ "$CONFIG_X86_NUMA" = "y" ]; then

    #Platform Choices
    bool 'Multiquad (IBM/Sequent) NUMAQ support' CONFIG_X86_NUMAQ
    - if [ "$CONFIG_X86_NUMAQ" = "y" ]; then
    + bool 'IBM x440 (Summit/EXA) support' CONFIG_X86_SUMMIT
    + if [ "$CONFIG_X86_NUMAQ" = "y" -o "$CONFIG_X86_SUMMIT" = "y" ]; then
    define_bool CONFIG_CLUSTERED_APIC y
    fi
    # Common NUMA Features
    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/kernel/apic.c subarch-1/arch/i386/kernel/apic.c
    --- virgin/arch/i386/kernel/apic.c Fri Oct 11 21:22:46 2002
    +++ subarch-1/arch/i386/kernel/apic.c Sun Oct 13 18:34:45 2002
    @@ -31,6 +31,7 @@
    #include <asm/pgalloc.h>
    #include <asm/desc.h>
    #include <asm/arch_hooks.h>
    +#include "mach_apic.h"

    void __init apic_intr_init(void)
    {
    @@ -328,15 +329,13 @@
    void __init setup_local_APIC (void)
    * Put the APIC into flat delivery mode.
    * Must be "all ones" explicitly for 82489DX.
    */
    - apic_write_around(APIC_DFR, 0xffffffff);
    + apic_write_around(APIC_DFR, APIC_DFR_VALUE);

    /*
    * Set up the logical destination ID.
    */
    value = apic_read(APIC_LDR);
    - value &= ~APIC_LDR_MASK;
    - value |= (1<<(smp_processor_id()+24));
    - apic_write_around(APIC_LDR, value);
    + apic_write_around(APIC_LDR, calculate_ldr(value));
    }

    /*
    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/kernel/io_apic.c subarch-1/arch/i386/kernel/io_apic.c
    --- virgin/arch/i386/kernel/io_apic.c Fri Oct 11 21:21:38 2002
    +++ subarch-1/arch/i386/kernel/io_apic.c Sun Oct 13 18:33:53 2002
    @@ -35,6 +35,7 @@
    #include
    <asm/io.h>
    #include <asm/smp.h>
    #include <asm/desc.h>
    +#include "mach_apic.h"

    #undef APIC_LOCKUP_DEBUG

    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/mach-generic/mach_apic.h subarch-1/arch/i386/mach-generic/mach_apic.h
    --- virgin/arch/i386/mach-generic/mach_apic.h Wed Dec 31 16:00:00 1969
    +++ subarch-1/arch/i386/mach-generic/mach_apic.h Sun Oct 13 18:29:40 2002
    @@ -0,0 +1,20 @@
    +#ifndef __ASM_MACH_APICDEF_H
    +#define __ASM_MACH_APICDEF_H
    +
    +static inline unsigned long calculate_ldr(unsigned long old)
    +{
    + unsigned long id;
    +
    + id = 1UL << smp_processor_id();
    + return ((old & ~APIC_LDR_MASK) | SET_APIC_LOGICAL_ID(id));
    +}
    +
    +#define APIC_DFR_VALUE (APIC_DFR_FLAT)
    +
    +#ifdef CONFIG_SMP
    + #define TARGET_CPUS (clustered_apic_mode ? 0xf
    : cpu_online_map)
    +#else
    + #define TARGET_CPUS 0x01
    +#endif
    +
    +#endif /* __ASM_MACH_APICDEF_H */
    diff -urpN -X /home/fletch/.diff.exclude virgin/arch/i386/mach-summit/mach_apic.h subarch-1/arch/i386/mach-summit/mach_apic.h
    --- virgin/arch/i386/mach-summit/mach_apic.h Wed Dec 31 16:00:00 1969
    +++ subarch-1/arch/i386/mach-summit/mach_apic.h Sun Oct 13 18:14:32 2002
    @@ -0,0 +1,20 @@
    +#ifndef __ASM_MACH_APICDEF_H
    +#define __ASM_MACH_APICDEF_H
    +
    +extern int x86_summit;
    +
    +static inline unsigned long calculate_ldr(unsigned long old)
    +{
    + unsigned long id;
    +
    + if (x86_summit)
    + id = xapic_phys_to_log_apicid(hard_smp_processor_id());
    + else
    + id = 1UL << smp_processor_id();
    + return ((old & ~APIC_LDR_MASK) | SET_APIC_LOGICAL_ID(id));
    +}
    +
    +#define
    APIC_DFR_VALUE (x86_summit ? APIC_DFR_CLUSTER : APIC_DFR_FLAT)
    +#define TARGET_CPUS (x86_summit ? XAPIC_DEST_CPUS_MASK : cpu_online_map)
    +
    +#endif /* __ASM_MACH_APICDEF_H */
    diff -urpN -X /home/fletch/.diff.exclude virgin/include/asm-i386/apicdef.h subarch-1/include/asm-i386/apicdef.h
    --- virgin/include/asm-i386/apicdef.h Fri Oct 11 21:22:09 2002
    +++ subarch-1/include/asm-i386/apicdef.h Sun Oct 13 18:40:30 2002
    @@ -32,6 +32,8 @@
    #define SET_APIC_LOGICAL_ID(x) (((x)<<24))
    #define APIC_ALL_CPUS 0xFF
    #define APIC_DFR 0xE0
    +#define APIC_DFR_CLUSTER 0x0FFFFFFFul
    +#define APIC_DFR_FLAT 0xFFFFFFFFul
    #define APIC_SPIV 0xF0
    #define APIC_SPIV_FOCUS_DISABLED (1<<9)
    #define APIC_SPIV_APIC_ENABLED (1<<8)
    diff -urpN -X
    /home/fletch/.diff.exclude virgin/include/asm-i386/smp.h subarch-1/include/asm-i386/smp.h
    --- virgin/include/asm-i386/smp.h Fri Oct 11 21:22:09 2002
    +++ subarch-1/include/asm-i386/smp.h Sun Oct 13 18:31:05 2002
    @@ -21,17 +21,10 @@
    #endif
    #endif

    -#ifdef CONFIG_SMP
    -# ifdef CONFIG_CLUSTERED_APIC
    -# define TARGET_CPUS 0xf /* all CPUs in *THIS* quad */
    -# define INT_DELIVERY_MODE 0 /* physical delivery on LOCAL quad */
    -# else
    -# define TARGET_CPUS cpu_online_map
    -# define INT_DELIVERY_MODE 1 /* logical delivery broadcast to all procs */
    -# endif
    +#ifdef CONFIG_CLUSTERED_APIC
    + #define INT_DELIVERY_MODE 0 /* physical delivery on LOCAL quad */
    #else
    -# define INT_DELIVERY_MODE 1 /* logical delivery */
    -# define TARGET_CPUS
    0x01
    + #define INT_DELIVERY_MODE 1 /* logical delivery broadcast to all procs */
    #endif

    #ifndef clustered_apic_mode
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:30    [W:0.030 / U:31.272 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site