lkml.org 
[lkml]   [2024]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 12/26] cxl/pci: Factor out interrupt policy check
    From


    On 3/24/24 4:18 PM, Ira Weiny wrote:
    > Dynamic capacity devices (DCD) require interrupts to notify the host of
    > events in the DCD log. The interrupts for DCD may be supported despite
    > FW control of memory event logs.
    >
    > Prepare to support DCD event interrupts separate from other event
    > interrupts by factoring out the check for event interrupt settings.
    >
    > Signed-off-by: Ira Weiny <ira.weiny@intel.com>
    Reviewed-by: Dave Jiang <dave.jiang@intel.com>
    >
    > ---
    > Changes for V3:
    > [iweiny: new patch]
    > ---
    > drivers/cxl/pci.c | 23 ++++++++++++++++-------
    > 1 file changed, 16 insertions(+), 7 deletions(-)
    >
    > diff --git a/drivers/cxl/pci.c b/drivers/cxl/pci.c
    > index ccaf4ad26a4f..12cd5d399230 100644
    > --- a/drivers/cxl/pci.c
    > +++ b/drivers/cxl/pci.c
    > @@ -738,6 +738,21 @@ static bool cxl_event_int_is_fw(u8 setting)
    > return mode == CXL_INT_FW;
    > }
    >
    > +static bool cxl_event_validate_mem_policy(struct cxl_memdev_state *mds,
    > + struct cxl_event_interrupt_policy *policy)
    > +{
    > + if (cxl_event_int_is_fw(policy->info_settings) ||
    > + cxl_event_int_is_fw(policy->warn_settings) ||
    > + cxl_event_int_is_fw(policy->failure_settings) ||
    > + cxl_event_int_is_fw(policy->fatal_settings)) {
    > + dev_err(mds->cxlds.dev,
    > + "FW still in control of Event Logs despite _OSC settings\n");
    > + return false;
    > + }
    > +
    > + return true;
    > +}
    > +
    > static int cxl_event_config(struct pci_host_bridge *host_bridge,
    > struct cxl_memdev_state *mds, bool irq_avail)
    > {
    > @@ -760,14 +775,8 @@ static int cxl_event_config(struct pci_host_bridge *host_bridge,
    > if (rc)
    > return rc;
    >
    > - if (cxl_event_int_is_fw(policy.info_settings) ||
    > - cxl_event_int_is_fw(policy.warn_settings) ||
    > - cxl_event_int_is_fw(policy.failure_settings) ||
    > - cxl_event_int_is_fw(policy.fatal_settings)) {
    > - dev_err(mds->cxlds.dev,
    > - "FW still in control of Event Logs despite _OSC settings\n");
    > + if (!cxl_event_validate_mem_policy(mds, &policy))
    > return -EBUSY;
    > - }
    >
    > rc = cxl_event_config_msgnums(mds, &policy);
    > if (rc)
    >

    \
     
     \ /
      Last update: 2024-05-27 16:12    [W:2.634 / U:0.444 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site