public inbox for linux-nvme@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCHv3 0/3] meta sgl and userspace protection
@ 2024-11-18 15:57 Keith Busch
  2024-11-18 15:57 ` [PATCHv3 1/3] nvme-pci: add support for sgl metadata Keith Busch
                   ` (2 more replies)
  0 siblings, 3 replies; 13+ messages in thread
From: Keith Busch @ 2024-11-18 15:57 UTC (permalink / raw)
  To: linux-nvme, hch, sagi; +Cc: Keith Busch

From: Keith Busch <kbusch@kernel.org>

Changes from v2:

  Added all the remaining sgl constants that the driver uses

  Made the meta sgl checks pci transport specific

  Fixed a coding mistake that was taking the sizeof the result of a
  sizeof

  Log a warning if the passthrough interface is used on devices that
  don't support sgl.

Keith Busch (3):
  nvme-pci: add support for sgl metadata
  nvme: define the remaining used sgls constants
  nvme-pci: use sgls for all user requests if possible

 drivers/nvme/host/ioctl.c       |  12 ++-
 drivers/nvme/host/nvme.h        |  10 ++-
 drivers/nvme/host/pci.c         | 147 ++++++++++++++++++++++++++++----
 drivers/nvme/host/rdma.c        |   4 +-
 drivers/nvme/target/admin-cmd.c |   7 +-
 include/linux/nvme.h            |   5 ++
 6 files changed, 161 insertions(+), 24 deletions(-)

-- 
2.43.5



^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCHv3 1/3] nvme-pci: add support for sgl metadata
  2024-11-18 15:57 [PATCHv3 0/3] meta sgl and userspace protection Keith Busch
@ 2024-11-18 15:57 ` Keith Busch
  2024-11-18 16:27   ` Christoph Hellwig
  2024-11-18 15:57 ` [PATCHv3 2/3] nvme: define the remaining used sgls constants Keith Busch
  2024-11-18 15:57 ` [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible Keith Busch
  2 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2024-11-18 15:57 UTC (permalink / raw)
  To: linux-nvme, hch, sagi; +Cc: Keith Busch

From: Keith Busch <kbusch@kernel.org>

Supporting this mode allows creating and merging multi-segment metadata
requests that wouldn't be possible otherwise. It also allows directly
using user space requests that straddle physically discontiguous pages.

Signed-off-by: Keith Busch <kbusch@kernel.org>
---
 drivers/nvme/host/nvme.h |   7 ++
 drivers/nvme/host/pci.c  | 144 +++++++++++++++++++++++++++++++++++----
 include/linux/nvme.h     |   1 +
 3 files changed, 137 insertions(+), 15 deletions(-)

diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 900719c4c70c1..5ef284a376cc7 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -1126,6 +1126,13 @@ static inline bool nvme_ctrl_sgl_supported(struct nvme_ctrl *ctrl)
 	return ctrl->sgls & ((1 << 0) | (1 << 1));
 }
 
+static inline bool nvme_ctrl_meta_sgl_supported(struct nvme_ctrl *ctrl)
+{
+	if (ctrl->ops->flags & NVME_F_FABRICS)
+		return true;
+	return ctrl->sgls & NVME_CTRL_SGLS_MSDS;
+}
+
 #ifdef CONFIG_NVME_HOST_AUTH
 int __init nvme_init_auth(void);
 void __exit nvme_exit_auth(void);
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 5f2e3ad2cc521..c6c3ae3a7c434 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -43,6 +43,7 @@
  */
 #define NVME_MAX_KB_SZ	8192
 #define NVME_MAX_SEGS	128
+#define NVME_MAX_META_SEGS 15
 #define NVME_MAX_NR_ALLOCATIONS	5
 
 static int use_threaded_interrupts;
@@ -144,6 +145,7 @@ struct nvme_dev {
 	struct sg_table *hmb_sgt;
 
 	mempool_t *iod_mempool;
+	mempool_t *iod_meta_mempool;
 
 	/* shadow doorbell buffer support: */
 	__le32 *dbbuf_dbs;
@@ -239,6 +241,8 @@ struct nvme_iod {
 	dma_addr_t first_dma;
 	dma_addr_t meta_dma;
 	struct sg_table sgt;
+	struct sg_table meta_sgt;
+	union nvme_descriptor meta_list;
 	union nvme_descriptor list[NVME_MAX_NR_ALLOCATIONS];
 };
 
@@ -506,6 +510,14 @@ static void nvme_commit_rqs(struct blk_mq_hw_ctx *hctx)
 	spin_unlock(&nvmeq->sq_lock);
 }
 
+static inline bool nvme_pci_metadata_use_sgls(struct nvme_dev *dev,
+					      struct request *req)
+{
+	if (!nvme_ctrl_meta_sgl_supported(&dev->ctrl))
+		return false;
+	return req->nr_integrity_segments > 1;
+}
+
 static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
 				     int nseg)
 {
@@ -518,6 +530,8 @@ static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
 		return false;
 	if (!nvmeq->qid)
 		return false;
+	if (nvme_pci_metadata_use_sgls(dev, req))
+		return true;
 	if (!sgl_threshold || avg_seg_size < sgl_threshold)
 		return false;
 	return true;
@@ -780,7 +794,8 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
 		struct bio_vec bv = req_bvec(req);
 
 		if (!is_pci_p2pdma_page(bv.bv_page)) {
-			if ((bv.bv_offset & (NVME_CTRL_PAGE_SIZE - 1)) +
+			if (!nvme_pci_metadata_use_sgls(dev, req) &&
+			    (bv.bv_offset & (NVME_CTRL_PAGE_SIZE - 1)) +
 			     bv.bv_len <= NVME_CTRL_PAGE_SIZE * 2)
 				return nvme_setup_prp_simple(dev, req,
 							     &cmnd->rw, &bv);
@@ -824,11 +839,69 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
 	return ret;
 }
 
-static blk_status_t nvme_map_metadata(struct nvme_dev *dev, struct request *req,
-		struct nvme_command *cmnd)
+static blk_status_t nvme_pci_setup_meta_sgls(struct nvme_dev *dev,
+					     struct request *req)
+{
+	struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
+	struct nvme_rw_command *cmnd = &iod->cmd.rw;
+	struct nvme_sgl_desc *sg_list;
+	struct scatterlist *sgl, *sg;
+	unsigned int entries;
+	dma_addr_t sgl_dma;
+	int rc, i;
+
+	iod->meta_sgt.sgl = mempool_alloc(dev->iod_meta_mempool, GFP_ATOMIC);
+	if (!iod->meta_sgt.sgl)
+		return BLK_STS_RESOURCE;
+
+	sg_init_table(iod->meta_sgt.sgl, req->nr_integrity_segments);
+	iod->meta_sgt.orig_nents = blk_rq_map_integrity_sg(req,
+							   iod->meta_sgt.sgl);
+	if (!iod->meta_sgt.orig_nents)
+		goto out_free_sg;
+
+	rc = dma_map_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req),
+			     DMA_ATTR_NO_WARN);
+	if (rc)
+		goto out_free_sg;
+
+	sg_list = dma_pool_alloc(dev->prp_small_pool, GFP_ATOMIC, &sgl_dma);
+	if (!sg_list)
+		goto out_unmap_sg;
+
+	entries = iod->meta_sgt.nents;
+	iod->meta_list.sg_list = sg_list;
+	iod->meta_dma = sgl_dma;
+
+	cmnd->flags = NVME_CMD_SGL_METASEG;
+	cmnd->metadata = cpu_to_le64(sgl_dma);
+
+	sgl = iod->meta_sgt.sgl;
+	if (entries == 1) {
+		nvme_pci_sgl_set_data(sg_list, sgl);
+		return BLK_STS_OK;
+	}
+
+	sgl_dma += sizeof(*sg_list);
+	nvme_pci_sgl_set_seg(sg_list, sgl_dma, entries);
+	for_each_sg(sgl, sg, entries, i)
+		nvme_pci_sgl_set_data(&sg_list[i + 1], sg);
+
+	return BLK_STS_OK;
+
+out_unmap_sg:
+	dma_unmap_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req), 0);
+out_free_sg:
+	mempool_free(iod->meta_sgt.sgl, dev->iod_meta_mempool);
+	return BLK_STS_RESOURCE;
+}
+
+static blk_status_t nvme_pci_setup_meta_mptr(struct nvme_dev *dev,
+					     struct request *req)
 {
 	struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
 	struct bio_vec bv = rq_integrity_vec(req);
+	struct nvme_command *cmnd = &iod->cmd;
 
 	iod->meta_dma = dma_map_bvec(dev->dev, &bv, rq_dma_dir(req), 0);
 	if (dma_mapping_error(dev->dev, iod->meta_dma))
@@ -837,6 +910,13 @@ static blk_status_t nvme_map_metadata(struct nvme_dev *dev, struct request *req,
 	return BLK_STS_OK;
 }
 
+static blk_status_t nvme_map_metadata(struct nvme_dev *dev, struct request *req)
+{
+	if (nvme_pci_metadata_use_sgls(dev, req))
+		return nvme_pci_setup_meta_sgls(dev, req);
+	return nvme_pci_setup_meta_mptr(dev, req);
+}
+
 static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req)
 {
 	struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
@@ -845,6 +925,7 @@ static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req)
 	iod->aborted = false;
 	iod->nr_allocations = -1;
 	iod->sgt.nents = 0;
+	iod->meta_sgt.nents = 0;
 
 	ret = nvme_setup_cmd(req->q->queuedata, req);
 	if (ret)
@@ -857,7 +938,7 @@ static blk_status_t nvme_prep_rq(struct nvme_dev *dev, struct request *req)
 	}
 
 	if (blk_integrity_rq(req)) {
-		ret = nvme_map_metadata(dev, req, &iod->cmd);
+		ret = nvme_map_metadata(dev, req);
 		if (ret)
 			goto out_unmap_data;
 	}
@@ -955,17 +1036,31 @@ static void nvme_queue_rqs(struct rq_list *rqlist)
 	*rqlist = requeue_list;
 }
 
+static __always_inline void nvme_unmap_metadata(struct nvme_dev *dev,
+						struct request *req)
+{
+	struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
+
+	if (!iod->meta_sgt.nents) {
+		dma_unmap_page(dev->dev, iod->meta_dma,
+			       rq_integrity_vec(req).bv_len,
+			       rq_dma_dir(req));
+		return;
+	}
+
+	dma_pool_free(dev->prp_small_pool, iod->meta_list.sg_list,
+		      iod->meta_dma);
+	dma_unmap_sgtable(dev->dev, &iod->meta_sgt, rq_dma_dir(req), 0);
+	mempool_free(iod->meta_sgt.sgl, dev->iod_meta_mempool);
+}
+
 static __always_inline void nvme_pci_unmap_rq(struct request *req)
 {
 	struct nvme_queue *nvmeq = req->mq_hctx->driver_data;
 	struct nvme_dev *dev = nvmeq->dev;
 
-	if (blk_integrity_rq(req)) {
-	        struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
-
-		dma_unmap_page(dev->dev, iod->meta_dma,
-			       rq_integrity_vec(req).bv_len, rq_dma_dir(req));
-	}
+	if (blk_integrity_rq(req))
+		nvme_unmap_metadata(dev, req);
 
 	if (blk_rq_nr_phys_segments(req))
 		nvme_unmap_data(dev, req);
@@ -2761,6 +2856,7 @@ static void nvme_release_prp_pools(struct nvme_dev *dev)
 
 static int nvme_pci_alloc_iod_mempool(struct nvme_dev *dev)
 {
+	size_t meta_size = sizeof(struct scatterlist) * (NVME_MAX_META_SEGS + 1);
 	size_t alloc_size = sizeof(struct scatterlist) * NVME_MAX_SEGS;
 
 	dev->iod_mempool = mempool_create_node(1,
@@ -2769,7 +2865,18 @@ static int nvme_pci_alloc_iod_mempool(struct nvme_dev *dev)
 			dev_to_node(dev->dev));
 	if (!dev->iod_mempool)
 		return -ENOMEM;
+
+	dev->iod_meta_mempool = mempool_create_node(1,
+			mempool_kmalloc, mempool_kfree,
+			(void *)meta_size, GFP_KERNEL,
+			dev_to_node(dev->dev));
+	if (!dev->iod_meta_mempool)
+		goto free;
+
 	return 0;
+free:
+	mempool_destroy(dev->iod_mempool);
+	return -ENOMEM;
 }
 
 static void nvme_free_tagset(struct nvme_dev *dev)
@@ -2834,6 +2941,11 @@ static void nvme_reset_work(struct work_struct *work)
 	if (result)
 		goto out;
 
+	if (nvme_ctrl_meta_sgl_supported(&dev->ctrl))
+		dev->ctrl.max_integrity_segments = NVME_MAX_META_SEGS;
+	else
+		dev->ctrl.max_integrity_segments = 1;
+
 	nvme_dbbuf_dma_alloc(dev);
 
 	result = nvme_setup_host_mem(dev);
@@ -3101,11 +3213,6 @@ static struct nvme_dev *nvme_pci_alloc_dev(struct pci_dev *pdev,
 	dev->ctrl.max_hw_sectors = min_t(u32,
 		NVME_MAX_KB_SZ << 1, dma_opt_mapping_size(&pdev->dev) >> 9);
 	dev->ctrl.max_segments = NVME_MAX_SEGS;
-
-	/*
-	 * There is no support for SGLs for metadata (yet), so we are limited to
-	 * a single integrity segment for the separate metadata pointer.
-	 */
 	dev->ctrl.max_integrity_segments = 1;
 	return dev;
 
@@ -3168,6 +3275,11 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	if (result)
 		goto out_disable;
 
+	if (nvme_ctrl_meta_sgl_supported(&dev->ctrl))
+		dev->ctrl.max_integrity_segments = NVME_MAX_META_SEGS;
+	else
+		dev->ctrl.max_integrity_segments = 1;
+
 	nvme_dbbuf_dma_alloc(dev);
 
 	result = nvme_setup_host_mem(dev);
@@ -3210,6 +3322,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 	nvme_free_queues(dev, 0);
 out_release_iod_mempool:
 	mempool_destroy(dev->iod_mempool);
+	mempool_destroy(dev->iod_meta_mempool);
 out_release_prp_pools:
 	nvme_release_prp_pools(dev);
 out_dev_unmap:
@@ -3275,6 +3388,7 @@ static void nvme_remove(struct pci_dev *pdev)
 	nvme_dbbuf_dma_free(dev);
 	nvme_free_queues(dev, 0);
 	mempool_destroy(dev->iod_mempool);
+	mempool_destroy(dev->iod_meta_mempool);
 	nvme_release_prp_pools(dev);
 	nvme_dev_unmap(dev);
 	nvme_uninit_ctrl(&dev->ctrl);
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 0a6e22038ce36..5873ce859cc8b 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -389,6 +389,7 @@ enum {
 	NVME_CTRL_CTRATT_PREDICTABLE_LAT	= 1 << 5,
 	NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY	= 1 << 7,
 	NVME_CTRL_CTRATT_UUID_LIST		= 1 << 9,
+	NVME_CTRL_SGLS_MSDS                     = 1 << 19,
 };
 
 struct nvme_lbaf {
-- 
2.43.5



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCHv3 2/3] nvme: define the remaining used sgls constants
  2024-11-18 15:57 [PATCHv3 0/3] meta sgl and userspace protection Keith Busch
  2024-11-18 15:57 ` [PATCHv3 1/3] nvme-pci: add support for sgl metadata Keith Busch
@ 2024-11-18 15:57 ` Keith Busch
  2024-11-18 16:28   ` Christoph Hellwig
  2024-11-18 15:57 ` [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible Keith Busch
  2 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2024-11-18 15:57 UTC (permalink / raw)
  To: linux-nvme, hch, sagi; +Cc: Keith Busch

From: Keith Busch <kbusch@kernel.org>

This provides a little more context when reading the code than hardcoded
magic numbers.

Signed-off-by: Keith Busch <kbusch@kernel.org>
---
 drivers/nvme/host/nvme.h        | 3 ++-
 drivers/nvme/host/rdma.c        | 4 ++--
 drivers/nvme/target/admin-cmd.c | 7 ++++---
 include/linux/nvme.h            | 4 ++++
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
index 5ef284a376cc7..611b02c8a8b37 100644
--- a/drivers/nvme/host/nvme.h
+++ b/drivers/nvme/host/nvme.h
@@ -1123,7 +1123,8 @@ static inline void nvme_start_request(struct request *rq)
 
 static inline bool nvme_ctrl_sgl_supported(struct nvme_ctrl *ctrl)
 {
-	return ctrl->sgls & ((1 << 0) | (1 << 1));
+	return ctrl->sgls & (NVME_CTRL_SGLS_BYTE_ALIGNED |
+			     NVME_CTRL_SGLS_DWORD_ALIGNED);
 }
 
 static inline bool nvme_ctrl_meta_sgl_supported(struct nvme_ctrl *ctrl)
diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
index 24a2759798d01..baf7d24901528 100644
--- a/drivers/nvme/host/rdma.c
+++ b/drivers/nvme/host/rdma.c
@@ -1019,7 +1019,7 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new)
 		goto destroy_admin;
 	}
 
-	if (!(ctrl->ctrl.sgls & (1 << 2))) {
+	if (!(ctrl->ctrl.sgls & NVME_CTRL_SGLS_KSDBDS)) {
 		ret = -EOPNOTSUPP;
 		dev_err(ctrl->ctrl.device,
 			"Mandatory keyed sgls are not supported!\n");
@@ -1051,7 +1051,7 @@ static int nvme_rdma_setup_ctrl(struct nvme_rdma_ctrl *ctrl, bool new)
 		ctrl->ctrl.sqsize = ctrl->ctrl.maxcmd - 1;
 	}
 
-	if (ctrl->ctrl.sgls & (1 << 20))
+	if (ctrl->ctrl.sgls & NVME_CTRL_SGLS_SAOS)
 		ctrl->use_inline_data = true;
 
 	if (ctrl->ctrl.queue_count > 1) {
diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index 934b401fbc2ff..4fa8496a4d967 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -601,11 +601,12 @@ static void nvmet_execute_identify_ctrl(struct nvmet_req *req)
 	id->awun = 0;
 	id->awupf = 0;
 
-	id->sgls = cpu_to_le32(1 << 0);	/* we always support SGLs */
+	/* we always support SGLs */
+	id->sgls = cpu_to_le32(NVME_CTRL_SGLS_BYTE_ALIGNED);
 	if (ctrl->ops->flags & NVMF_KEYED_SGLS)
-		id->sgls |= cpu_to_le32(1 << 2);
+		id->sgls |= cpu_to_le32(NVME_CTRL_SGLS_KSDBDS);
 	if (req->port->inline_data_size)
-		id->sgls |= cpu_to_le32(1 << 20);
+		id->sgls |= cpu_to_le32(NVME_CTRL_SGLS_SAOS);
 
 	strscpy(id->subnqn, ctrl->subsys->subsysnqn, sizeof(id->subnqn));
 
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 5873ce859cc8b..2baf9a80b470a 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -389,7 +389,11 @@ enum {
 	NVME_CTRL_CTRATT_PREDICTABLE_LAT	= 1 << 5,
 	NVME_CTRL_CTRATT_NAMESPACE_GRANULARITY	= 1 << 7,
 	NVME_CTRL_CTRATT_UUID_LIST		= 1 << 9,
+	NVME_CTRL_SGLS_BYTE_ALIGNED             = 1,
+	NVME_CTRL_SGLS_DWORD_ALIGNED            = 2,
+	NVME_CTRL_SGLS_KSDBDS			= 1 << 2,
 	NVME_CTRL_SGLS_MSDS                     = 1 << 19,
+	NVME_CTRL_SGLS_SAOS                     = 1 << 20,
 };
 
 struct nvme_lbaf {
-- 
2.43.5



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible
  2024-11-18 15:57 [PATCHv3 0/3] meta sgl and userspace protection Keith Busch
  2024-11-18 15:57 ` [PATCHv3 1/3] nvme-pci: add support for sgl metadata Keith Busch
  2024-11-18 15:57 ` [PATCHv3 2/3] nvme: define the remaining used sgls constants Keith Busch
@ 2024-11-18 15:57 ` Keith Busch
  2024-11-18 16:28   ` Christoph Hellwig
  2024-12-02  7:56   ` New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible) Paul Menzel
  2 siblings, 2 replies; 13+ messages in thread
From: Keith Busch @ 2024-11-18 15:57 UTC (permalink / raw)
  To: linux-nvme, hch, sagi; +Cc: Keith Busch

From: Keith Busch <kbusch@kernel.org>

If the device supports SGLs, use these for all user requests. This
format encodes the expected transfer length so it can catch short buffer
errors in a user command, whether it occurred accidently or maliciously.

For controllers that support SGL data mode, this is a viable mitigation
to CVE-2023-6238. For controllers that don't support SGL, log a warning
in the passthrough path since not having the capability can corrupt
data if the interface is not use correctly.

Signed-off-by: Keith Busch <kbusch@kernel.org>
---
 drivers/nvme/host/ioctl.c | 12 ++++++++++--
 drivers/nvme/host/pci.c   |  5 +++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c
index cb7f61e2077d0..64b5542fb3b79 100644
--- a/drivers/nvme/host/ioctl.c
+++ b/drivers/nvme/host/ioctl.c
@@ -120,12 +120,20 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
 	struct nvme_ns *ns = q->queuedata;
 	struct block_device *bdev = ns ? ns->disk->part0 : NULL;
 	bool supports_metadata = bdev && blk_get_integrity(bdev->bd_disk);
+	struct nvme_ctrl *ctrl = nvme_req(req)->ctrl;
 	bool has_metadata = meta_buffer && meta_len;
 	struct bio *bio = NULL;
 	int ret;
 
-	if (has_metadata && !supports_metadata)
-		return -EINVAL;
+	if (!nvme_ctrl_sgl_supported(ctrl))
+		dev_warn_once(ctrl->device, "using unchecked data buffer\n");
+	if (has_metadata) {
+		if (!supports_metadata)
+			return -EINVAL;
+		if (!nvme_ctrl_meta_sgl_supported(ctrl))
+			dev_warn_once(ctrl->device,
+				      "using unchecked metadata buffer\n");
+	}
 
 	if (ioucmd && (ioucmd->flags & IORING_URING_CMD_FIXED)) {
 		struct iov_iter iter;
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index c6c3ae3a7c434..4c644bb7f0692 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -515,7 +515,8 @@ static inline bool nvme_pci_metadata_use_sgls(struct nvme_dev *dev,
 {
 	if (!nvme_ctrl_meta_sgl_supported(&dev->ctrl))
 		return false;
-	return req->nr_integrity_segments > 1;
+	return req->nr_integrity_segments > 1 ||
+		nvme_req(req)->flags & NVME_REQ_USERCMD;
 }
 
 static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
@@ -533,7 +534,7 @@ static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
 	if (nvme_pci_metadata_use_sgls(dev, req))
 		return true;
 	if (!sgl_threshold || avg_seg_size < sgl_threshold)
-		return false;
+		return nvme_req(req)->flags & NVME_REQ_USERCMD;
 	return true;
 }
 
-- 
2.43.5



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCHv3 1/3] nvme-pci: add support for sgl metadata
  2024-11-18 15:57 ` [PATCHv3 1/3] nvme-pci: add support for sgl metadata Keith Busch
@ 2024-11-18 16:27   ` Christoph Hellwig
  0 siblings, 0 replies; 13+ messages in thread
From: Christoph Hellwig @ 2024-11-18 16:27 UTC (permalink / raw)
  To: Keith Busch; +Cc: linux-nvme, hch, sagi, Keith Busch

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCHv3 2/3] nvme: define the remaining used sgls constants
  2024-11-18 15:57 ` [PATCHv3 2/3] nvme: define the remaining used sgls constants Keith Busch
@ 2024-11-18 16:28   ` Christoph Hellwig
  0 siblings, 0 replies; 13+ messages in thread
From: Christoph Hellwig @ 2024-11-18 16:28 UTC (permalink / raw)
  To: Keith Busch; +Cc: linux-nvme, hch, sagi, Keith Busch

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible
  2024-11-18 15:57 ` [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible Keith Busch
@ 2024-11-18 16:28   ` Christoph Hellwig
  2024-12-02  7:56   ` New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible) Paul Menzel
  1 sibling, 0 replies; 13+ messages in thread
From: Christoph Hellwig @ 2024-11-18 16:28 UTC (permalink / raw)
  To: Keith Busch; +Cc: linux-nvme, hch, sagi, Keith Busch

On Mon, Nov 18, 2024 at 07:57:38AM -0800, Keith Busch wrote:
> From: Keith Busch <kbusch@kernel.org>
> 
> If the device supports SGLs, use these for all user requests. This
> format encodes the expected transfer length so it can catch short buffer
> errors in a user command, whether it occurred accidently or maliciously.
> 
> For controllers that support SGL data mode, this is a viable mitigation
> to CVE-2023-6238. For controllers that don't support SGL, log a warning
> in the passthrough path since not having the capability can corrupt
> data if the interface is not use correctly.

Looks good:

Reviewed-by: Christoph Hellwig <hch@lst.de>



^ permalink raw reply	[flat|nested] 13+ messages in thread

* New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible)
  2024-11-18 15:57 ` [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible Keith Busch
  2024-11-18 16:28   ` Christoph Hellwig
@ 2024-12-02  7:56   ` Paul Menzel
  2024-12-02 15:05     ` Keith Busch
  1 sibling, 1 reply; 13+ messages in thread
From: Paul Menzel @ 2024-12-02  7:56 UTC (permalink / raw)
  To: Keith Busch; +Cc: linux-nvme, hch, sagi, Keith Busch

[-- Attachment #1: Type: text/plain, Size: 3415 bytes --]

Dear Keith,


Thank you for the patch. I am seeing this warning now.

Am 18.11.24 um 16:57 schrieb Keith Busch:
> From: Keith Busch <kbusch@kernel.org>
> 
> If the device supports SGLs, use these for all user requests. This
> format encodes the expected transfer length so it can catch short buffer
> errors in a user command, whether it occurred accidently or maliciously.
> 
> For controllers that support SGL data mode, this is a viable mitigation
> to CVE-2023-6238. For controllers that don't support SGL, log a warning

For the layman, what is this security problem?

> in the passthrough path since not having the capability can corrupt
> data if the interface is not use correctly.
> 
> Signed-off-by: Keith Busch <kbusch@kernel.org>
> ---
>   drivers/nvme/host/ioctl.c | 12 ++++++++++--
>   drivers/nvme/host/pci.c   |  5 +++--
>   2 files changed, 13 insertions(+), 4 deletions(-)

This is commit 6fad84a4d624 [1] applied by Linus via the merge:

     cfd47302ac64 Merge tag 'block-6.13-20242901' of 
git://git.kernel.dk/linux

     $ git describe cfd47302ac64
     v6.12-12089-gcfd47302ac64

> diff --git a/drivers/nvme/host/ioctl.c b/drivers/nvme/host/ioctl.c
> index cb7f61e2077d0..64b5542fb3b79 100644
> --- a/drivers/nvme/host/ioctl.c
> +++ b/drivers/nvme/host/ioctl.c
> @@ -120,12 +120,20 @@ static int nvme_map_user_request(struct request *req, u64 ubuffer,
>   	struct nvme_ns *ns = q->queuedata;
>   	struct block_device *bdev = ns ? ns->disk->part0 : NULL;
>   	bool supports_metadata = bdev && blk_get_integrity(bdev->bd_disk);
> +	struct nvme_ctrl *ctrl = nvme_req(req)->ctrl;
>   	bool has_metadata = meta_buffer && meta_len;
>   	struct bio *bio = NULL;
>   	int ret;
>   
> -	if (has_metadata && !supports_metadata)
> -		return -EINVAL;
> +	if (!nvme_ctrl_sgl_supported(ctrl))
> +		dev_warn_once(ctrl->device, "using unchecked data buffer\n");

Linux logs this on the Dell XPS 13 9360 with PC300 NVMe SK hynix 512GB 
(firmware revision 20004A00).

     [   14.399238] nvme nvme0: using unchecked data buffer

What should a user do about it?

> +	if (has_metadata) {
> +		if (!supports_metadata)
> +			return -EINVAL;
> +		if (!nvme_ctrl_meta_sgl_supported(ctrl))
> +			dev_warn_once(ctrl->device,
> +				      "using unchecked metadata buffer\n");
> +	}
>   
>   	if (ioucmd && (ioucmd->flags & IORING_URING_CMD_FIXED)) {
>   		struct iov_iter iter;
> diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
> index c6c3ae3a7c434..4c644bb7f0692 100644
> --- a/drivers/nvme/host/pci.c
> +++ b/drivers/nvme/host/pci.c
> @@ -515,7 +515,8 @@ static inline bool nvme_pci_metadata_use_sgls(struct nvme_dev *dev,
>   {.
>   	if (!nvme_ctrl_meta_sgl_supported(&dev->ctrl))
>   		return false;
> -	return req->nr_integrity_segments > 1;
> +	return req->nr_integrity_segments > 1 ||
> +		nvme_req(req)->flags & NVME_REQ_USERCMD;
>   }
>   
>   static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
> @@ -533,7 +534,7 @@ static inline bool nvme_pci_use_sgls(struct nvme_dev *dev, struct request *req,
>   	if (nvme_pci_metadata_use_sgls(dev, req))
>   		return true;
>   	if (!sgl_threshold || avg_seg_size < sgl_threshold)
> -		return false;
> +		return nvme_req(req)->flags & NVME_REQ_USERCMD;
>   	return true;
>   }


Kind regards,

Paul


[1]: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fad84a4d624c300d03ebba457cc641765050c43

[-- Attachment #2: 20241202--dell-xps-13-9360--linux-6.12.0-12113-gbcc8eda6d349-messages.txt --]
[-- Type: text/plain, Size: 82924 bytes --]

[    0.000000] Linux version 6.12.0-12113-gbcc8eda6d349 (build@bohemianrhapsody.molgen.mpg.de) (gcc (Debian 14.2.0-8) 14.2.0, GNU ld (GNU Binutils for Debian) 2.43.50.20241126) #34 SMP PREEMPT_DYNAMIC Sun Dec  1 15:51:39 CET 2024
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-6.12.0-12113-gbcc8eda6d349 root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer mem_sleep_default=deep log_buf_len=8M cryptomgr.notests
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x0000000000057fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000000058000-0x0000000000058fff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000059000-0x000000000009dfff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009e000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000556aafff] usable
[    0.000000] BIOS-e820: [mem 0x00000000556ab000-0x00000000556abfff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000556ac000-0x00000000556acfff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000556ad000-0x0000000064df3fff] usable
[    0.000000] BIOS-e820: [mem 0x0000000064df4000-0x000000006517ffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000065180000-0x00000000651c3fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000651c4000-0x000000006f871fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000006f872000-0x000000006fffefff] reserved
[    0.000000] BIOS-e820: [mem 0x000000006ffff000-0x000000006fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000070000000-0x0000000077ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000078000000-0x00000000785fffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000078600000-0x000000007c7fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fe000000-0x00000000fe010fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000004817fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] APIC: Static calls initialized
[    0.000000] e820: update [mem 0x51a76018-0x51a86057] usable ==> usable
[    0.000000] extended physical RAM map:
[    0.000000] reserve setup_data: [mem 0x0000000000000000-0x0000000000057fff] usable
[    0.000000] reserve setup_data: [mem 0x0000000000058000-0x0000000000058fff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000000059000-0x000000000009dfff] usable
[    0.000000] reserve setup_data: [mem 0x000000000009e000-0x00000000000fffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000000100000-0x0000000051a76017] usable
[    0.000000] reserve setup_data: [mem 0x0000000051a76018-0x0000000051a86057] usable
[    0.000000] reserve setup_data: [mem 0x0000000051a86058-0x00000000556aafff] usable
[    0.000000] reserve setup_data: [mem 0x00000000556ab000-0x00000000556abfff] ACPI NVS
[    0.000000] reserve setup_data: [mem 0x00000000556ac000-0x00000000556acfff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000556ad000-0x0000000064df3fff] usable
[    0.000000] reserve setup_data: [mem 0x0000000064df4000-0x000000006517ffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000065180000-0x00000000651c3fff] ACPI data
[    0.000000] reserve setup_data: [mem 0x00000000651c4000-0x000000006f871fff] ACPI NVS
[    0.000000] reserve setup_data: [mem 0x000000006f872000-0x000000006fffefff] reserved
[    0.000000] reserve setup_data: [mem 0x000000006ffff000-0x000000006fffffff] usable
[    0.000000] reserve setup_data: [mem 0x0000000070000000-0x0000000077ffffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000078000000-0x00000000785fffff] usable
[    0.000000] reserve setup_data: [mem 0x0000000078600000-0x000000007c7fffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000e0000000-0x00000000efffffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fe000000-0x00000000fe010fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fee00000-0x00000000fee00fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000100000000-0x00000004817fffff] usable
[    0.000000] efi: EFI v2.4 by American Megatrends
[    0.000000] efi: ACPI=0x6518d000 ACPI 2.0=0x6518d000 SMBIOS=0xf0000 SMBIOS 3.0=0xf0020 TPMFinalLog=0x6f812000 ESRT=0x6fc86698 MEMATTR=0x62679298 INITRD=0x5577da98 TPMEventLog=0x65188018 
[    0.000000] efi: Remove mem36: MMIO range=[0xe0000000-0xefffffff] (256MB) from e820 map
[    0.000000] e820: remove [mem 0xe0000000-0xefffffff] reserved
[    0.000000] efi: Not removing mem37: MMIO range=[0xfe000000-0xfe010fff] (68KB) from e820 map
[    0.000000] efi: Not removing mem38: MMIO range=[0xfec00000-0xfec00fff] (4KB) from e820 map
[    0.000000] efi: Not removing mem39: MMIO range=[0xfee00000-0xfee00fff] (4KB) from e820 map
[    0.000000] efi: Remove mem40: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map
[    0.000000] e820: remove [mem 0xff000000-0xffffffff] reserved
[    0.000000] SMBIOS 3.0.0 present.
[    0.000000] DMI: Dell Inc. XPS 13 9360/0596KF, BIOS 2.21.0 06/02/2022
[    0.000000] DMI: Memory slots populated: 2/2
[    0.000000] tsc: Detected 2900.000 MHz processor
[    0.000000] tsc: Detected 2899.886 MHz TSC
[    0.000763] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000765] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000771] last_pfn = 0x481800 max_arch_pfn = 0x400000000
[    0.000774] MTRR map: 4 entries (3 fixed + 1 variable; max 23), built from 10 variable MTRRs
[    0.000776] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.001062] last_pfn = 0x78600 max_arch_pfn = 0x400000000
[    0.007051] esrt: Reserving ESRT space from 0x000000006fc86698 to 0x000000006fc866d0.
[    0.007056] Using GB pages for direct mapping
[    0.013569] printk: log buffer data + meta data: 8388608 + 29360128 = 37748736 bytes
[    0.013571] printk: early log buf free: 125336(95%)
[    0.013572] Secure boot disabled
[    0.013572] RAMDISK: [mem 0x51a87000-0x52591fff]
[    0.013576] ACPI: Early table checksum verification disabled
[    0.013579] ACPI: RSDP 0x000000006518D000 000024 (v02 DELL  )
[    0.013582] ACPI: XSDT 0x000000006518D0C8 00010C (v01 DELL   CBX3     01072009 AMI  00010013)
[    0.013587] ACPI: FACP 0x00000000651B2A48 00010C (v05 DELL   CBX3     01072009 AMI  00010013)
[    0.013591] ACPI: DSDT 0x000000006518D260 0257E7 (v02 DELL   CBX3     01072009 INTL 20160422)
[    0.013594] ACPI: FACS 0x000000006F86F180 000040
[    0.013595] ACPI: APIC 0x00000000651B2B58 000084 (v03 DELL   CBX3     01072009 AMI  00010013)
[    0.013597] ACPI: FPDT 0x00000000651B2BE0 000044 (v01 DELL   CBX3     01072009 AMI  00010013)
[    0.013599] ACPI: FIDT 0x00000000651B2C28 0000AC (v01 DELL   CBX3     01072009 AMI  00010013)
[    0.013601] ACPI: MCFG 0x00000000651B2CD8 00003C (v01 DELL   CBX3     01072009 MSFT 00000097)
[    0.013603] ACPI: HPET 0x00000000651B2D18 000038 (v01 DELL   CBX3     01072009 AMI. 0005000B)
[    0.013605] ACPI: SSDT 0x00000000651B2D50 000359 (v01 SataRe SataTabl 00001000 INTL 20160422)
[    0.013607] ACPI: BOOT 0x00000000651B30B0 000028 (v01 DELL   CBX3     01072009 AMI  00010013)
[    0.013609] ACPI: SSDT 0x00000000651B30D8 0012CF (v02 SaSsdt SaSsdt   00003000 INTL 20160422)
[    0.013612] ACPI: HPET 0x00000000651B43A8 000038 (v01 INTEL  KBL-ULT  00000001 MSFT 0000005F)
[    0.013614] ACPI: SSDT 0x00000000651B43E0 000D84 (v02 INTEL  xh_rvp07 00000000 INTL 20160422)
[    0.013616] ACPI: UEFI 0x00000000651B5168 000042 (v01                 00000000      00000000)
[    0.013618] ACPI: SSDT 0x00000000651B51B0 000EDE (v02 CpuRef CpuSsdt  00003000 INTL 20160422)
[    0.013620] ACPI: LPIT 0x00000000651B6090 000094 (v01 INTEL  KBL-ULT  00000000 MSFT 0000005F)
[    0.013623] ACPI: WSMT 0x00000000651B6128 000028 (v01 DELL   CBX3     00000000 MSFT 0000005F)
[    0.013625] ACPI: SSDT 0x00000000651B6150 000161 (v02 INTEL  HdaDsp   00000000 INTL 20160422)
[    0.013627] ACPI: SSDT 0x00000000651B62B8 00029F (v02 INTEL  sensrhub 00000000 INTL 20160422)
[    0.013630] ACPI: SSDT 0x00000000651B6558 003002 (v02 INTEL  PtidDevc 00001000 INTL 20160422)
[    0.013632] ACPI: SSDT 0x00000000651B9560 0000DB (v02 INTEL  TbtTypeC 00000000 INTL 20160422)
[    0.013634] ACPI: DBGP 0x00000000651B9640 000034 (v01 INTEL           00000002 MSFT 0000005F)
[    0.013636] ACPI: DBG2 0x00000000651B9678 000054 (v00 INTEL           00000002 MSFT 0000005F)
[    0.013638] ACPI: SSDT 0x00000000651B96D0 0007DD (v02 INTEL  UsbCTabl 00001000 INTL 20160422)
[    0.013640] ACPI: SSDT 0x00000000651B9EB0 0084F1 (v02 DptfTa DptfTabl 00001000 INTL 20160422)
[    0.013642] ACPI: SLIC 0x00000000651C23A8 000176 (v03 DELL   CBX3     01072009 MSFT 00010013)
[    0.013644] ACPI: NHLT 0x00000000651C2520 00002D (v00 INTEL  EDK2     00000002      01000013)
[    0.013646] ACPI: BGRT 0x00000000651C2550 000038 (v00                 01072009 AMI  00010013)
[    0.013648] ACPI: TPM2 0x00000000651C2588 000034 (v03        Tpm2Tabl 00000001 AMI  00000000)
[    0.013650] ACPI: ASF! 0x00000000651C25C0 0000A0 (v32 INTEL   HCG     00000001 TFSM 000F4240)
[    0.013652] ACPI: DMAR 0x00000000651C2660 0000F0 (v01 INTEL  KBL      00000001 INTL 00000001)
[    0.013654] ACPI: Reserving FACP table memory at [mem 0x651b2a48-0x651b2b53]
[    0.013655] ACPI: Reserving DSDT table memory at [mem 0x6518d260-0x651b2a46]
[    0.013655] ACPI: Reserving FACS table memory at [mem 0x6f86f180-0x6f86f1bf]
[    0.013656] ACPI: Reserving APIC table memory at [mem 0x651b2b58-0x651b2bdb]
[    0.013657] ACPI: Reserving FPDT table memory at [mem 0x651b2be0-0x651b2c23]
[    0.013657] ACPI: Reserving FIDT table memory at [mem 0x651b2c28-0x651b2cd3]
[    0.013658] ACPI: Reserving MCFG table memory at [mem 0x651b2cd8-0x651b2d13]
[    0.013658] ACPI: Reserving HPET table memory at [mem 0x651b2d18-0x651b2d4f]
[    0.013659] ACPI: Reserving SSDT table memory at [mem 0x651b2d50-0x651b30a8]
[    0.013659] ACPI: Reserving BOOT table memory at [mem 0x651b30b0-0x651b30d7]
[    0.013660] ACPI: Reserving SSDT table memory at [mem 0x651b30d8-0x651b43a6]
[    0.013661] ACPI: Reserving HPET table memory at [mem 0x651b43a8-0x651b43df]
[    0.013661] ACPI: Reserving SSDT table memory at [mem 0x651b43e0-0x651b5163]
[    0.013662] ACPI: Reserving UEFI table memory at [mem 0x651b5168-0x651b51a9]
[    0.013662] ACPI: Reserving SSDT table memory at [mem 0x651b51b0-0x651b608d]
[    0.013663] ACPI: Reserving LPIT table memory at [mem 0x651b6090-0x651b6123]
[    0.013663] ACPI: Reserving WSMT table memory at [mem 0x651b6128-0x651b614f]
[    0.013664] ACPI: Reserving SSDT table memory at [mem 0x651b6150-0x651b62b0]
[    0.013665] ACPI: Reserving SSDT table memory at [mem 0x651b62b8-0x651b6556]
[    0.013665] ACPI: Reserving SSDT table memory at [mem 0x651b6558-0x651b9559]
[    0.013666] ACPI: Reserving SSDT table memory at [mem 0x651b9560-0x651b963a]
[    0.013666] ACPI: Reserving DBGP table memory at [mem 0x651b9640-0x651b9673]
[    0.013667] ACPI: Reserving DBG2 table memory at [mem 0x651b9678-0x651b96cb]
[    0.013667] ACPI: Reserving SSDT table memory at [mem 0x651b96d0-0x651b9eac]
[    0.013668] ACPI: Reserving SSDT table memory at [mem 0x651b9eb0-0x651c23a0]
[    0.013669] ACPI: Reserving SLIC table memory at [mem 0x651c23a8-0x651c251d]
[    0.013669] ACPI: Reserving NHLT table memory at [mem 0x651c2520-0x651c254c]
[    0.013670] ACPI: Reserving BGRT table memory at [mem 0x651c2550-0x651c2587]
[    0.013670] ACPI: Reserving TPM2 table memory at [mem 0x651c2588-0x651c25bb]
[    0.013671] ACPI: Reserving ASF! table memory at [mem 0x651c25c0-0x651c265f]
[    0.013672] ACPI: Reserving DMAR table memory at [mem 0x651c2660-0x651c274f]
[    0.013788] No NUMA configuration found
[    0.013790] Faking a node at [mem 0x0000000000000000-0x00000004817fffff]
[    0.013803] NODE_DATA(0) allocated [mem 0x47f3d5680-0x47f3fffff]
[    0.013965] Zone ranges:
[    0.013965]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.013967]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.013968]   Normal   [mem 0x0000000100000000-0x00000004817fffff]
[    0.013969]   Device   empty
[    0.013970] Movable zone start for each node
[    0.013971] Early memory node ranges
[    0.013972]   node   0: [mem 0x0000000000001000-0x0000000000057fff]
[    0.013973]   node   0: [mem 0x0000000000059000-0x000000000009dfff]
[    0.013973]   node   0: [mem 0x0000000000100000-0x00000000556aafff]
[    0.013974]   node   0: [mem 0x00000000556ad000-0x0000000064df3fff]
[    0.013975]   node   0: [mem 0x000000006ffff000-0x000000006fffffff]
[    0.013975]   node   0: [mem 0x0000000078000000-0x00000000785fffff]
[    0.013976]   node   0: [mem 0x0000000100000000-0x00000004817fffff]
[    0.013978] Initmem setup node 0 [mem 0x0000000000001000-0x00000004817fffff]
[    0.013982] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.013984] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.014005] On node 0, zone DMA: 98 pages in unavailable ranges
[    0.016329] On node 0, zone DMA32: 2 pages in unavailable ranges
[    0.016751] On node 0, zone DMA32: 45579 pages in unavailable ranges
[    0.017269] On node 0, zone Normal: 31232 pages in unavailable ranges
[    0.017512] On node 0, zone Normal: 26624 pages in unavailable ranges
[    0.017520] Reserving Intel graphics memory at [mem 0x7a800000-0x7c7fffff]
[    0.017710] ACPI: PM-Timer IO Port: 0x1808
[    0.017715] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.017717] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[    0.017717] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[    0.017718] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1])
[    0.017744] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119
[    0.017746] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.017748] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.017751] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.017751] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[    0.017758] e820: update [mem 0x62260000-0x623ecfff] usable ==> reserved
[    0.017765] TSC deadline timer available
[    0.017769] CPU topo: Max. logical packages:   1
[    0.017769] CPU topo: Max. logical dies:       1
[    0.017770] CPU topo: Max. dies per package:   1
[    0.017773] CPU topo: Max. threads per core:   2
[    0.017774] CPU topo: Num. cores per package:     2
[    0.017774] CPU topo: Num. threads per package:   4
[    0.017775] CPU topo: Allowing 4 present CPUs plus 0 hotplug CPUs
[    0.017792] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.017794] PM: hibernation: Registered nosave memory: [mem 0x00058000-0x00058fff]
[    0.017796] PM: hibernation: Registered nosave memory: [mem 0x0009e000-0x000fffff]
[    0.017797] PM: hibernation: Registered nosave memory: [mem 0x51a76000-0x51a76fff]
[    0.017799] PM: hibernation: Registered nosave memory: [mem 0x51a86000-0x51a86fff]
[    0.017800] PM: hibernation: Registered nosave memory: [mem 0x556ab000-0x556abfff]
[    0.017800] PM: hibernation: Registered nosave memory: [mem 0x556ac000-0x556acfff]
[    0.017802] PM: hibernation: Registered nosave memory: [mem 0x62260000-0x623ecfff]
[    0.017803] PM: hibernation: Registered nosave memory: [mem 0x64df4000-0x6517ffff]
[    0.017804] PM: hibernation: Registered nosave memory: [mem 0x65180000-0x651c3fff]
[    0.017804] PM: hibernation: Registered nosave memory: [mem 0x651c4000-0x6f871fff]
[    0.017805] PM: hibernation: Registered nosave memory: [mem 0x6f872000-0x6fffefff]
[    0.017806] PM: hibernation: Registered nosave memory: [mem 0x70000000-0x77ffffff]
[    0.017807] PM: hibernation: Registered nosave memory: [mem 0x78600000-0x7c7fffff]
[    0.017808] PM: hibernation: Registered nosave memory: [mem 0x7c800000-0xfdffffff]
[    0.017808] PM: hibernation: Registered nosave memory: [mem 0xfe000000-0xfe010fff]
[    0.017809] PM: hibernation: Registered nosave memory: [mem 0xfe011000-0xfebfffff]
[    0.017809] PM: hibernation: Registered nosave memory: [mem 0xfec00000-0xfec00fff]
[    0.017810] PM: hibernation: Registered nosave memory: [mem 0xfec01000-0xfedfffff]
[    0.017810] PM: hibernation: Registered nosave memory: [mem 0xfee00000-0xfee00fff]
[    0.017811] PM: hibernation: Registered nosave memory: [mem 0xfee01000-0xffffffff]
[    0.017812] [mem 0x7c800000-0xfdffffff] available for PCI devices
[    0.017813] Booting paravirtualized kernel on bare hardware
[    0.017815] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.022148] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:4 nr_cpu_ids:4 nr_node_ids:1
[    0.022428] percpu: Embedded 94 pages/cpu s290816 r65536 d28672 u524288
[    0.022435] pcpu-alloc: s290816 r65536 d28672 u524288 alloc=1*2097152
[    0.022437] pcpu-alloc: [0] 0 1 2 3 
[    0.022454] Kernel command line: BOOT_IMAGE=/vmlinuz-6.12.0-12113-gbcc8eda6d349 root=UUID=32e29882-d94d-4a92-9ee4-4d03002bfa29 ro quiet pci=noaer mem_sleep_default=deep log_buf_len=8M cryptomgr.notests
[    0.022515] Unknown kernel command line parameters "BOOT_IMAGE=/vmlinuz-6.12.0-12113-gbcc8eda6d349", will be passed to user space.
[    0.022539] random: crng init done
[    0.024040] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes, linear)
[    0.024801] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[    0.024847] Fallback order for Node 0: 0 
[    0.024850] Built 1 zonelists, mobility grouping on.  Total pages: 4090767
[    0.024851] Policy zone: Normal
[    0.024857] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.024864] software IO TLB: area num 4.
[    0.043517] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.043519] kmemleak: Kernel memory leak detector disabled
[    0.043546] ftrace: allocating 43091 entries in 169 pages
[    0.057498] ftrace: allocated 169 pages with 4 groups
[    0.058174] Dynamic Preempt: voluntary
[    0.058206] rcu: Preemptible hierarchical RCU implementation.
[    0.058206] rcu: 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=4.
[    0.058208] 	Trampoline variant of Tasks RCU enabled.
[    0.058208] 	Rude variant of Tasks RCU enabled.
[    0.058208] 	Tracing variant of Tasks RCU enabled.
[    0.058209] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.058209] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.058214] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.058216] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.058217] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.061562] NR_IRQS: 524544, nr_irqs: 1024, preallocated irqs: 16
[    0.061771] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.061952] spurious 8259A interrupt: IRQ7.
[    0.061977] Console: colour dummy device 80x25
[    0.061980] printk: legacy console [tty0] enabled
[    0.062020] ACPI: Core revision 20240827
[    0.062167] hpet: HPET dysfunctional in PC10. Force disabled.
[    0.062221] APIC: Switch to symmetric I/O mode setup
[    0.062223] DMAR: Host address width 39
[    0.062224] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[    0.062230] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[    0.062232] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[    0.062237] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[    0.062239] DMAR: RMRR base: 0x00000064ec2000 end: 0x00000064ee1fff
[    0.062240] DMAR: RMRR base: 0x0000007a000000 end: 0x0000007c7fffff
[    0.062241] DMAR: ANDD device: 1 name: \_SB.PCI0.I2C0
[    0.062242] DMAR: ANDD device: 2 name: \_SB.PCI0.I2C1
[    0.062244] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed91000 IOMMU 1
[    0.062245] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[    0.062246] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[    0.063867] DMAR-IR: Enabled IRQ remapping in x2apic mode
[    0.063869] x2apic enabled
[    0.063921] APIC: Switched APIC routing to: cluster x2apic
[    0.067808] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x29ccd767b87, max_idle_ns: 440795223720 ns
[    0.067813] Calibrating delay loop (skipped), value calculated using timer frequency.. 5799.77 BogoMIPS (lpj=11599544)
[    0.067844] CPU0: Thermal monitoring enabled (TM1)
[    0.067880] Last level iTLB entries: 4KB 64, 2MB 8, 4MB 8
[    0.067882] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
[    0.067885] process: using mwait in idle threads
[    0.067888] Spectre V2 : User space: Vulnerable
[    0.067889] Speculative Store Bypass: Vulnerable
[    0.067892] SRBDS: Vulnerable
[    0.067897] GDS: Vulnerable
[    0.067901] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.067902] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.067903] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.067904] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
[    0.067905] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
[    0.067906] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.067907] x86/fpu: xstate_offset[3]:  832, xstate_sizes[3]:   64
[    0.067908] x86/fpu: xstate_offset[4]:  896, xstate_sizes[4]:   64
[    0.067909] x86/fpu: Enabled xstate features 0x1f, context size is 960 bytes, using 'compacted' format.
[    0.071811] Freeing SMP alternatives memory: 36K
[    0.071811] pid_max: default: 32768 minimum: 301
[    0.071811] LSM: initializing lsm=capability,landlock,apparmor,bpf
[    0.071811] landlock: Up and running.
[    0.071811] AppArmor: AppArmor initialized
[    0.071811] LSM support for eBPF active
[    0.071811] Mount-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.071811] Mountpoint-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.071811] smpboot: CPU0: Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz (family: 0x6, model: 0x8e, stepping: 0x9)
[    0.071811] Performance Events: PEBS fmt3+, Skylake events, 32-deep LBR, full-width counters, Intel PMU driver.
[    0.071811] ... version:                4
[    0.071811] ... bit width:              48
[    0.071811] ... generic registers:      4
[    0.071811] ... value mask:             0000ffffffffffff
[    0.071811] ... max period:             00007fffffffffff
[    0.071811] ... fixed-purpose events:   3
[    0.071811] ... event mask:             000000070000000f
[    0.071811] signal: max sigframe size: 1616
[    0.071811] Estimated ratio of average max frequency by base frequency (times 1024): 1235
[    0.071811] rcu: Hierarchical SRCU implementation.
[    0.071811] rcu: 	Max phase no-delay instances is 1000.
[    0.071811] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.071811] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.071811] smp: Bringing up secondary CPUs ...
[    0.071811] smpboot: x86: Booting SMP configuration:
[    0.071811] .... node  #0, CPUs:      #1 #2 #3
[    0.071811] smp: Brought up 1 node, 4 CPUs
[    0.071811] smpboot: Total of 4 processors activated (23199.08 BogoMIPS)
[    0.091835] node 0 deferred pages initialised in 24ms
[    0.092839] Memory: 15906080K/16363068K available (14336K kernel code, 2559K rwdata, 10216K rodata, 2880K init, 6356K bss, 446260K reserved, 0K cma-reserved)
[    0.092839] devtmpfs: initialized
[    0.092839] x86/mm: Memory block size: 128MB
[    0.092891] ACPI: PM: Registering ACPI NVS region [mem 0x556ab000-0x556abfff] (4096 bytes)
[    0.092891] ACPI: PM: Registering ACPI NVS region [mem 0x651c4000-0x6f871fff] (174776320 bytes)
[    0.096202] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.096210] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.096268] pinctrl core: initialized pinctrl subsystem
[    0.096685] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.096881] DMA: preallocated 2048 KiB GFP_KERNEL pool for atomic allocations
[    0.097003] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.097128] DMA: preallocated 2048 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.097144] audit: initializing netlink subsys (disabled)
[    0.097155] audit: type=2000 audit(1733123460.028:1): state=initialized audit_enabled=0 res=1
[    0.097155] thermal_sys: Registered thermal governor 'fair_share'
[    0.097155] thermal_sys: Registered thermal governor 'bang_bang'
[    0.097155] thermal_sys: Registered thermal governor 'step_wise'
[    0.097155] thermal_sys: Registered thermal governor 'user_space'
[    0.097155] thermal_sys: Registered thermal governor 'power_allocator'
[    0.097155] cpuidle: using governor ladder
[    0.097155] cpuidle: using governor menu
[    0.097155] Simple Boot Flag at 0x47 set to 0x80
[    0.097155] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it
[    0.097155] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.097155] PCI: ECAM [mem 0xe0000000-0xefffffff] (base 0xe0000000) for domain 0000 [bus 00-ff]
[    0.097155] PCI: Using configuration type 1 for base access
[    0.097155] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.097155] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.097155] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[    0.097155] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.097155] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[    0.097155] ACPI: Added _OSI(Module Device)
[    0.097155] ACPI: Added _OSI(Processor Device)
[    0.097155] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.097155] ACPI: Added _OSI(Processor Aggregator Device)
[    0.128113] ACPI: 11 ACPI AML tables successfully acquired and loaded
[    0.132076] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.137317] ACPI: Dynamic OEM Table Load:
[    0.137322] ACPI: SSDT 0xFFFF912301A56000 0003FF (v02 PmRef  Cpu0Cst  00003001 INTL 20160422)
[    0.138105] ACPI: Dynamic OEM Table Load:
[    0.138109] ACPI: SSDT 0xFFFF912301830800 0006F6 (v02 PmRef  Cpu0Ist  00003000 INTL 20160422)
[    0.139520] ACPI: Dynamic OEM Table Load:
[    0.139525] ACPI: SSDT 0xFFFF912301835800 00065C (v02 PmRef  ApIst    00003000 INTL 20160422)
[    0.140542] ACPI: Dynamic OEM Table Load:
[    0.140546] ACPI: SSDT 0xFFFF912301A93600 00018A (v02 PmRef  ApCst    00003000 INTL 20160422)
[    0.142942] ACPI: EC: EC started
[    0.142943] ACPI: EC: interrupt blocked
[    0.147791] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[    0.147793] ACPI: \_SB_.PCI0.LPCB.ECDV: Boot DSDT EC used to handle transactions
[    0.147795] ACPI: Interpreter enabled
[    0.147831] ACPI: PM: (supports S0 S3 S4 S5)
[    0.147832] ACPI: Using IOAPIC for interrupt routing
[    0.147865] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.147866] PCI: Using E820 reservations for host bridge windows
[    0.148368] ACPI: Enabled 8 GPEs in block 00 to 7F
[    0.151398] ACPI: \_SB_.PCI0.RP09.PXSX.WRST: New power resource
[    0.151651] ACPI: \_SB_.PCI0.RP10.PXSX.WRST: New power resource
[    0.151916] ACPI: \_SB_.PCI0.RP11.PXSX.WRST: New power resource
[    0.152165] ACPI: \_SB_.PCI0.RP12.PXSX.WRST: New power resource
[    0.152411] ACPI: \_SB_.PCI0.RP13.PXSX.WRST: New power resource
[    0.152658] ACPI: \_SB_.PCI0.RP01.PXSX.WRST: New power resource
[    0.153247] ACPI: \_SB_.PCI0.RP02.PXSX.WRST: New power resource
[    0.153495] ACPI: \_SB_.PCI0.RP03.PXSX.WRST: New power resource
[    0.153743] ACPI: \_SB_.PCI0.RP04.PXSX.WRST: New power resource
[    0.153994] ACPI: \_SB_.PCI0.RP05.PXSX.WRST: New power resource
[    0.154240] ACPI: \_SB_.PCI0.RP06.PXSX.WRST: New power resource
[    0.154496] ACPI: \_SB_.PCI0.RP07.PXSX.WRST: New power resource
[    0.154748] ACPI: \_SB_.PCI0.RP08.PXSX.WRST: New power resource
[    0.155000] ACPI: \_SB_.PCI0.RP17.PXSX.WRST: New power resource
[    0.155255] ACPI: \_SB_.PCI0.RP18.PXSX.WRST: New power resource
[    0.155503] ACPI: \_SB_.PCI0.RP19.PXSX.WRST: New power resource
[    0.155752] ACPI: \_SB_.PCI0.RP20.PXSX.WRST: New power resource
[    0.156792] ACPI: \_SB_.PCI0.RP14.PXSX.WRST: New power resource
[    0.157039] ACPI: \_SB_.PCI0.RP15.PXSX.WRST: New power resource
[    0.157287] ACPI: \_SB_.PCI0.RP16.PXSX.WRST: New power resource
[    0.176835] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe])
[    0.176841] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI HPX-Type3]
[    0.176997] acpi PNP0A08:00: _OSC: platform does not support [PCIeHotplug SHPCHotplug PME]
[    0.177277] acpi PNP0A08:00: _OSC: OS now controls [PCIeCapability LTR]
[    0.177279] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration
[    0.178001] PCI host bridge to bus 0000:00
[    0.178005] pci_bus 0000:00: root bus resource [io  0x0000-0x0cf7 window]
[    0.178007] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.178008] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000dffff window]
[    0.178010] pci_bus 0000:00: root bus resource [mem 0x7c800000-0xdfffffff window]
[    0.178011] pci_bus 0000:00: root bus resource [mem 0xfd000000-0xfe7fffff window]
[    0.178012] pci_bus 0000:00: root bus resource [bus 00-fe]
[    0.178026] pci 0000:00:00.0: [8086:5904] type 00 class 0x060000 conventional PCI endpoint
[    0.178093] pci 0000:00:02.0: [8086:5916] type 00 class 0x030000 PCIe Root Complex Integrated Endpoint
[    0.178100] pci 0000:00:02.0: BAR 0 [mem 0xdb000000-0xdbffffff 64bit]
[    0.178104] pci 0000:00:02.0: BAR 2 [mem 0x90000000-0x9fffffff 64bit pref]
[    0.178108] pci 0000:00:02.0: BAR 4 [io  0xf000-0xf03f]
[    0.178121] pci 0000:00:02.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.178243] pci 0000:00:04.0: [8086:1903] type 00 class 0x118000 conventional PCI endpoint
[    0.178251] pci 0000:00:04.0: BAR 0 [mem 0xdc320000-0xdc327fff 64bit]
[    0.178489] pci 0000:00:14.0: [8086:9d2f] type 00 class 0x0c0330 conventional PCI endpoint
[    0.178505] pci 0000:00:14.0: BAR 0 [mem 0xdc310000-0xdc31ffff 64bit]
[    0.178559] pci 0000:00:14.0: PME# supported from D3hot D3cold
[    0.179002] pci 0000:00:14.2: [8086:9d31] type 00 class 0x118000 conventional PCI endpoint
[    0.179016] pci 0000:00:14.2: BAR 0 [mem 0xdc334000-0xdc334fff 64bit]
[    0.179147] pci 0000:00:15.0: [8086:9d60] type 00 class 0x118000 conventional PCI endpoint
[    0.179175] pci 0000:00:15.0: BAR 0 [mem 0xdc333000-0xdc333fff 64bit]
[    0.179491] pci 0000:00:15.1: [8086:9d61] type 00 class 0x118000 conventional PCI endpoint
[    0.179519] pci 0000:00:15.1: BAR 0 [mem 0xdc332000-0xdc332fff 64bit]
[    0.179804] pci 0000:00:16.0: [8086:9d3a] type 00 class 0x078000 conventional PCI endpoint
[    0.179816] pci 0000:00:16.0: BAR 0 [mem 0xdc331000-0xdc331fff 64bit]
[    0.179859] pci 0000:00:16.0: PME# supported from D3hot
[    0.180151] pci 0000:00:1c.0: [8086:9d10] type 01 class 0x060400 PCIe Root Port
[    0.180170] pci 0000:00:1c.0: PCI bridge to [bus 01-39]
[    0.180175] pci 0000:00:1c.0:   bridge window [mem 0xc4000000-0xda0fffff]
[    0.180182] pci 0000:00:1c.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[    0.180228] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.180615] pci 0000:00:1c.4: [8086:9d14] type 01 class 0x060400 PCIe Root Port
[    0.180636] pci 0000:00:1c.4: PCI bridge to [bus 3a]
[    0.180641] pci 0000:00:1c.4:   bridge window [mem 0xdc000000-0xdc1fffff]
[    0.180695] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold
[    0.181080] pci 0000:00:1d.0: [8086:9d18] type 01 class 0x060400 PCIe Root Port
[    0.181097] pci 0000:00:1d.0: PCI bridge to [bus 3b]
[    0.181102] pci 0000:00:1d.0:   bridge window [mem 0xdc200000-0xdc2fffff]
[    0.181148] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.181541] pci 0000:00:1f.0: [8086:9d58] type 00 class 0x060100 conventional PCI endpoint
[    0.181808] pci 0000:00:1f.2: [8086:9d21] type 00 class 0x058000 conventional PCI endpoint
[    0.181820] pci 0000:00:1f.2: BAR 0 [mem 0xdc32c000-0xdc32ffff]
[    0.182019] pci 0000:00:1f.3: [8086:9d71] type 00 class 0x040380 conventional PCI endpoint
[    0.182037] pci 0000:00:1f.3: BAR 0 [mem 0xdc328000-0xdc32bfff 64bit]
[    0.182060] pci 0000:00:1f.3: BAR 4 [mem 0xdc300000-0xdc30ffff 64bit]
[    0.182100] pci 0000:00:1f.3: PME# supported from D3hot D3cold
[    0.182627] pci 0000:00:1f.4: [8086:9d23] type 00 class 0x0c0500 conventional PCI endpoint
[    0.182685] pci 0000:00:1f.4: BAR 0 [mem 0xdc330000-0xdc3300ff 64bit]
[    0.182756] pci 0000:00:1f.4: BAR 4 [io  0xf040-0xf05f]
[    0.183057] pci 0000:00:1c.0: PCI bridge to [bus 01-39]
[    0.183459] pci 0000:3a:00.0: [168c:003e] type 00 class 0x028000 PCIe Endpoint
[    0.183674] pci 0000:3a:00.0: BAR 0 [mem 0xdc000000-0xdc1fffff 64bit]
[    0.184799] pci 0000:3a:00.0: PME# supported from D0 D3hot D3cold
[    0.186450] pci 0000:00:1c.4: PCI bridge to [bus 3a]
[    0.186540] pci 0000:3b:00.0: [1c5c:1284] type 00 class 0x010802 PCIe Endpoint
[    0.186558] pci 0000:3b:00.0: BAR 0 [mem 0xdc200000-0xdc203fff 64bit]
[    0.186665] pci 0000:3b:00.0: PME# supported from D0 D1 D3hot
[    0.186984] pci 0000:00:1d.0: PCI bridge to [bus 3b]
[    0.189831] ACPI: PCI: Interrupt link LNKA configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKB configured for IRQ 10
[    0.189831] ACPI: PCI: Interrupt link LNKC configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKD configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKE configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKF configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKG configured for IRQ 11
[    0.189831] ACPI: PCI: Interrupt link LNKH configured for IRQ 11
[    0.199274] ACPI: EC: interrupt unblocked
[    0.199275] ACPI: EC: event unblocked
[    0.199281] ACPI: EC: EC_CMD/EC_SC=0x934, EC_DATA=0x930
[    0.199282] ACPI: EC: GPE=0x14
[    0.199283] ACPI: \_SB_.PCI0.LPCB.ECDV: Boot DSDT EC initialization complete
[    0.199285] ACPI: \_SB_.PCI0.LPCB.ECDV: EC: Used to handle transactions and events
[    0.199342] iommu: Default domain type: Translated
[    0.199342] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.199342] pps_core: LinuxPPS API ver. 1 registered
[    0.199342] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.199342] PTP clock support registered
[    0.199342] EDAC MC: Ver: 3.0.0
[    0.199817] efivars: Registered efivars operations
[    0.199982] NetLabel: Initializing
[    0.199983] NetLabel:  domain hash size = 128
[    0.199984] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.199999] NetLabel:  unlabeled traffic allowed by default
[    0.200001] PCI: Using ACPI for IRQ routing
[    0.223740] PCI: pci_cache_line_size set to 64 bytes
[    0.224007] e820: reserve RAM buffer [mem 0x00058000-0x0005ffff]
[    0.224009] e820: reserve RAM buffer [mem 0x0009e000-0x0009ffff]
[    0.224010] e820: reserve RAM buffer [mem 0x51a76018-0x53ffffff]
[    0.224011] e820: reserve RAM buffer [mem 0x556ab000-0x57ffffff]
[    0.224012] e820: reserve RAM buffer [mem 0x62260000-0x63ffffff]
[    0.224013] e820: reserve RAM buffer [mem 0x64df4000-0x67ffffff]
[    0.224014] e820: reserve RAM buffer [mem 0x78600000-0x7bffffff]
[    0.224015] e820: reserve RAM buffer [mem 0x481800000-0x483ffffff]
[    0.224046] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.224046] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.224046] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.224046] vgaarb: loaded
[    0.224046] clocksource: Switched to clocksource tsc-early
[    0.224046] VFS: Disk quotas dquot_6.6.0
[    0.224046] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.224069] AppArmor: AppArmor Filesystem Enabled
[    0.224080] pnp: PnP ACPI init
[    0.224277] system 00:00: [io  0x0680-0x069f] has been reserved
[    0.224280] system 00:00: [io  0xffff] has been reserved
[    0.224281] system 00:00: [io  0xffff] has been reserved
[    0.224282] system 00:00: [io  0xffff] has been reserved
[    0.224284] system 00:00: [io  0x1800-0x18fe] has been reserved
[    0.224285] system 00:00: [io  0x164e-0x164f] has been reserved
[    0.224399] system 00:02: [io  0x1854-0x1857] has been reserved
[    0.224725] system 00:05: [mem 0xfed10000-0xfed17fff] has been reserved
[    0.224727] system 00:05: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.224728] system 00:05: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.224730] system 00:05: [mem 0xe0000000-0xefffffff] has been reserved
[    0.224731] system 00:05: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.224732] system 00:05: [mem 0xfed90000-0xfed93fff] could not be reserved
[    0.224734] system 00:05: [mem 0xfed45000-0xfed8ffff] has been reserved
[    0.224735] system 00:05: [mem 0xff000000-0xffffffff] has been reserved
[    0.224736] system 00:05: [mem 0xfee00000-0xfeefffff] could not be reserved
[    0.224738] system 00:05: [mem 0xdffe0000-0xdfffffff] has been reserved
[    0.224771] system 00:06: [mem 0xfd000000-0xfdabffff] has been reserved
[    0.224773] system 00:06: [mem 0xfdad0000-0xfdadffff] has been reserved
[    0.224774] system 00:06: [mem 0xfdb00000-0xfdffffff] has been reserved
[    0.224776] system 00:06: [mem 0xfe000000-0xfe01ffff] could not be reserved
[    0.224777] system 00:06: [mem 0xfe036000-0xfe03bfff] has been reserved
[    0.224779] system 00:06: [mem 0xfe03d000-0xfe3fffff] has been reserved
[    0.224780] system 00:06: [mem 0xfe410000-0xfe7fffff] has been reserved
[    0.225023] system 00:07: [io  0xff00-0xfffe] has been reserved
[    0.225944] system 00:08: [mem 0xfe029000-0xfe029fff] has been reserved
[    0.225946] system 00:08: [mem 0xfe028000-0xfe028fff] has been reserved
[    0.229125] pnp: PnP ACPI: found 9 devices
[    0.234473] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.234521] NET: Registered PF_INET protocol family
[    0.234632] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.245936] tcp_listen_portaddr_hash hash table entries: 8192 (order: 5, 131072 bytes, linear)
[    0.245958] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.246008] TCP established hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.246205] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[    0.246414] TCP: Hash tables configured (established 131072 bind 65536)
[    0.246498] MPTCP token hash table entries: 16384 (order: 6, 393216 bytes, linear)
[    0.246555] UDP hash table entries: 8192 (order: 7, 524288 bytes, linear)
[    0.246622] UDP-Lite hash table entries: 8192 (order: 7, 524288 bytes, linear)
[    0.246697] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.246702] NET: Registered PF_XDP protocol family
[    0.246710] pci 0000:00:1c.0: bridge window [io  0x1000-0x0fff] to [bus 01-39] add_size 1000
[    0.246720] pci 0000:00:1c.0: bridge window [io  0x2000-0x2fff]: assigned
[    0.246722] pci 0000:00:1c.0: PCI bridge to [bus 01-39]
[    0.246725] pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
[    0.246728] pci 0000:00:1c.0:   bridge window [mem 0xc4000000-0xda0fffff]
[    0.246730] pci 0000:00:1c.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[    0.246734] pci 0000:00:1c.4: PCI bridge to [bus 3a]
[    0.246738] pci 0000:00:1c.4:   bridge window [mem 0xdc000000-0xdc1fffff]
[    0.246743] pci 0000:00:1d.0: PCI bridge to [bus 3b]
[    0.246746] pci 0000:00:1d.0:   bridge window [mem 0xdc200000-0xdc2fffff]
[    0.246751] pci_bus 0000:00: resource 4 [io  0x0000-0x0cf7 window]
[    0.246752] pci_bus 0000:00: resource 5 [io  0x0d00-0xffff window]
[    0.246754] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000dffff window]
[    0.246755] pci_bus 0000:00: resource 7 [mem 0x7c800000-0xdfffffff window]
[    0.246756] pci_bus 0000:00: resource 8 [mem 0xfd000000-0xfe7fffff window]
[    0.246757] pci_bus 0000:01: resource 0 [io  0x2000-0x2fff]
[    0.246758] pci_bus 0000:01: resource 1 [mem 0xc4000000-0xda0fffff]
[    0.246759] pci_bus 0000:01: resource 2 [mem 0xa0000000-0xc1ffffff 64bit pref]
[    0.246760] pci_bus 0000:3a: resource 1 [mem 0xdc000000-0xdc1fffff]
[    0.246762] pci_bus 0000:3b: resource 1 [mem 0xdc200000-0xdc2fffff]
[    0.247292] PCI: CLS 0 bytes, default 64
[    0.247343] pci 0000:00:1f.1: [8086:9d20] type 00 class 0x058000 conventional PCI endpoint
[    0.247402] pci 0000:00:1f.1: BAR 0 [mem 0xfd000000-0xfdffffff 64bit]
[    0.247629] DMAR: ACPI device "device:79" under DMAR at fed91000 as 00:15.0
[    0.247632] DMAR: ACPI device "device:7a" under DMAR at fed91000 as 00:15.1
[    0.247642] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.247643] software IO TLB: mapped [mem 0x000000005e260000-0x0000000062260000] (64MB)
[    0.247679] Unpacking initramfs...
[    0.247689] sgx: EPC section 0x70200000-0x75f7ffff
[    0.248541] Initialise system trusted keyrings
[    0.248554] Key type blacklist registered
[    0.248660] workingset: timestamp_bits=36 max_order=22 bucket_order=0
[    0.248702] zbud: loaded
[    0.248922] fuse: init (API version 7.41)
[    0.249191] Key type asymmetric registered
[    0.249196] Asymmetric key parser 'x509' registered
[    0.267829] Freeing initrd memory: 11308K
[    0.270699] alg: self-tests disabled
[    0.270829] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247)
[    0.270880] io scheduler mq-deadline registered
[    0.273870] ledtrig-cpu: registered to indicate activity on CPUs
[    0.274428] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.276429] thermal LNXTHERM:00: registered as thermal_zone0
[    0.276432] ACPI: thermal: Thermal Zone [THM] (25 C)
[    0.276630] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.277361] hpet_acpi_add: no address or irqs in _CRS
[    0.288326] tpm_tis MSFT0101:00: 2.0 TPM (device-id 0xFE, rev-id 4)
[    0.323173] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12
[    0.323425] i8042: Warning: Keylock active
[    0.325818] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.325822] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.325901] mousedev: PS/2 mouse device common for all mice
[    0.325914] rtc_cmos 00:01: RTC can wake from S4
[    0.326613] rtc_cmos 00:01: registered as rtc0
[    0.326770] rtc_cmos 00:01: setting system clock to 2024-12-02T07:11:00 UTC (1733123460)
[    0.326792] rtc_cmos 00:01: alarms up to one month, y3k, 242 bytes nvram
[    0.326889] intel_pstate: Intel P-state driver initializing
[    0.327030] intel_pstate: HWP enabled
[    0.327250] efifb: probing for efifb
[    0.327259] efifb: framebuffer at 0x90000000, using 22500k, total 22500k
[    0.327260] efifb: mode is 3200x1800x32, linelength=12800, pages=1
[    0.327261] efifb: scrolling: redraw
[    0.327262] efifb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.327361] Console: switching to colour frame buffer device 200x56
[    0.330731] fb0: EFI VGA frame buffer device
[    0.330883] NET: Registered PF_INET6 protocol family
[    0.331024] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[    0.334211] Segment Routing with IPv6
[    0.334226] In-situ OAM (IOAM) with IPv6
[    0.334249] mip6: Mobile IPv6
[    0.334253] NET: Registered PF_PACKET protocol family
[    0.334304] mpls_gso: MPLS GSO support
[    0.334502] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.334534] microcode: Current revision: 0x000000f6
[    0.334536] microcode: Updated early from: 0x000000f0
[    0.334587] IPI shorthand broadcast: enabled
[    0.335462] sched_clock: Marking stable (328657536, 5914441)->(348085346, -13513369)
[    0.335584] registered taskstats version 1
[    0.335645] Loading compiled-in X.509 certificates
[    0.336994] Demotion targets for Node 0: null
[    0.337022] Key type .fscrypt registered
[    0.337023] Key type fscrypt-provisioning registered
[    0.341886] cryptd: max_cpu_qlen set to 1000
[    0.342681] AES CTR mode by8 optimization enabled
[    0.351424] Key type encrypted registered
[    0.351429] AppArmor: AppArmor sha256 policy hashing enabled
[    0.351798] RAS: Correctable Errors collector initialized.
[    0.361138] clk: Disabling unused clocks
[    0.361962] Freeing unused decrypted memory: 2036K
[    0.362260] Freeing unused kernel image (initmem) memory: 2880K
[    0.362273] Write protecting the kernel read-only data: 24576k
[    0.362421] Freeing unused kernel image (rodata/data gap) memory: 24K
[    0.373057] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    0.373068] Run /init as init process
[    0.373069]   with arguments:
[    0.373070]     /init
[    0.373071]   with environment:
[    0.373072]     HOME=/
[    0.373072]     TERM=linux
[    0.373073]     BOOT_IMAGE=/vmlinuz-6.12.0-12113-gbcc8eda6d349
[    0.443921] nvme nvme0: pci function 0000:3b:00.0
[    0.462086] nvme nvme0: 4/0/0 default/read/poll queues
[    0.469688]  nvme0n1: p1 p2 p3 p4
[    0.495988] device-mapper: uevent: version 1.0.3
[    0.496089] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@lists.linux.dev
[    1.254161] tsc: Refined TSC clocksource calibration: 2904.007 MHz
[    1.254180] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x29dc0c50045, max_idle_ns: 440795208304 ns
[    1.254250] clocksource: Switched to clocksource tsc
[    7.982628] PM: Image not found (code -22)
[    8.080413] EXT4-fs (dm-0): mounted filesystem 32e29882-d94d-4a92-9ee4-4d03002bfa29 ro with ordered data mode. Quota mode: none.
[    8.193579] systemd[1]: Inserted module 'autofs4'
[    8.230040] systemd[1]: systemd 257~rc3-1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +SYSVINIT +LIBARCHIVE)
[    8.230055] systemd[1]: Detected architecture x86-64.
[    8.233226] systemd[1]: Hostname set to <abreu>.
[    8.534690] systemd[1]: bpf-restrict-fs: LSM BPF program attached
[    8.568841] systemd-sysv-generator[372]: SysV service '/etc/init.d/xl2tpd' lacks a native systemd unit file, automatically generating a unit file for compatibility.
[    8.568845] systemd-sysv-generator[372]: Please update package to include a native systemd unit file.
[    8.568847] systemd-sysv-generator[372]: ! This compatibility logic is deprecated, expect removal soon. !
[    8.678470] systemd[1]: Queued start job for default target graphical.target.
[    8.694813] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[    8.695083] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[    8.695316] systemd[1]: Created slice system-systemd\x2dcryptsetup.slice - Encrypted Volume Units Service Slice.
[    8.695543] systemd[1]: Created slice system-systemd\x2dfsck.slice - Slice /system/systemd-fsck.
[    8.695695] systemd[1]: Created slice user.slice - User and Session Slice.
[    8.695741] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
[    8.695771] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[    8.695905] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[    8.695922] systemd[1]: Expecting device dev-disk-by\x2ddiskseq-1\x2dpart4.device - /dev/disk/by-diskseq/1-part4...
[    8.695929] systemd[1]: Expecting device dev-disk-by\x2duuid-2d23fd4c\x2d5d03\x2d4e1a\x2d8a42\x2d0e859d1f00d8.device - /dev/disk/by-uuid/2d23fd4c-5d03-4e1a-8a42-0e859d1f00d8...
[    8.695936] systemd[1]: Expecting device dev-disk-by\x2duuid-61be8f50\x2d69c5\x2d49a5\x2dbcad\x2d3f4521e9c7b5.device - /dev/disk/by-uuid/61be8f50-69c5-49a5-bcad-3f4521e9c7b5...
[    8.695941] systemd[1]: Expecting device dev-disk-by\x2duuid-96BD\x2d5653.device - /dev/disk/by-uuid/96BD-5653...
[    8.695964] systemd[1]: Reached target integritysetup.target - Local Integrity Protected Volumes.
[    8.695987] systemd[1]: Reached target nss-user-lookup.target - User and Group Name Lookups.
[    8.695994] systemd[1]: Reached target paths.target - Path Units.
[    8.696010] systemd[1]: Reached target remote-fs.target - Remote File Systems.
[    8.696019] systemd[1]: Reached target slices.target - Slice Units.
[    8.696046] systemd[1]: Reached target veritysetup.target - Local Verity Protected Volumes.
[    8.697401] systemd[1]: Listening on systemd-coredump.socket - Process Core Dump Socket.
[    8.698307] systemd[1]: Listening on systemd-creds.socket - Credential Encryption/Decryption.
[    8.698370] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
[    8.698435] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
[    8.698508] systemd[1]: Listening on systemd-journald.socket - Journal Sockets.
[    8.698542] systemd[1]: systemd-pcrextend.socket - TPM PCR Measurements was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.698557] systemd[1]: systemd-pcrlock.socket - Make TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.698611] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
[    8.698654] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[    8.700007] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
[    8.700506] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
[    8.701293] systemd[1]: Mounting run-lock.mount - Legacy Locks Directory /run/lock...
[    8.702021] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
[    8.704575] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
[    8.705724] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
[    8.710083] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
[    8.711080] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
[    8.714775] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
[    8.718117] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
[    8.718235] systemd[1]: systemd-fsck-root.service - File System Check on Root Device was skipped because of an unmet condition check (ConditionPathExists=!/run/initramfs/fsck-root).
[    8.718295] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[    8.720595] systemd[1]: Starting systemd-journald.service - Journal Service...
[    8.722592] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
[    8.722623] systemd[1]: systemd-pcrmachine.service - TPM PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.723136] pstore: Using crash dump compression: deflate
[    8.723655] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
[    8.723721] systemd[1]: systemd-tpm2-setup-early.service - Early TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.726665] systemd[1]: Starting systemd-udev-load-credentials.service - Load udev Rules from Credentials...
[    8.730069] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
[    8.732118] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[    8.732238] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
[    8.732365] systemd[1]: Mounted run-lock.mount - Legacy Locks Directory /run/lock.
[    8.732448] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
[    8.732544] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[    8.734120] pstore: Registered efi_pstore as persistent store backend
[    8.736101] systemd[1]: Finished kmod-static-nodes.service - Create List of Static Device Nodes.
[    8.736808] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    8.736954] systemd[1]: Finished modprobe@configfs.service - Load Kernel Module configfs.
[    8.737149] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[    8.737271] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[    8.737453] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[    8.738094] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
[    8.739888] systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...
[    8.744727] systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...
[    8.750088] systemd[1]: Starting systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully...
[    8.750847] systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.
[    8.754328] ACPI: bus type drm_connector registered
[    8.757174] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    8.757366] systemd[1]: Finished modprobe@drm.service - Load Kernel Module drm.
[    8.757685] lp: driver loaded but no devices found
[    8.757912] systemd[1]: Finished systemd-udev-load-credentials.service - Load udev Rules from Credentials.
[    8.759415] systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.
[    8.761944] ppdev: user-space parallel port driver
[    8.767969] systemd-journald[386]: Collecting audit messages is disabled.
[    8.771527] systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.
[    8.772470] systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...
[    8.775505] EXT4-fs (dm-0): re-mounted 32e29882-d94d-4a92-9ee4-4d03002bfa29 r/w. Quota mode: none.
[    8.778605] systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.
[    8.778949] systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.
[    8.779321] systemd[1]: systemd-hwdb-update.service - Rebuild Hardware Database was skipped because of an unmet condition check (ConditionNeedsUpdate=/etc).
[    8.779369] systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[    8.782077] systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
[    8.782138] systemd[1]: systemd-sysusers.service - Create System Users was skipped because no trigger condition checks were met.
[    8.783019] systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...
[    8.783040] systemd[1]: systemd-tpm2-setup.service - TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.793971] systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.
[    8.796383] systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.
[    8.796508] systemd[1]: Started systemd-journald.service - Journal Service.
[    8.812412] systemd-journald[386]: Received client request to flush runtime journal.
[    9.035774] intel-lpss 0000:00:15.0: enabling device (0000 -> 0002)
[    9.036404] Consider using thermal netlink events interface
[    9.039732] input: Intel HID events as /devices/platform/INT33D5:00/input/input35
[    9.043341] idma64 idma64.0: Found Intel integrated DMA 64-bit
[    9.043627] mei_me 0000:00:16.0: enabling device (0000 -> 0002)
[    9.045179] i801_smbus 0000:00:1f.4: SPD Write Disable is set
[    9.045206] i801_smbus 0000:00:1f.4: SMBus using PCI interrupt
[    9.047894] ACPI: AC: AC Adapter [AC] (on-line)
[    9.048092] intel-hid INT33D5:00: platform supports 5 button array
[    9.049643] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input37
[    9.049827] input: Intel HID 5 button array as /devices/platform/INT33D5:00/input/input36
[    9.058873] wmi_bus wmi_bus-PNP0C14:01: [Firmware Bug]: WQBC data block query control method not found
[    9.066129] ACPI: button: Lid Switch [LID0]
[    9.066186] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input38
[    9.066708] ACPI: button: Power Button [PBTN]
[    9.066775] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input39
[    9.067246] ACPI: button: Sleep Button [SBTN]
[    9.067297] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input40
[    9.067485] ACPI: button: Power Button [PWRF]
[    9.099645] intel-lpss 0000:00:15.1: enabling device (0000 -> 0002)
[    9.101217] idma64 idma64.1: Found Intel integrated DMA 64-bit
[    9.110449] ACPI: bus type USB registered
[    9.110489] usbcore: registered new interface driver usbfs
[    9.110499] usbcore: registered new interface driver hub
[    9.130303] Adding 8387904k swap on /dev/nvme0n1p4.  Priority:-2 extents:1 across:8387904k SS
[    9.131325] usbcore: registered new device driver usb
[    9.154095] input: Intel Virtual Buttons as /devices/pci0000:00/0000:00:1f.0/PNP0C09:00/INT33D6:00/input/input41
[    9.155917] proc_thermal 0000:00:04.0: enabling device (0000 -> 0002)
[    9.155924] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    9.165413] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    9.165625] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[    9.166909] intel_pmc_core INT33A1:00:  initialized
[    9.168486] cfg80211: loaded regulatory.db is malformed or signature is missing/invalid
[    9.171093] intel_rapl_common: Found RAPL domain package
[    9.171098] intel_rapl_common: Found RAPL domain dram
[    9.171861] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    9.171867] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
[    9.173170] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x0000000081109810
[    9.180916] xhci_hcd 0000:00:14.0: xHCI Host Controller
[    9.180924] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
[    9.180929] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
[    9.180978] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[    9.180981] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    9.180983] usb usb1: Product: xHCI Host Controller
[    9.180984] usb usb1: Manufacturer: Linux 6.12.0-12113-gbcc8eda6d349 xhci-hcd
[    9.180985] usb usb1: SerialNumber: 0000:00:14.0
[    9.185471] hub 1-0:1.0: USB hub found
[    9.185507] hub 1-0:1.0: 12 ports detected
[    9.188921] hid: raw HID events driver (C) Jiri Kosina
[    9.216020] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
[    9.229559] input: PC Speaker as /devices/platform/pcspkr/input/input43
[    9.233237] ACPI: battery: Slot [BAT0] (battery present)
[    9.234983] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.12
[    9.234988] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    9.234990] usb usb2: Product: xHCI Host Controller
[    9.234991] usb usb2: Manufacturer: Linux 6.12.0-12113-gbcc8eda6d349 xhci-hcd
[    9.234993] usb usb2: SerialNumber: 0000:00:14.0
[    9.235412] hub 2-0:1.0: USB hub found
[    9.235443] hub 2-0:1.0: 6 ports detected
[    9.489921] usb 1-3: new full-speed USB device number 2 using xhci_hcd
[    9.522387] intel_rapl_common: Found RAPL domain package
[    9.522391] intel_rapl_common: Found RAPL domain core
[    9.522392] intel_rapl_common: Found RAPL domain uncore
[    9.522394] intel_rapl_common: Found RAPL domain dram
[    9.522395] intel_rapl_common: Found RAPL domain psys
[    9.553407] Setting dangerous option enable_guc - tainting kernel
[    9.553412] Setting dangerous option enable_fbc - tainting kernel
[    9.562692] RAPL PMU: API unit is 2^-32 Joules, 5 fixed counters, 655360 ms ovfl timer
[    9.562696] RAPL PMU: hw unit of domain pp0-core 2^-14 Joules
[    9.562698] RAPL PMU: hw unit of domain package 2^-14 Joules
[    9.562699] RAPL PMU: hw unit of domain dram 2^-14 Joules
[    9.562700] RAPL PMU: hw unit of domain pp1-gpu 2^-14 Joules
[    9.562701] RAPL PMU: hw unit of domain psys 2^-14 Joules
[    9.564038] iTCO_vendor_support: vendor-support=0
[    9.564953] stackdepot: allocating hash table of 1048576 entries via kvcalloc
[    9.570234] i915 0000:00:02.0: [drm] Found kabylake/ult (device ID 5916) display version 9.00 stepping B0
[    9.570912] Console: switching to colour dummy device 80x25
[    9.570950] i915 0000:00:02.0: vgaarb: deactivate vga console
[    9.572885] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[    9.574736] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    9.631094] usb 1-3: New USB device found, idVendor=0cf3, idProduct=e300, bcdDevice= 0.01
[    9.631100] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[    9.646219] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/kbl_guc_70.1.1.bin version 70.1.1
[    9.646225] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/kbl_huc_4.0.0.bin version 4.0.0
[    9.672683] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[    9.672687] i915 0000:00:02.0: [drm] GT0: GUC: submission disabled
[    9.672689] i915 0000:00:02.0: [drm] GT0: GUC: SLPC disabled
[    9.673360] mei_hdcp 0000:00:16.0-b638ab7e-94e2-4ea2-a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
[    9.689707] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 0
[    9.692437] ACPI: video: Video Device [GFX0] (multi-head: yes  rom: no  post: no)
[    9.693189] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input44
[    9.717632] ath10k_pci 0000:3a:00.0: enabling device (0000 -> 0002)
[    9.721580] ath10k_pci 0000:3a:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[    9.722090] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[    9.722390] input: DLL075B:01 06CB:76AF Mouse as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-DLL075B:01/0018:06CB:76AF.0001/input/input45
[    9.727577] input: DLL075B:01 06CB:76AF Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-DLL075B:01/0018:06CB:76AF.0001/input/input46
[    9.727882] hid-generic 0018:06CB:76AF.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL075B:01 06CB:76AF] on i2c-DLL075B:01
[    9.736497] iTCO_wdt iTCO_wdt: Found a Intel PCH TCO device (Version=4, TCOBASE=0x0400)
[    9.737990] iTCO_wdt iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[    9.738743] fbcon: i915drmfb (fb0) is primary device
[    9.755576] usb 1-4: new full-speed USB device number 3 using xhci_hcd
[    9.756133] Console: switching to colour frame buffer device 200x56
[    9.763245] input: Dell WMI hotkeys as /devices/platform/PNP0C14:01/wmi_bus/wmi_bus-PNP0C14:01/9DBB5994-A997-11DA-B012-B622A1EF5492/input/input48
[    9.772105] snd_hda_codec_realtek hdaudioC0D0: ALC3246: picked fixup  (pin match)
[    9.781638] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
[    9.806263] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC3246: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    9.806269] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    9.806272] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    9.806275] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    9.806277] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    9.806279] snd_hda_codec_realtek hdaudioC0D0:      Headset Mic=0x19
[    9.806281] snd_hda_codec_realtek hdaudioC0D0:      Headphone Mic=0x1a
[    9.806283] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
[    9.846935] ACPI: battery: new extension: Dell Primary Battery Extension
[    9.864707] EXT4-fs (nvme0n1p2): mounted filesystem 2d23fd4c-5d03-4e1a-8a42-0e859d1f00d8 r/w with ordered data mode. Quota mode: none.
[    9.887554] input: DLL075B:01 06CB:76AF Mouse as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-DLL075B:01/0018:06CB:76AF.0001/input/input50
[    9.888179] input: DLL075B:01 06CB:76AF Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-2/i2c-DLL075B:01/0018:06CB:76AF.0001/input/input51
[    9.889825] hid-multitouch 0018:06CB:76AF.0001: input,hidraw0: I2C HID v1.00 Mouse [DLL075B:01 06CB:76AF] on i2c-DLL075B:01
[    9.891638] usb 1-4: New USB device found, idVendor=04f3, idProduct=2234, bcdDevice=11.11
[    9.891650] usb 1-4: New USB device strings: Mfr=4, Product=14, SerialNumber=0
[    9.891652] usb 1-4: Product: Touchscreen
[    9.891654] usb 1-4: Manufacturer: ELAN
[    9.959286] ath10k_pci 0000:3a:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1a56:1535
[    9.959294] ath10k_pci 0000:3a:00.0: kconfig debug 0 debugfs 0 tracing 0 dfs 0 testmode 0
[    9.959713] ath10k_pci 0000:3a:00.0: firmware ver WLAN.RM.4.4.1-00309- api 6 features wowlan,ignore-otp,mfp crc32 0793bcf2
[   10.008505] audit: type=1400 audit(1733123470.175:2): apparmor="STATUS" operation="profile_load" profile="unconfined" name="lsb_release" pid=557 comm="apparmor_parser"
[   10.013934] usb 1-5: new high-speed USB device number 4 using xhci_hcd
[   10.033035] audit: type=1400 audit(1733123470.199:3): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=558 comm="apparmor_parser"
[   10.034157] audit: type=1400 audit(1733123470.203:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=558 comm="apparmor_parser"
[   10.036038] ath10k_pci 0000:3a:00.0: board_file api 2 bmi_id N/A crc32 d2863f91
[   10.050485] audit: type=1400 audit(1733123470.219:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/bin/man" pid=560 comm="apparmor_parser"
[   10.051512] audit: type=1400 audit(1733123470.219:6): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_filter" pid=560 comm="apparmor_parser"
[   10.054308] audit: type=1400 audit(1733123470.223:7): apparmor="STATUS" operation="profile_load" profile="unconfined" name="man_groff" pid=560 comm="apparmor_parser"
[   10.057967] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1f.3/sound/card0/input49
[   10.058021] input: HDA Intel PCH Headphone Mic as /devices/pci0000:00/0000:00:1f.3/sound/card0/input53
[   10.058070] input: HDA Intel PCH HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input54
[   10.058115] input: HDA Intel PCH HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input55
[   10.058161] input: HDA Intel PCH HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:1f.3/sound/card0/input56
[   10.133017] audit: type=1400 audit(1733123470.299:8): apparmor="STATUS" operation="profile_load" profile="unconfined" name="msmtp" pid=568 comm="apparmor_parser"
[   10.133664] audit: type=1400 audit(1733123470.299:9): apparmor="STATUS" operation="profile_load" profile="unconfined" name="msmtp//helpers" pid=568 comm="apparmor_parser"
[   10.137017] ath10k_pci 0000:3a:00.0: htt-ver 3.87 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1
[   10.158315] audit: type=1400 audit(1733123470.327:10): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/ipsec/stroke" pid=588 comm="apparmor_parser"
[   10.179857] audit: type=1400 audit(1733123470.347:11): apparmor="STATUS" operation="profile_load" profile="unconfined" name="/usr/lib/ipsec/charon" pid=581 comm="apparmor_parser"
[   10.211071] ath: EEPROM regdomain: 0x6c
[   10.211076] ath: EEPROM indicates we should expect a direct regpair map
[   10.211078] ath: Country alpha2 being used: 00
[   10.211079] ath: Regpair used: 0x6c
[   10.213353] usb 1-5: New USB device found, idVendor=0c45, idProduct=670c, bcdDevice=56.26
[   10.213360] usb 1-5: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[   10.213362] usb 1-5: Product: Integrated_Webcam_HD
[   10.213364] usb 1-5: Manufacturer: CN09GTFMLOG008C8B7FWA01
[   10.216677] ath10k_pci 0000:3a:00.0 wlp58s0: renamed from wlan0
[   10.271852] mc: Linux media interface: v0.10
[   10.280941] input: ELAN Touchscreen as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:04F3:2234.0002/input/input57
[   10.289682] videodev: Linux video capture interface: v2.00
[   10.290995] input: ELAN Touchscreen UNKNOWN as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:04F3:2234.0002/input/input58
[   10.291401] input: ELAN Touchscreen UNKNOWN as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0/0003:04F3:2234.0002/input/input59
[   10.291725] hid-multitouch 0003:04F3:2234.0002: input,hiddev0,hidraw1: USB HID v1.10 Device [ELAN Touchscreen] on usb-0000:00:14.0-4/input0
[   10.291771] usbcore: registered new interface driver usbhid
[   10.291773] usbhid: USB HID core driver
[   10.323054] usb 1-5: Found UVC 1.00 device Integrated_Webcam_HD (0c45:670c)
[   10.336070] Bluetooth: Core ver 2.22
[   10.336106] NET: Registered PF_BLUETOOTH protocol family
[   10.336108] Bluetooth: HCI device and connection manager initialized
[   10.336202] Bluetooth: HCI socket layer initialized
[   10.336205] Bluetooth: L2CAP socket layer initialized
[   10.336211] Bluetooth: SCO socket layer initialized
[   10.342913] usbcore: registered new interface driver btusb
[   10.345221] Bluetooth: hci0: using rampatch file: qca/rampatch_usb_00000302.bin
[   10.345225] Bluetooth: hci0: QCA: patch rome 0x302 build 0x3e8, firmware rome 0x302 build 0x111
[   10.453937] usbcore: registered new interface driver uvcvideo
[   10.701125] Bluetooth: hci0: using NVM file: qca/nvm_usb_00000302.bin
[   10.723662] Bluetooth: hci0: HCI Enhanced Setup Synchronous Connection command is advertised, but not supported.
[   14.399238] nvme nvme0: using unchecked data buffer
[   14.808476] Initializing XFRM netlink socket
[   14.816140] PPP generic driver version 2.4.2
[   14.816888] NET: Registered PF_PPPOX protocol family
[   14.885442] l2tp_core: L2TP core driver, V2.0
[   14.886634] l2tp_netlink: L2TP netlink interface
[   14.890284] IPsec XFRM device driver
[   14.890419] l2tp_ppp: PPPoL2TP kernel driver, V2.0
[   16.706925] pci 0000:01:00.0: [8086:1576] type 01 class 0x060400 PCIe Switch Upstream Port
[   16.706963] pci 0000:01:00.0: PCI bridge to [bus 02-39]
[   16.706974] pci 0000:01:00.0:   bridge window [mem 0xc4000000-0xda0fffff]
[   16.706986] pci 0000:01:00.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   16.707001] pci 0000:01:00.0: enabling Extended Tags
[   16.707100] pci 0000:01:00.0: supports D1 D2
[   16.707103] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   16.707184] pci 0000:01:00.0: 15.752 Gb/s available PCIe bandwidth, limited by 8.0 GT/s PCIe x2 link at 0000:00:1c.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[   16.707800] pci 0000:02:00.0: [8086:1576] type 01 class 0x060400 PCIe Switch Downstream Port
[   16.707837] pci 0000:02:00.0: PCI bridge to [bus 03]
[   16.707849] pci 0000:02:00.0:   bridge window [mem 0xda000000-0xda0fffff]
[   16.707876] pci 0000:02:00.0: enabling Extended Tags
[   16.707977] pci 0000:02:00.0: supports D1 D2
[   16.707979] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   16.708215] pci 0000:02:01.0: [8086:1576] type 01 class 0x060400 PCIe Switch Downstream Port
[   16.708251] pci 0000:02:01.0: PCI bridge to [bus 04-38]
[   16.708262] pci 0000:02:01.0:   bridge window [mem 0xc4000000-0xd9efffff]
[   16.708274] pci 0000:02:01.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   16.708291] pci 0000:02:01.0: enabling Extended Tags
[   16.708395] pci 0000:02:01.0: supports D1 D2
[   16.708397] pci 0000:02:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[   16.708646] pci 0000:02:02.0: [8086:1576] type 01 class 0x060400 PCIe Switch Downstream Port
[   16.708682] pci 0000:02:02.0: PCI bridge to [bus 39]
[   16.708693] pci 0000:02:02.0:   bridge window [mem 0xd9f00000-0xd9ffffff]
[   16.708719] pci 0000:02:02.0: enabling Extended Tags
[   16.708821] pci 0000:02:02.0: supports D1 D2
[   16.708823] pci 0000:02:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[   16.709257] pci 0000:01:00.0: PCI bridge to [bus 02-39]
[   16.709324] pci 0000:02:00.0: PCI bridge to [bus 03]
[   16.709385] pci 0000:02:01.0: PCI bridge to [bus 04-38]
[   16.709495] pci 0000:39:00.0: [8086:15b5] type 00 class 0x0c0330 PCIe Endpoint
[   16.709519] pci 0000:39:00.0: BAR 0 [mem 0xd9f00000-0xd9f0ffff]
[   16.709594] pci 0000:39:00.0: enabling Extended Tags
[   16.709722] pci 0000:39:00.0: supports D1 D2
[   16.709724] pci 0000:39:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   16.709832] pci 0000:39:00.0: 8.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x4 link at 0000:02:02.0 (capable of 31.504 Gb/s with 8.0 GT/s PCIe x4 link)
[   16.710048] pci 0000:02:02.0: PCI bridge to [bus 39]
[   16.710093] pci_bus 0000:02: Allocating resources
[   16.710108] pci 0000:02:01.0: bridge window [io  0x1000-0x0fff] to [bus 04-38] add_size 1000
[   16.710112] pci 0000:02:02.0: bridge window [io  0x1000-0x0fff] to [bus 39] add_size 1000
[   16.710115] pci 0000:02:02.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 39] add_size 200000 add_align 100000
[   16.710119] pci 0000:01:00.0: bridge window [io  0x1000-0x0fff] to [bus 02-39] add_size 2000
[   16.710123] pci 0000:01:00.0: bridge window [io  size 0x2000]: can't assign; no space
[   16.710125] pci 0000:01:00.0: bridge window [io  size 0x2000]: failed to assign
[   16.710127] pci 0000:01:00.0: bridge window [io  size 0x2000]: can't assign; no space
[   16.710129] pci 0000:01:00.0: bridge window [io  size 0x2000]: failed to assign
[   16.710133] pci 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: can't assign; no space
[   16.710136] pci 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: failed to assign
[   16.710138] pci 0000:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.710140] pci 0000:02:01.0: bridge window [io  size 0x1000]: failed to assign
[   16.710141] pci 0000:02:02.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.710143] pci 0000:02:02.0: bridge window [io  size 0x1000]: failed to assign
[   16.710146] pci 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: can't assign; no space
[   16.710148] pci 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: failed to assign
[   16.710150] pci 0000:02:02.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.710151] pci 0000:02:02.0: bridge window [io  size 0x1000]: failed to assign
[   16.710153] pci 0000:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.710155] pci 0000:02:01.0: bridge window [io  size 0x1000]: failed to assign
[   16.710157] pci 0000:02:00.0: PCI bridge to [bus 03]
[   16.710162] pci 0000:02:00.0:   bridge window [mem 0xda000000-0xda0fffff]
[   16.710172] pci 0000:02:01.0: PCI bridge to [bus 04-38]
[   16.710177] pci 0000:02:01.0:   bridge window [mem 0xc4000000-0xd9efffff]
[   16.710181] pci 0000:02:01.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   16.710188] pci 0000:02:02.0: PCI bridge to [bus 39]
[   16.710193] pci 0000:02:02.0:   bridge window [mem 0xd9f00000-0xd9ffffff]
[   16.710202] pci 0000:01:00.0: PCI bridge to [bus 02-39]
[   16.710207] pci 0000:01:00.0:   bridge window [mem 0xc4000000-0xda0fffff]
[   16.710211] pci 0000:01:00.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   16.715852] xhci_hcd 0000:39:00.0: xHCI Host Controller
[   16.715861] xhci_hcd 0000:39:00.0: new USB bus registered, assigned bus number 3
[   16.716980] xhci_hcd 0000:39:00.0: hcc params 0x200077c1 hci version 0x110 quirks 0x0000000200009810
[   16.717324] xhci_hcd 0000:39:00.0: xHCI Host Controller
[   16.717330] xhci_hcd 0000:39:00.0: new USB bus registered, assigned bus number 4
[   16.717334] xhci_hcd 0000:39:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[   16.717371] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.12
[   16.717374] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   16.717376] usb usb3: Product: xHCI Host Controller
[   16.717377] usb usb3: Manufacturer: Linux 6.12.0-12113-gbcc8eda6d349 xhci-hcd
[   16.717379] usb usb3: SerialNumber: 0000:39:00.0
[   16.720351] hub 3-0:1.0: USB hub found
[   16.720365] hub 3-0:1.0: 2 ports detected
[   16.721148] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.12
[   16.721152] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   16.721154] usb usb4: Product: xHCI Host Controller
[   16.721156] usb usb4: Manufacturer: Linux 6.12.0-12113-gbcc8eda6d349 xhci-hcd
[   16.721158] usb usb4: SerialNumber: 0000:39:00.0
[   16.721292] hub 4-0:1.0: USB hub found
[   16.721303] hub 4-0:1.0: 2 ports detected
[   16.726418] pci_bus 0000:02: Allocating resources
[   16.726438] pcieport 0000:02:01.0: bridge window [io  0x1000-0x0fff] to [bus 04-38] add_size 1000
[   16.726443] pcieport 0000:02:02.0: bridge window [io  0x1000-0x0fff] to [bus 39] add_size 1000
[   16.726446] pcieport 0000:02:02.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 39] add_size 200000 add_align 100000
[   16.726450] pcieport 0000:01:00.0: bridge window [io  0x1000-0x0fff] to [bus 02-39] add_size 2000
[   16.726454] pcieport 0000:01:00.0: bridge window [io  size 0x2000]: can't assign; no space
[   16.726456] pcieport 0000:01:00.0: bridge window [io  size 0x2000]: failed to assign
[   16.726459] pcieport 0000:01:00.0: bridge window [io  size 0x2000]: can't assign; no space
[   16.726460] pcieport 0000:01:00.0: bridge window [io  size 0x2000]: failed to assign
[   16.726465] pcieport 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: can't assign; no space
[   16.726467] pcieport 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: failed to assign
[   16.726469] pcieport 0000:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.726471] pcieport 0000:02:01.0: bridge window [io  size 0x1000]: failed to assign
[   16.726473] pcieport 0000:02:02.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.726475] pcieport 0000:02:02.0: bridge window [io  size 0x1000]: failed to assign
[   16.726478] pcieport 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: can't assign; no space
[   16.726480] pcieport 0000:02:02.0: bridge window [mem size 0x00200000 64bit pref]: failed to assign
[   16.726482] pcieport 0000:02:02.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.726484] pcieport 0000:02:02.0: bridge window [io  size 0x1000]: failed to assign
[   16.726485] pcieport 0000:02:01.0: bridge window [io  size 0x1000]: can't assign; no space
[   16.726487] pcieport 0000:02:01.0: bridge window [io  size 0x1000]: failed to assign
[   16.973941] usb 3-1: new high-speed USB device number 2 using xhci_hcd
[   17.116680] usb 3-1: New USB device found, idVendor=2109, idProduct=2820, bcdDevice= 9.f3
[   17.116686] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   17.116688] usb 3-1: Product: USB2.0 Hub             
[   17.116690] usb 3-1: Manufacturer: VIA Labs, Inc.         
[   17.117805] hub 3-1:1.0: USB hub found
[   17.117955] hub 3-1:1.0: 5 ports detected
[   17.233112] rfkill: input handler disabled
[   17.240995] usb 4-1: new SuperSpeed Plus Gen 2x1 USB device number 2 using xhci_hcd
[   17.259831] usb 4-1: New USB device found, idVendor=2109, idProduct=0820, bcdDevice= 9.f3
[   17.259838] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   17.259841] usb 4-1: Product: USB3.1 Hub             
[   17.259843] usb 4-1: Manufacturer: VIA Labs, Inc.         
[   17.263017] hub 4-1:1.0: USB hub found
[   17.263283] hub 4-1:1.0: 4 ports detected
[   17.833938] usb 3-1.1: new full-speed USB device number 3 using xhci_hcd
[   17.983938] usb 3-1.1: New USB device found, idVendor=06c4, idProduct=c412, bcdDevice= 0.01
[   17.983945] usb 3-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   17.983947] usb 3-1.1: Product: DELL DA300
[   17.983949] usb 3-1.1: Manufacturer: Bizlink
[   17.983950] usb 3-1.1: SerialNumber: MCU Ver0001
[   17.994555] hid-generic 0003:06C4:C412.0003: hiddev1,hidraw2: USB HID v1.11 Device [Bizlink DELL DA300] on usb-0000:39:00.0-1.1/input0
[   18.048744] usb 4-1.2: new SuperSpeed USB device number 3 using xhci_hcd
[   18.062541] usb 4-1.2: New USB device found, idVendor=0bda, idProduct=8153, bcdDevice=31.00
[   18.062549] usb 4-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=6
[   18.062552] usb 4-1.2: Product: USB 10/100/1000 LAN
[   18.062554] usb 4-1.2: Manufacturer: Realtek
[   18.062556] usb 4-1.2: SerialNumber: 001000001
[   18.093599] usbcore: registered new device driver r8152-cfgselector
[   18.170309] r8152-cfgselector 4-1.2: reset SuperSpeed USB device number 3 using xhci_hcd
[   18.189615] r8152 4-1.2:1.0 (unnamed net_device) (uninitialized): Using pass-thru MAC addr 18:db:f2:2d:cc:f3
[   18.232143] r8152 4-1.2:1.0 eth0: v1.12.13
[   18.232189] usbcore: registered new interface driver r8152
[   18.240736] usbcore: registered new interface driver cdc_ether
[   18.242409] usbcore: registered new interface driver r8153_ecm
[   18.288773] r8152 4-1.2:1.0 enp57s0u1u2: renamed from eth0
[   20.397767] rfkill: input handler enabled
[   21.536449] r8152 4-1.2:1.0 enp57s0u1u2: carrier on
[   22.361809] rfkill: input handler disabled

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible)
  2024-12-02  7:56   ` New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible) Paul Menzel
@ 2024-12-02 15:05     ` Keith Busch
  2024-12-02 15:15       ` New warning `nvme nvme0: using unchecked data buffer` Paul Menzel
  0 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2024-12-02 15:05 UTC (permalink / raw)
  To: Paul Menzel; +Cc: Keith Busch, linux-nvme, hch, sagi

On Mon, Dec 02, 2024 at 08:56:03AM +0100, Paul Menzel wrote:
> Am 18.11.24 um 16:57 schrieb Keith Busch:
> > From: Keith Busch <kbusch@kernel.org>
> > 
> > If the device supports SGLs, use these for all user requests. This
> > format encodes the expected transfer length so it can catch short buffer
> > errors in a user command, whether it occurred accidently or maliciously.
> > 
> > For controllers that support SGL data mode, this is a viable mitigation
> > to CVE-2023-6238. For controllers that don't support SGL, log a warning
> 
> For the layman, what is this security problem?

The passthrough interface can't validate buffer lengths against the
command's actual payload. NVMe traditionally did not have explicit
buffer sizes encoded in commands, so this only works correctly if the
device and host both agree on what the implicit transfer size actually
is. More recent NVMe features fixed that problem with explicit buffer
sizes in the commands.

Whether by accident or on purpose, user space can request a smaller
buffer than the device is going to transfer into it. That will corrupt
memory.
 
> > -	if (has_metadata && !supports_metadata)
> > -		return -EINVAL;
> > +	if (!nvme_ctrl_sgl_supported(ctrl))
> > +		dev_warn_once(ctrl->device, "using unchecked data buffer\n");
> 
> Linux logs this on the Dell XPS 13 9360 with PC300 NVMe SK hynix 512GB
> (firmware revision 20004A00).
> 
>     [   14.399238] nvme nvme0: using unchecked data buffer
> 
> What should a user do about it?

Nothing for a user to do. This is an indication that the passthrough
interface has been used with a device that can only use implicit
transfer lengths. It's more of an indication that improper use of this
interface might be the cause of memory corruption observations.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New warning `nvme nvme0: using unchecked data buffer`
  2024-12-02 15:05     ` Keith Busch
