lkml.org 
[lkml]   [2012]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH] Use x2apic_supported() in the default_apic_id_valid() function.
    From
    Date
    On Thu, 2012-03-15 at 23:34 +0100, Steffen Persvold wrote:
    > Is my understanding of your suggestion correct that in
    > x2apic_phys/cluster.c we add the following apic_id_valid() function :
    >
    > static int x2apic_apic_id_valid(int apicid)
    > {
    > return x2apic_mode || (apicid < 255);
    > }

    Steffen, We can have something like:

    static int x2apic_apic_id_valid(int apicid)
    {
    return 1;
    }
    and

    static int xapic_apic_id_valid(int apicid)
    {
    return apicid < 255;
    }
    If we have selected x2apic driver, then we know we are already in x2apic
    mode. And also x2apic_uv_x need to use the x2apic version above.

    > Considering that this function (apic->apic_id_valid()) is called already
    > in the acpi/boot.c::acpi_parse_x2apic() function is it sufficient enough
    > to test for x2apic_mode ? Yinghai indicated that x2apic_mode was not set
    > at this point, thus it was testing cpu_has_x2apic instead ?

    If the bios has handed over to us in x2apic mode (or if it is a numachip
    platform), then by this point apic driver is already set to the
    corresponding x2apic/numachip driver etc. so we should be fine.

    When we are in xapic mode, typically there should be no x2apic MADT
    entries. And even if there are any (bios not following x2apic spec), the
    above xapic_apic_id_valid() check will consider only those x2apic MADT
    entries whose id's are less than 255. xapic mode can go into x2apic mode
    later but that flow is not supposed to bring up any cpu with apic id >
    255. So parsing only entries with apic id < 255 here should be fine.

    Hope this clarifies.

    thanks,
    suresh



    \
     
     \ /
      Last update: 2012-03-16 00:07    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean