diff options
Diffstat (limited to 'drivers/misc/cxl')
-rw-r--r-- | drivers/misc/cxl/fault.c | 8 | ||||
-rw-r--r-- | drivers/misc/cxl/irq.c | 6 |
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/misc/cxl/fault.c b/drivers/misc/cxl/fault.c index c99e896604ee..f8684bca2d79 100644 --- a/drivers/misc/cxl/fault.c +++ b/drivers/misc/cxl/fault.c @@ -133,7 +133,7 @@ static void cxl_handle_page_fault(struct cxl_context *ctx, { unsigned flt = 0; int result; - unsigned long access, flags; + unsigned long access, flags, inv_flags = 0; if ((result = copro_handle_mm_fault(mm, dar, dsisr, &flt))) { pr_devel("copro_handle_mm_fault failed: %#x\n", result); @@ -149,8 +149,12 @@ static void cxl_handle_page_fault(struct cxl_context *ctx, access |= _PAGE_RW; if ((!ctx->kernel) || ~(dar & (1ULL << 63))) access |= _PAGE_USER; + + if (dsisr & DSISR_NOHPTE) + inv_flags |= HPTE_NOHPTE_UPDATE; + local_irq_save(flags); - hash_page_mm(mm, dar, access, 0x300); + hash_page_mm(mm, dar, access, 0x300, inv_flags); local_irq_restore(flags); pr_devel("Page fault successfully handled for pe: %i!\n", ctx->pe); diff --git a/drivers/misc/cxl/irq.c b/drivers/misc/cxl/irq.c index 08fb4a7ec4af..c294925f73ee 100644 --- a/drivers/misc/cxl/irq.c +++ b/drivers/misc/cxl/irq.c @@ -315,7 +315,7 @@ int cxl_register_psl_err_irq(struct cxl *adapter) { int rc; - adapter->irq_name = kasprintf(GFP_KERNEL,"cxl-%s-err", + adapter->irq_name = kasprintf(GFP_KERNEL, "cxl-%s-err", dev_name(&adapter->dev)); if (!adapter->irq_name) return -ENOMEM; @@ -347,7 +347,7 @@ int cxl_register_serr_irq(struct cxl_afu *afu) u64 serr; int rc; - afu->err_irq_name = kasprintf(GFP_KERNEL,"cxl-%s-err", + afu->err_irq_name = kasprintf(GFP_KERNEL, "cxl-%s-err", dev_name(&afu->dev)); if (!afu->err_irq_name) return -ENOMEM; @@ -379,7 +379,7 @@ int cxl_register_psl_irq(struct cxl_afu *afu) { int rc; - afu->psl_irq_name = kasprintf(GFP_KERNEL,"cxl-%s", + afu->psl_irq_name = kasprintf(GFP_KERNEL, "cxl-%s", dev_name(&afu->dev)); if (!afu->psl_irq_name) return -ENOMEM; |