@ 2024-12-02 15:15       ` Paul Menzel
  2024-12-02 15:49         ` Keith Busch
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Menzel @ 2024-12-02 15:15 UTC (permalink / raw)
  To: Keith Busch; +Cc: Keith Busch, linux-nvme, hch, sagi

Dear Keith,


Thank you very much for your quick reply.

Am 02.12.24 um 16:05 schrieb Keith Busch:
> On Mon, Dec 02, 2024 at 08:56:03AM +0100, Paul Menzel wrote:
>> Am 18.11.24 um 16:57 schrieb Keith Busch:
>>> From: Keith Busch <kbusch@kernel.org>
>>>
>>> If the device supports SGLs, use these for all user requests. This
>>> format encodes the expected transfer length so it can catch short buffer
>>> errors in a user command, whether it occurred accidently or maliciously.
>>>
>>> For controllers that support SGL data mode, this is a viable mitigation
>>> to CVE-2023-6238. For controllers that don't support SGL, log a warning
>>
>> For the layman, what is this security problem?
> 
> The passthrough interface can't validate buffer lengths against the
> command's actual payload. NVMe traditionally did not have explicit
> buffer sizes encoded in commands, so this only works correctly if the
> device and host both agree on what the implicit transfer size actually
> is. More recent NVMe features fixed that problem with explicit buffer
> sizes in the commands.
> 
> Whether by accident or on purpose, user space can request a smaller
> buffer than the device is going to transfer into it. That will corrupt
> memory.

