Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  mce.c

  Sprache: C
 

// SPDX-License-Identifier: GPL-2.0-only
/* Copyright(c) 2024 Intel Corporation. All rights reserved. */
#include <linux/mm.h>
#include <linux/notifier.h>
#include <linux/set_memory.h>
#include <asm/mce.h>
#include <cxlmem.h>
#include "mce.h"

static int cxl_handle_mce(struct notifier_block *nb, unsigned long val,
     void *data)
{
 struct cxl_memdev_state *mds = container_of(nb, struct cxl_memdev_state,
          mce_notifier);
 struct cxl_memdev *cxlmd = mds->cxlds.cxlmd;
 struct cxl_port *endpoint = cxlmd->endpoint;
 struct mce *mce = data;
 u64 spa, spa_alias;
 unsigned long pfn;

 if (!mce || !mce_usable_address(mce))
  return NOTIFY_DONE;

 if (!endpoint)
  return NOTIFY_DONE;

 spa = mce->addr & MCI_ADDR_PHYSADDR;

 pfn = spa >> PAGE_SHIFT;
 if (!pfn_valid(pfn))
  return NOTIFY_DONE;

 spa_alias = cxl_port_get_spa_cache_alias(endpoint, spa);
 if (spa_alias == ~0ULL)
  return NOTIFY_DONE;

 pfn = spa_alias >> PAGE_SHIFT;

 /*
 * Take down the aliased memory page. The original memory page flagged
 * by the MCE will be taken cared of by the standard MCE handler.
 */

 dev_emerg(mds->cxlds.dev, "Offlining aliased SPA address0: %#llx\n",
    spa_alias);
 if (!memory_failure(pfn, 0))
  set_mce_nospec(pfn);

 return NOTIFY_OK;
}

static void cxl_unregister_mce_notifier(void *mce_notifier)
{
 mce_unregister_decode_chain(mce_notifier);
}

int devm_cxl_register_mce_notifier(struct device *dev,
       struct notifier_block *mce_notifier)
{
 mce_notifier->notifier_call = cxl_handle_mce;
 mce_notifier->priority = MCE_PRIO_UC;
 mce_register_decode_chain(mce_notifier);

 return devm_add_action_or_reset(dev, cxl_unregister_mce_notifier,
     mce_notifier);
}

Messung V0.5 in Prozent
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.11 Sekunden  (vorverarbeitet am  2026-06-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002