* Currently only memory devices are represented.
   *
   * @dev: The device associated with this CXL state
+  * @cxlmd: The device representing the CXL.mem capabilities of @dev
   * @regs: Parsed register blocks
   * @cxl_dvsec: Offset to the PCIe device DVSEC
 + * @rcd: operating in RCD mode (CXL 3.0 9.11.8 CXL Devices Attached to an RCH)
   * @payload_size: Size of space for payload
   *                (CXL 2.0 8.2.8.4.3 Mailbox Capabilities Register)
   * @lsa_size: Size of Label Storage Area
 
        }
  }
  
 +/*
 + * Assume that any RCIEP that emits the CXL memory expander class code
 + * is an RCD
 + */
 +static bool is_cxl_restricted(struct pci_dev *pdev)
 +{
 +      return pci_pcie_type(pdev) == PCI_EXP_TYPE_RC_END;
 +}
 +
+ static void disable_aer(void *pdev)
+ {
+       pci_disable_pcie_error_reporting(pdev);
+ }
+ 
  static int cxl_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
  {
        struct cxl_register_map map;
        cxlds = cxl_dev_state_create(&pdev->dev);
        if (IS_ERR(cxlds))
                return PTR_ERR(cxlds);
+       pci_set_drvdata(pdev, cxlds);
  
 +      cxlds->rcd = is_cxl_restricted(pdev);
        cxlds->serial = pci_get_dsn(pdev);
        cxlds->cxl_dvsec = pci_find_dvsec_capability(
                pdev, PCI_DVSEC_VENDOR_ID_CXL, CXL_DVSEC_PCIE_DEVICE);
        if (IS_ERR(cxlmd))
                return PTR_ERR(cxlmd);
  
 -      if (resource_size(&cxlds->pmem_res) && IS_ENABLED(CONFIG_CXL_PMEM))
 -              rc = devm_cxl_add_nvdimm(&pdev->dev, cxlmd);
 -
+       if (cxlds->regs.ras) {
+               pci_enable_pcie_error_reporting(pdev);
+               rc = devm_add_action_or_reset(&pdev->dev, disable_aer, pdev);
+               if (rc)
+                       return rc;
+       }
+       pci_save_state(pdev);
+ 
        return rc;
  }