Does the Linux kernel know the buffer size?

>>> -	if (has_metadata && !supports_metadata)
>>> -		return -EINVAL;
>>> +	if (!nvme_ctrl_sgl_supported(ctrl))
>>> +		dev_warn_once(ctrl->device, "using unchecked data buffer\n");
>>
>> Linux logs this on the Dell XPS 13 9360 with PC300 NVMe SK hynix 512GB
>> (firmware revision 20004A00).
>>
>>      [   14.399238] nvme nvme0: using unchecked data buffer
>>
>> What should a user do about it?
> 
> Nothing for a user to do. This is an indication that the passthrough
> interface has been used with a device that can only use implicit
> transfer lengths. It's more of an indication that improper use of this
> interface might be the cause of memory corruption observations.

Could it be fixed by a firmware update?

I wonder if the level should be reduced then to info, or if it can be 
elaborated. Maybe:

The PC300 NVMe SK hynix 512GB can only use implicit transfer length. 
Improper use might be the cause of memory corruption observations.


Kind regards,

Paul


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New warning `nvme nvme0: using unchecked data buffer`
  2024-12-02 15:15       ` New warning `nvme nvme0: using unchecked data buffer` Paul Menzel
@ 2024-12-02 15:49         ` Keith Busch
  2025-01-26  8:37           ` Paul Menzel
  0 siblings, 1 reply; 13+ messages in thread
From: Keith Busch @ 2024-12-02 15:49 UTC (permalink / raw)
  To: Paul Menzel; +Cc: Keith Busch, linux-nvme, hch, sagi

On Mon, Dec 02, 2024 at 04:15:03PM +0100, Paul Menzel wrote:
> Am 02.12.24 um 16:05 schrieb Keith Busch:
> > On Mon, Dec 02, 2024 at 08:56:03AM +0100, Paul Menzel wrote:
> > > Am 18.11.24 um 16:57 schrieb Keith Busch:
> > > > From: Keith Busch <kbusch@kernel.org>
> > > > 
> > > > If the device supports SGLs, use these for all user requests. This
> > > > format encodes the expected transfer length so it can catch short buffer
> > > > errors in a user command, whether it occurred accidently or maliciously.
> > > > 
> > > > For controllers that support SGL data mode, this is a viable mitigation
> > > > to CVE-2023-6238. For controllers that don't support SGL, log a warning
> > > 
> > > For the layman, what is this security problem?
> > 
> > The passthrough interface can't validate buffer lengths against the
> > command's actual payload. NVMe traditionally did not have explicit
> > buffer sizes encoded in commands, so this only works correctly if the
> > device and host both agree on what the implicit transfer size actually
> > is. More recent NVMe features fixed that problem with explicit buffer
> > sizes in the commands.
> > 
> > Whether by accident or on purpose, user space can request a smaller
> > buffer than the device is going to transfer into it. That will corrupt
> > memory.
> 
> Does the Linux kernel know the buffer size?

Not necessarily. The kernel just knows what the user requested. There
are some commands that the kernel could validate to make sure what the
user requested makes sense for the command it is sending, but there are
vendor specific commands and command sets that the kernel has no idea
how to decode, as well as new spec features always being added that
change how to decode existing commands, so we just have to trust the
user isn't abusing the interface.
 
> > >      [   14.399238] nvme nvme0: using unchecked data buffer
> > > 
> > > What should a user do about it?
> > 
> > Nothing for a user to do. This is an indication that the passthrough
> > interface has been used with a device that can only use implicit
> > transfer lengths. It's more of an indication that improper use of this
> > interface might be the cause of memory corruption observations.
> 
> Could it be fixed by a firmware update?

Sure, it's just a spec feature that a firmware update could enable. But
I suspect devices supporting the feature also have hardware capabilities
to make it faster too, so I'm not sure if implementating in firmware is
desirable for all devices.
 
> I wonder if the level should be reduced then to info, or if it can be
> elaborated. Maybe:
> 
> The PC300 NVMe SK hynix 512GB can only use implicit transfer length.
> Improper use might be the cause of memory corruption observations.

There was a proposal to lock the interface down to known commands, which
I am absolutely against doing. I'm open to changing the log level or
message text to something better, though.


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New warning `nvme nvme0: using unchecked data buffer`
  2024-12-02 15:49         ` Keith Busch
