Hi Aravind,

> +static int get_mtl_gms_size(struct intel_uncore *uncore)
> +{
> +     u16 ggc, gms;
> +
> +     ggc = intel_uncore_read16(uncore, _MMIO(0x108040));
> +
> +     /* check GGMS, should be fixed 0x3 (8MB) */
> +     if ((ggc & 0xc0) != 0xc0)
> +             return -EIO;
> +
> +     /* return valid GMS value, -EIO if invalid */
> +     gms = ggc >> 8;
> +     switch (gms) {
> +     case 0x0 ... 0x10:
> +             return gms * 32;
> +     case 0x20:
> +             return 1024;
> +     case 0x30:
> +             return 1536;
> +     case 0x40:
> +             return 2048;
> +     case 0xf0 ... 0xfe:

just a bit puzzled by the fact that case ranges are not standard
and are supported only by GCC, unless, of course, I miss
something. Do we still want to use them as they are widely used
around the kernel?

Andi

> +             return (gms - 0xf0 + 1) * 4;
> +     default:
> +             return -EIO;
> +     }
> +}

Reply via email to