From nobody Sat Jul 25 20:07:52 2026 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 582CB42B750 for ; Tue, 14 Jul 2026 09:19:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784020765; cv=none; b=HLLWI+nxGSP+LxcehvqqPakDpj06MVBPktffnmaW92DT9ouCuovXylfFbQ88iKUlWK4w5neAjX+tDoojw0xnStW579geh/dh6uCx1zsvwKyz7B9Wg98SvFh01w8PMlsmYycDA/Ng4TYdhviMBfjGCsVqam4U5NHwUH8wswDoyyI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784020765; c=relaxed/simple; bh=4jrN4P13mnn3ohZ9RMlkaFWzGzgHgbyOmXepF1NqVeg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=GkIJfVsziFn4mTG1x7DorrG/d0gOu2lOeY50d6AMAROGJLa/jvkicxrNxvvapSAP1MpUs5o4PxyCY/ZggGcsJLM5Mu0GQF/A3VFzpk2uVZraxdeL1EjOSM096qtc7u5oW8yjcODHHaw5bjJTLj6cmkWQjyRJq8nRLT1nkCeXGS4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=FSltpnBi; arc=none smtp.client-ip=209.85.214.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="FSltpnBi" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-2ceed7018c8so3463905ad.1 for ; Tue, 14 Jul 2026 02:19:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1784020764; x=1784625564; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=Rrqy/2ZORFonPZQa3sYu9CDFkysvk9r9jieKWYMCoxU=; b=FSltpnBiQe5X6eRF+3HVOkuA0TswHnQqvaEgEHUvH0Edyrf8mSQM7w1+qSituID2hy E+sPQ0NWWDE9jspx9gfGjsa6/XxhxEHJ83v6fE8xAYNtrZU+ZsKsUIX89w2J72WMtdHt 5z6S12pTk8QMaq+x85wXe/k27V8qmfIoDep+M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784020764; x=1784625564; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=Rrqy/2ZORFonPZQa3sYu9CDFkysvk9r9jieKWYMCoxU=; b=qbPT52se1BXcYFTSRdsq3pAPCsOnYwfsgCGuuBGCRhwWyzOr+XRINkfGKGT3ado/ut +4yu3E2S8fy65zE7/SFQ2Wov60e4G8WhBlNKHe1mYLu62cJ7AdSGs+a/oBqzbP/QROy8 LXgJBu/KMlAydeZlk359vzG4VxQENOxLhUbt3iI4vWXoLpYXJg+ff+8VBaZBgIX5WXBM KDuRrP76hzXuyR4pj66vO2A+Y0AIsHdAbixELmLGbuGt5XCZUXmSgnQROjjc7Oi0lzy4 8C1cFWvnGwAc+J2/yFK4RhaE/zeZZ/7HOyVpAqscHpEwigKkCIX/V5kbJtzOMByarZuf jVVQ== X-Forwarded-Encrypted: i=1; AHgh+RoOok6/LlgP3/MTcq5Q7zGLpeWpelkLU6FJQEIJqZODJnkXW7Ma7ctnS+v15C50LaXLjDl2E4+FSkJ8LWs=@vger.kernel.org X-Gm-Message-State: AOJu0Ywp4dnRzhxhxejW70F7gDWFWOGd6oEDh7YmQRsxljK2IlEx+U35 a+XRk54h7SDvJv/8hp4ngm5z634Df5i2QLTtR8mwEy8MXqgjcq/qlD1NA6V8L2XEww== X-Gm-Gg: AfdE7ckUqLmuv6mWapZFPJool5djeyctnniDZExpawCe+lO9pzn9ye1c5Epsg83yVWn nK9KL0NcaBbCpDDh6PVbcqQMeiF+91B/4JEOdxUo4TfPhij/OgiFHvqVqiXZgKw4QK2SLNJNeD4 YH3KwME7Y9kKi+P3H3E3fxeDBFIFhI9B76CoxohY32CmIZg2GA+fmqDZwt8RNNFNwkCnlNwWamR wvfzS3GG1La9StY730NI9owZLLAvtboB2wyVAJg2gOTiLZ2My28Yntx9m0feGaOoqccNm5Sk2RX xa+LejzDW+zT+ladFBcsCXGhUShFQgpLemL9LXYO9FIXhGko3Dwz66e4ekLSDSkMppcZtua8rBZ rQ7s7mXaHQFGAeYV4xTBjbu6tdAm11+VbtK/Sy+j+aNXAsv5MX3qZer6u9nytpRihkCKLK9UQMI ED+zWEPU1mKFGfq2xGA8rUYy8rxJ+6Od0Yk62dKAnzs2IFsQ4dcsJosNSXgJtALTv34A3YIXbPa QtRsig= X-Received: by 2002:a17:902:e946:b0:2ca:281:27fd with SMTP id d9443c01a7336-2ce9ee11b49mr118440995ad.25.1784020763729; Tue, 14 Jul 2026 02:19:23 -0700 (PDT) Received: from yuanhsinte.c.googlers.com (176.220.194.35.bc.googleusercontent.com. [35.194.220.176]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm114246105ad.24.2026.07.14.02.19.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jul 2026 02:19:23 -0700 (PDT) From: Hsin-Te Yuan Date: Tue, 14 Jul 2026 09:19:18 +0000 Subject: [PATCH] firmware: google: coreboot_table: skip no-map CBMEM entries Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260714-coreboot-v1-1-f59754d71b55@chromium.org> X-B4-Tracking: v=1; b=H4sIABb/VWoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDc0MT3eT8otSk/PwSXRPDxOREk2RjC+OkZCWg8oKi1LTMCrBR0bG1tQB zVOfdWgAAAA== X-Change-ID: 20260714-coreboot-41aca4c383bc To: Tzung-Bi Shih , Brian Norris , Julius Werner Cc: chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, Yidi Lin , Hsin-Te Yuan X-Mailer: b4 0.14.3 From: Yidi Lin On ARM64 platforms, certain reserved memory regions (like those used by pKVM) are marked with the 'no-map' property. This indicates that the host kernel is forbidden from creating a structural mapping for these regions. The coreboot table may describe CBMEM entries that overlap with or are entirely contained within these no-map regions. Attempting to populate these entries as devices and subsequently remapping them can lead to system crashes or security violations. Refine the coreboot table population logic to verify that each CBMEM entry resides in 'Known Good' memory before creating a device. An entry is only considered safe if it is entirely System RAM or entirely standard Reserved memory (tagged with IORES_DESC_RESERVED). This dual-check ensures that: 1. ARM64 no-map regions are correctly filtered out (as they are neither System RAM nor tagged with the x86 reserved descriptor). 2. Standard reserved regions on x86 Chromebooks remain supported. 3. Mixed regions containing holes are safely skipped. Signed-off-by: Yidi Lin Signed-off-by: Hsin-Te Yuan --- drivers/firmware/google/coreboot_table.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/firmware/google/coreboot_table.c b/drivers/firmware/go= ogle/coreboot_table.c index e63933ff6747..f7357ed047e4 100644 --- a/drivers/firmware/google/coreboot_table.c +++ b/drivers/firmware/google/coreboot_table.c @@ -13,8 +13,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -123,7 +125,7 @@ static int coreboot_table_populate(struct device *dev, = void *ptr, resource_size_ =20 ptr_end =3D ptr + len; ptr_entry =3D ptr + header->header_bytes; - for (i =3D 0; i < header->table_entries; i++) { + for (i =3D 0; i < header->table_entries; i++, ptr_entry +=3D entry->size)= { if (ptr_entry + sizeof(*entry) > ptr_end) return -EINVAL; entry =3D ptr_entry; @@ -147,6 +149,23 @@ static int coreboot_table_populate(struct device *dev,= void *ptr, resource_size_ =20 switch (device->entry.tag) { case LB_TAG_CBMEM_ENTRY: + /* + * Skip entries that are not exclusively System RAM or + * Reserved memory. + * On ARM, no-map reserved regions are not System RAM. + * On x86, CBMEM often resides in IORES_DESC_RESERVED regions. + */ + if (region_intersects(device->cbmem_entry.address, + device->cbmem_entry.entry_size, + IORESOURCE_SYSTEM_RAM, + IORES_DESC_NONE) !=3D REGION_INTERSECTS && + region_intersects(device->cbmem_entry.address, + device->cbmem_entry.entry_size, + IORESOURCE_MEM, + IORES_DESC_RESERVED) !=3D REGION_INTERSECTS) { + kfree(device); + continue; + } dev_set_name(&device->dev, "cbmem-%08x", device->cbmem_entry.id); break; @@ -155,8 +174,6 @@ static int coreboot_table_populate(struct device *dev, = void *ptr, resource_size_ break; } =20 - ptr_entry +=3D entry->size; - ret =3D device_register(&device->dev); if (ret) { dev_warn(dev, "failed to register coreboot device: %d\n", ret); --- base-commit: 3b029c035b34bbc693405ddf759f0e9b920c27f1 change-id: 20260714-coreboot-41aca4c383bc Best regards, --=20 Hsin-Te Yuan