@ 2025-01-26  8:37           ` Paul Menzel
  2025-01-29 19:00             ` Keith Busch
  0 siblings, 1 reply; 13+ messages in thread
From: Paul Menzel @ 2025-01-26  8:37 UTC (permalink / raw)
  To: Keith Busch; +Cc: Keith Busch, linux-nvme, hch, sagi

Dear Keith,


Am 02.12.24 um 16:49 schrieb Keith Busch:
> On Mon, Dec 02, 2024 at 04:15:03PM +0100, Paul Menzel wrote:
>> Am 02.12.24 um 16:05 schrieb Keith Busch:
>>> On Mon, Dec 02, 2024 at 08:56:03AM +0100, Paul Menzel wrote:
>>>> Am 18.11.24 um 16:57 schrieb Keith Busch:
>>>>> From: Keith Busch <kbusch@kernel.org>
>>>>>
>>>>> If the device supports SGLs, use these for all user requests. This
>>>>> format encodes the expected transfer length so it can catch short buffer
>>>>> errors in a user command, whether it occurred accidently or maliciously.
>>>>>
>>>>> For controllers that support SGL data mode, this is a viable mitigation
>>>>> to CVE-2023-6238. For controllers that don't support SGL, log a warning
>>>>
>>>> For the layman, what is this security problem?
>>>
>>> The passthrough interface can't validate buffer lengths against the
>>> command's actual payload. NVMe traditionally did not have explicit
>>> buffer sizes encoded in commands, so this only works correctly if the
>>> device and host both agree on what the implicit transfer size actually
>>> is. More recent NVMe features fixed that problem with explicit buffer
>>> sizes in the commands.
>>>
>>> Whether by accident or on purpose, user space can request a smaller
>>> buffer than the device is going to transfer into it. That will corrupt
>>> memory.
>>
>> Does the Linux kernel know the buffer size?
> 
> Not necessarily. The kernel just knows what the user requested. There
> are some commands that the kernel could validate to make sure what the
> user requested makes sense for the command it is sending, but there are
> vendor specific commands and command sets that the kernel has no idea
> how to decode, as well as new spec features always being added that
> change how to decode existing commands, so we just have to trust the
> user isn't abusing the interface.
>   
>>>>       [   14.399238] nvme nvme0: using unchecked data buffer
>>>>
>>>> What should a user do about it?
>>>
>>> Nothing for a user to do. This is an indication that the passthrough
>>> interface has been used with a device that can only use implicit
>>> transfer lengths. It's more of an indication that improper use of this
>>> interface might be the cause of memory corruption observations.
>>
>> Could it be fixed by a firmware update?
> 
> Sure, it's just a spec feature that a firmware update could enable. But
> I suspect devices supporting the feature also have hardware capabilities
> to make it faster too, so I'm not sure if implementing in firmware is
> desirable for all devices.
> 
>> I wonder if the level should be reduced then to info, or if it can be
>> elaborated. Maybe:
>>
>> The PC300 NVMe SK hynix 512GB can only use implicit transfer length.
>> Improper use might be the cause of memory corruption observations.
> 
> There was a proposal to lock the interface down to known commands, which
> I am absolutely against doing. I'm open to changing the log level or
> message text to something better, though.

