Re: [PATCH v12 5/8] cxl/pci: Factor out interrupt policy check
Anisa Su <[email protected]> Thu, 6 Aug 2026 05:27:42 -0700
| Newsgroups | org.kernel.vger.linux-cxl,dev.linux.lists.nvdimm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Aug 03, 2026 at 04:55:01PM -0700, Alison Schofield wrote: > On Fri, Jul 31, 2026 at 01:48:10AM -0700, Anisa Su wrote: > > From: Ira Weiny <[email protected]> > > > > Dynamic Capacity Devices (DCD) require event interrupts to process > > memory addition or removal. BIOS may have control over non-DCD event > > processing. DCD interrupt configuration needs to be separate from > > memory event interrupt configuration. > > > > Factor out event interrupt setting validation. > > Hi Anisa, > > "Validation" seems like the wrong term here. The helper checks for > firmware ownership of the memory event logs. It is not validating > the event interrupt settings. > Fixed. Commit message now reads Factor out the check for firmware ownership of the memory event logs. > Which leads to my next comment - > > snip > > > > > > +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; > > +} > > Why such a general name here? This helper seems to have one very specific purpose. > > cxl_event_validate_mem_policy() doesn't validate the policy. It checks whether > firmware still owns the standard memory event logs despite _OSC granting OS > control. I'd prefer naming it after that condition rather than "validate". > Something like cxl_event_fw_owns_mem_logs() reads much closer to what the > code actually does. > Renamed -- Naming it after the condition means the return value has to invert, since true now means firmware does own them: static bool cxl_event_fw_owns_mem_logs(struct cxl_event_interrupt_policy *policy) { return 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); } so the caller loses its '!': if (cxl_event_fw_owns_mem_logs(&policy)) { dev_err(mds->cxlds.dev, "FW still in control of Event Logs despite _OSC settings\n"); return -EBUSY; } and I moved the dev_err out to the caller so cxl_event_fw_owns_mem_logs() only answers the question "Does the FW own event logs?" Thanks, Anisa > --Alison > > > > + > > static int cxl_event_config(struct pci_host_bridge *host_bridge, > > struct cxl_memdev_state *mds, bool irq_avail) > > { > > @@ -661,14 +676,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) > > -- > > 2.43.0 > >