svn commit: r226018 - head/sys/mips/cavium

Juli Mallett jmallett at FreeBSD.org
Tue Oct 4 20:50:54 UTC 2011


Thanks!

On Tue, Oct 4, 2011 at 10:49, Marcel Moolenaar <marcel at freebsd.org> wrote:
> Author: marcel
> Date: Tue Oct  4 17:49:19 2011
> New Revision: 226018
> URL: http://svn.freebsd.org/changeset/base/226018
>
> Log:
>  Partially revert r224661:
>  octeon_ap_boot is not a bitmask. It holds the CPU Id of the
>  AP currently being started. As such there's no need to make
>  it a 64-bit integral and we're not limited to 64 CPUs.
>
>  Reported by: jmallet
>  Obtained from:        Andre Duane
>
> Modified:
>  head/sys/mips/cavium/asm_octeon.S
>  head/sys/mips/cavium/octeon_mp.c
>
> Modified: head/sys/mips/cavium/asm_octeon.S
> ==============================================================================
> --- head/sys/mips/cavium/asm_octeon.S   Tue Oct  4 17:32:01 2011        (r226017)
> +++ head/sys/mips/cavium/asm_octeon.S   Tue Oct  4 17:49:19 2011        (r226018)
> @@ -50,12 +50,12 @@ LEAF(octeon_ap_wait)
>        jal     platform_processor_id
>        nop
>
> -1:     lld     t0, octeon_ap_boot
> +1:     ll      t0, octeon_ap_boot
>        bne     v0, t0, 1b
>        nop
>
>        move    t0, zero
> -       scd     t0, octeon_ap_boot
> +       sc      t0, octeon_ap_boot
>
>        beqz    t0, 1b
>        nop
>
> Modified: head/sys/mips/cavium/octeon_mp.c
> ==============================================================================
> --- head/sys/mips/cavium/octeon_mp.c    Tue Oct  4 17:32:01 2011        (r226017)
> +++ head/sys/mips/cavium/octeon_mp.c    Tue Oct  4 17:49:19 2011        (r226018)
> @@ -46,8 +46,7 @@ __FBSDID("$FreeBSD$");
>  /* XXX */
>  extern cvmx_bootinfo_t *octeon_bootinfo;
>
> -/* NOTE: this 64-bit mask (and many others) limits MAXCPU to 64 */
> -uint64_t octeon_ap_boot = ~0ULL;
> +unsigned octeon_ap_boot = ~0;
>
>  void
>  platform_ipi_send(int cpuid)
> @@ -139,11 +138,11 @@ platform_start_ap(int cpuid)
>            DELAY(2000);    /* Give it a moment to start */
>        }
>
> -       if (atomic_cmpset_64(&octeon_ap_boot, ~0, cpuid) == 0)
> +       if (atomic_cmpset_32(&octeon_ap_boot, ~0, cpuid) == 0)
>                return (-1);
>        for (;;) {
>                DELAY(1000);
> -               if (atomic_cmpset_64(&octeon_ap_boot, 0, ~0) != 0)
> +               if (atomic_cmpset_32(&octeon_ap_boot, 0, ~0) != 0)
>                        return (0);
>                printf("Waiting for cpu%d to start\n", cpuid);
>        }
>


More information about the svn-src-head mailing list