一:概述
前面介紹了當內核檢測到匹配的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