Message ID | 1499182912-26730-1-git-send-email-clombard@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Christophe Lombard <clombard@linux.vnet.ibm.com> writes: > This patches removes this restriction and all page faults, whatever the > reason, will be handled. In this case, the interruption is always > acknowledged. This can also be done with adding call to cxl_ack_ae(ctx) at the end of cxl_handle_fault(). > static bool cxl_is_page_fault(struct cxl_context *ctx, u64 dsisr) > { > - u64 crs; /* Translation Checkout Response Status */ > - > if ((cxl_is_power8()) && (dsisr & CXL_PSL_DSISR_An_DM)) > return true; > > - if (cxl_is_power9()) { > - crs = (dsisr & CXL_PSL9_DSISR_An_CO_MASK); > - if ((crs == CXL_PSL9_DSISR_An_PF_SLR) || > - (crs == CXL_PSL9_DSISR_An_PF_RGC) || > - (crs == CXL_PSL9_DSISR_An_PF_RGP) || > - (crs == CXL_PSL9_DSISR_An_PF_HRH) || > - (crs == CXL_PSL9_DSISR_An_PF_STEG) || > - (crs == CXL_PSL9_DSISR_An_URTCH)) { > - return true; > - } > - } Removing this check will force call to copro_handle_mm_fault even for nmmu reported errors that only need to be communicated to the AFU and not handled by mm subsystem as such. > + if (cxl_is_power9()) > + return true; Optional: With this change the function has become a good candidate for being inlined or even converting to a macro.
diff --git a/drivers/misc/cxl/fault.c b/drivers/misc/cxl/fault.c index 6eed7d0..0cf7f4a 100644 --- a/drivers/misc/cxl/fault.c +++ b/drivers/misc/cxl/fault.c @@ -204,22 +204,11 @@ static bool cxl_is_segment_miss(struct cxl_context *ctx, u64 dsisr) static bool cxl_is_page_fault(struct cxl_context *ctx, u64 dsisr) { - u64 crs; /* Translation Checkout Response Status */ - if ((cxl_is_power8()) && (dsisr & CXL_PSL_DSISR_An_DM)) return true; - if (cxl_is_power9()) { - crs = (dsisr & CXL_PSL9_DSISR_An_CO_MASK); - if ((crs == CXL_PSL9_DSISR_An_PF_SLR) || - (crs == CXL_PSL9_DSISR_An_PF_RGC) || - (crs == CXL_PSL9_DSISR_An_PF_RGP) || - (crs == CXL_PSL9_DSISR_An_PF_HRH) || - (crs == CXL_PSL9_DSISR_An_PF_STEG) || - (crs == CXL_PSL9_DSISR_An_URTCH)) { - return true; - } - } + if (cxl_is_power9()) + return true; return false; }