web-dev-qa-db-fra.com

Que signifie -1 pour modeset? Quelles sont les autres options pour le mode?

J'ai une idée approximative du paramètre KMS:

Kernel mode-setting (KMS) shifts responsibility for selecting and setting up the
graphics mode from X.org to the kernel. When X.org is started, it then detects
and uses the mode without any further mode changes. This promises to make 
booting faster, more graphical, and less flickery.

et je suppose que nomodeset désactive cette option (je n’ai pas choisi cette option), renvoyant probablement la responsabilité au module de la carte graphique?

Quand je fais cat /sys/module/i915/parameters/modeset je reçois -1, qu'est-ce que cela signifie exactement?

Examen

 modinfo i915 | grep modeset
parm:           modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from 
.config, 1=on, -1=force vga console preference [default]) (int)

On dirait que ça veut dire "forcer la préférence de la console vga", peu importe ce que ça veut dire ...

2
fpghost

Les documentations pour la plupart des paramètres de module sont accessibles depuis modinfo (lignes encapsulées pour plus de lisibilité):

$ modinfo i915 | grep modeset
parm:           modeset:Use kernel modesetting [KMS] (0=DRM_I915_KMS from
                .config, 1=on, -1=force vga console preference [default]) (int)

En lisant le code source Linux, il semble que le paramètre -1 ("forcer les préférences de la console vga") dépend de l'option nomodeset. C'est-à-dire que si l'option nomodeset est présente, elle agit comme i915.modeset=0. Sinon, si nomodeset est omis, il est traité comme si i915.modeset=1 était défini.


Chemin du code:

  • drivers/gpu/drm/i915/i915_drv.c (désactive le jeu de modes si le mode console texte est forcé):

    if (vgacon_text_force() && i915_modeset == -1)
        driver.driver_features &= ~DRIVER_MODESET;
    
  • video/console/vgacon.c:

    static int vgacon_text_mode_force;
    
    bool vgacon_text_force(void)
    {
        return vgacon_text_mode_force ? true : false;
    }
    
  • (même fichier):

    static int __init text_mode(char *str)
    {
        vgacon_text_mode_force = 1;
        return 1;
    }
    
  • (même fichier, défini via la cmdline du noyau):

    /* force text mode - used by kernel modesetting */
    __setup("nomodeset", text_mode);
    
3
Lekensteyn