Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: move i915_kick_out_vgacon to vgaarb

Also rename it to vga_remove_vgacon and add kerneldoc text.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20190301092502.30948-2-kraxel@redhat.com

+52 -34
+1 -34
drivers/gpu/drm/i915/i915_drv.c
··· 757 757 return ret; 758 758 } 759 759 760 - #if !defined(CONFIG_VGA_CONSOLE) 761 - static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) 762 - { 763 - return 0; 764 - } 765 - #elif !defined(CONFIG_DUMMY_CONSOLE) 766 - static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) 767 - { 768 - return -ENODEV; 769 - } 770 - #else 771 - static int i915_kick_out_vgacon(struct drm_i915_private *dev_priv) 772 - { 773 - int ret = 0; 774 - 775 - DRM_INFO("Replacing VGA console driver\n"); 776 - 777 - console_lock(); 778 - if (con_is_bound(&vga_con)) 779 - ret = do_take_over_console(&dummy_con, 0, MAX_NR_CONSOLES - 1, 1); 780 - if (ret == 0) { 781 - ret = do_unregister_con_driver(&vga_con); 782 - 783 - /* Ignore "already unregistered". */ 784 - if (ret == -ENODEV) 785 - ret = 0; 786 - } 787 - console_unlock(); 788 - 789 - return ret; 790 - } 791 - #endif 792 - 793 760 static void intel_init_dpio(struct drm_i915_private *dev_priv) 794 761 { 795 762 /* ··· 1387 1420 goto err_ggtt; 1388 1421 } 1389 1422 1390 - ret = i915_kick_out_vgacon(dev_priv); 1423 + ret = vga_remove_vgacon(pdev); 1391 1424 if (ret) { 1392 1425 DRM_ERROR("failed to remove conflicting VGA console\n"); 1393 1426 goto err_ggtt;
+49
drivers/gpu/vga/vgaarb.c
··· 48 48 #include <linux/miscdevice.h> 49 49 #include <linux/slab.h> 50 50 #include <linux/screen_info.h> 51 + #include <linux/vt.h> 52 + #include <linux/console.h> 51 53 52 54 #include <linux/uaccess.h> 53 55 ··· 169 167 pci_dev_put(vga_default); 170 168 vga_default = pci_dev_get(pdev); 171 169 } 170 + 171 + /** 172 + * vga_remove_vgacon - deactivete vga console 173 + * 174 + * Unbind and unregister vgacon in case pdev is the default vga 175 + * device. Can be called by gpu drivers on initialization to make 176 + * sure vga register access done by vgacon will not disturb the 177 + * device. 178 + * 179 + * @pdev: pci device. 180 + */ 181 + #if !defined(CONFIG_VGA_CONSOLE) 182 + int vga_remove_vgacon(struct pci_dev *pdev) 183 + { 184 + return 0; 185 + } 186 + #elif !defined(CONFIG_DUMMY_CONSOLE) 187 + int vga_remove_vgacon(struct pci_dev *pdev) 188 + { 189 + return -ENODEV; 190 + } 191 + #else 192 + int vga_remove_vgacon(struct pci_dev *pdev) 193 + { 194 + int ret = 0; 195 + 196 + if (pdev != vga_default) 197 + return 0; 198 + vgaarb_info(&pdev->dev, "deactivate vga console\n"); 199 + 200 + console_lock(); 201 + if (con_is_bound(&vga_con)) 202 + ret = do_take_over_console(&dummy_con, 0, 203 + MAX_NR_CONSOLES - 1, 1); 204 + if (ret == 0) { 205 + ret = do_unregister_con_driver(&vga_con); 206 + 207 + /* Ignore "already unregistered". */ 208 + if (ret == -ENODEV) 209 + ret = 0; 210 + } 211 + console_unlock(); 212 + 213 + return ret; 214 + } 215 + #endif 216 + EXPORT_SYMBOL(vga_remove_vgacon); 172 217 173 218 static inline void vga_irq_set_state(struct vga_device *vgadev, bool state) 174 219 {
+2
include/linux/vgaarb.h
··· 125 125 #ifdef CONFIG_VGA_ARB 126 126 extern struct pci_dev *vga_default_device(void); 127 127 extern void vga_set_default_device(struct pci_dev *pdev); 128 + extern int vga_remove_vgacon(struct pci_dev *pdev); 128 129 #else 129 130 static inline struct pci_dev *vga_default_device(void) { return NULL; }; 130 131 static inline void vga_set_default_device(struct pci_dev *pdev) { }; 132 + static inline int vga_remove_vgacon(struct pci_dev *pdev) { return 0; }; 131 133 #endif 132 134 133 135 /*