Message ID | 20240324-dcd-type2-upstream-v1-12-b7b00d623625@intel.com |
---|---|
State | Changes Requested |
Headers | show |
Series | DCD: Add support for Dynamic Capacity Devices (DCD) | expand |
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) >
On Sun, 24 Mar 2024 16:18:15 -0700 Ira Weiny <ira.weiny@intel.com> 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: Jonathan Cameron <Jonathan.Cameron@huawei.com>
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)
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> --- Changes for V3: [iweiny: new patch] --- drivers/cxl/pci.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-)