Sorry for not proposing something. Linux 6.13 was released with the 
warning above. As nothing can be done about – it’s unlikely the vendor 
is going to enable it in the firmware on released devices – I propose to 
decrease the log level to info, and rephrase it:

nvme0: Using unchecked data buffer. The passthrough interface was used 
but the device can only use implicit transfer length. Improper use might 
be cause for memory corruption observations. If in doubt contact the 
hardware vendor.

It’s much longer, but helps the user to understand the situation much 
better.


Kind regards,

Paul


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: New warning `nvme nvme0: using unchecked data buffer`
  2025-01-26  8:37           ` Paul Menzel
@ 2025-01-29 19:00             ` Keith Busch
  0 siblings, 0 replies; 13+ messages in thread
From: Keith Busch @ 2025-01-29 19:00 UTC (permalink / raw)
  To: Paul Menzel; +Cc: Keith Busch, linux-nvme, hch, sagi

On Sun, Jan 26, 2025 at 09:37:09AM +0100, Paul Menzel wrote:
> Sorry for not proposing something. Linux 6.13 was released with the warning
> above. As nothing can be done about - it´s unlikely the vendor is going to
> enable it in the firmware on released devices - I propose to decrease the
> log level to info, and rephrase it:
> 
> nvme0: Using unchecked data buffer. The passthrough interface was used but
> the device can only use implicit transfer length. Improper use might be
> cause for memory corruption observations. If in doubt contact the hardware
> vendor.
> 
> It´s much longer, but helps the user to understand the situation much
> better.

