From 54a4e78241bb19a799c307b439d939900a9f9519 Mon Sep 17 00:00:00 2001 From: Suresh Siddha Date: Fri, 2 Oct 2009 11:01:22 -0700 Subject: [PATCH] --- yaml --- r: 176885 b: refs/heads/master c: 751cafe3aeceb9ff887c97237f6daaf596c9e547 h: refs/heads/master i: 176883: 23ac8f51294990541540cdcef90fe827616674e5 v: v3 --- [refs] | 2 +- trunk/drivers/pci/dmar.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 3054eba15b65..6fe94cb5ebbd 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ee34b32d8c2950f66038c8975747ef9aec855289 +refs/heads/master: 751cafe3aeceb9ff887c97237f6daaf596c9e547 diff --git a/trunk/drivers/pci/dmar.c b/trunk/drivers/pci/dmar.c index 577956566a0b..63aa52973d4d 100644 --- a/trunk/drivers/pci/dmar.c +++ b/trunk/drivers/pci/dmar.c @@ -1040,6 +1040,7 @@ static void __dmar_enable_qi(struct intel_iommu *iommu) int dmar_enable_qi(struct intel_iommu *iommu) { struct q_inval *qi; + struct page *desc_page; if (!ecap_qis(iommu->ecap)) return -ENOENT; @@ -1056,13 +1057,16 @@ int dmar_enable_qi(struct intel_iommu *iommu) qi = iommu->qi; - qi->desc = (void *)(get_zeroed_page(GFP_ATOMIC)); - if (!qi->desc) { + + desc_page = alloc_pages_node(iommu->node, GFP_ATOMIC | __GFP_ZERO, 0); + if (!desc_page) { kfree(qi); iommu->qi = 0; return -ENOMEM; } + qi->desc = page_address(desc_page); + qi->desc_status = kmalloc(QI_LENGTH * sizeof(int), GFP_ATOMIC); if (!qi->desc_status) { free_page((unsigned long) qi->desc);