驱动开发系列55 - Linux Graphics QXL显卡驱动代码分析(二)显存管理
一:概述
前面介绍了当内核检测到匹配的PCI设备后,会调用 qxl_pci_probe 初始化设备,其中会调用qxl_device_init 来初始化设备,为QXL设备进行内存映射,资源分配,环形缓冲区初始化,IRQ注册等操作,本文展开说说这些细节,以及介绍下QXL的显存管理。
二:QXL设备初始化细节
int qxl_device_init(struct qxl_device *qdev,struct pci_dev *pdev)
{int r, sb;pci_set_drvdata(pdev, &qdev->ddev);mutex_init(&qdev->gem.mutex);mutex_init(&qdev->update_area_mutex);mutex_init(&qdev->release_mutex);mutex_init(&qdev->surf_evict_mutex);qxl_gem_init(qdev);qdev->rom_base = pci_resource_start(pdev, 2);qdev->rom_size = pci_resource_len(pdev, 2);qdev->vram_base = pci_resource_start(pdev, 0);qdev->io_base