That's quite verbose!

Let's take a step back a moment. This is a transfer mode the Linux nvme
driver has always supported. It was afterall the *only* way for the
first version of the protocol. I don't want to unnecessarily call
attention to hardware vendors who adhere to that version of the
spec; this is more of a notification to the people who think this was
worth making a CVE out of it.

So let's turn down the level from warn to info. Maybe remove the check
from the IO path and just print out device interesting capabilities
during initial enumeration:

  nvme0: SGL+ MetaSGL- Etc...


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2025-01-29 19:00 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-18 15:57 [PATCHv3 0/3] meta sgl and userspace protection Keith Busch
2024-11-18 15:57 ` [PATCHv3 1/3] nvme-pci: add support for sgl metadata Keith Busch
2024-11-18 16:27   ` Christoph Hellwig
2024-11-18 15:57 ` [PATCHv3 2/3] nvme: define the remaining used sgls constants Keith Busch
2024-11-18 16:28   ` Christoph Hellwig
2024-11-18 15:57 ` [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible Keith Busch
2024-11-18 16:28   ` Christoph Hellwig
2024-12-02  7:56   ` New warning `nvme nvme0: using unchecked data buffer` (was: [PATCHv3 3/3] nvme-pci: use sgls for all user requests if possible) Paul Menzel
2024-12-02 15:05     ` Keith Busch
2024-12-02 15:15       ` New warning `nvme nvme0: using unchecked data buffer` Paul Menzel
2024-12-02 15:49         ` Keith Busch
2025-01-26  8:37           ` Paul Menzel
2025-01-29 19:00             ` Keith Busch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox