http://redsymbol.net/linux-kernel-boot-parameters/3.2/
compat Treat PCIe ports as PCI-to-PCI bridges, disable the PCIe
ports driver.
在我的理解中,PCIe 端口(这里是指根端口?)是一个根端口,为什么它可以被视为 PCI-to-PCI 桥接器。
http://redsymbol.net/linux-kernel-boot-parameters/3.2/
compat Treat PCIe ports as PCI-to-PCI bridges, disable the PCIe
ports driver.
在我的理解中,PCIe 端口(这里是指根端口?)是一个根端口,为什么它可以被视为 PCI-to-PCI 桥接器。
我找到了一个 grub 参数 - ecc_enable_override
这是否意味着如果 BIOS 启用 ECC 检测,启用“ecc_enable_override”参数将更改为 OS 检测 ECC?
/*
* Set by command line parameter. If BIOS has enabled the ECC, this override is
* cleared to prevent re-enabling the hardware by this driver.
*/
在做lspci的时候,通常我们可以看到一个驱动在使用:
前任:
Kernel driver in use: xhci_hcd
如果没有“正在使用的驱动程序”,是否意味着真的没有驱动程序,或者它可能是正在使用的驱动程序但不是外部模块(内核内置模块)
使用“turbostat”命令时,我们可以看到“TSC_MHz”字段数据。
这里的“TSC 跑”是什么意思?
操作系统处于空闲状态?
这是否意味着驱动程序不是来自原始操作系统发行商,内核变成了受污染的内核?
“X”是什么意思?
我没有看到“x”的解释
参考: https ://www.kernel.org/doc/html/v4.15/admin-guide/tainted-kernels.html
两者都是英特尔发布的 LED 控制工具。
https://linux.die.net/man/8/ledmon
https://linux.die.net/man/8/ledctl
他们有什么区别?
我是否需要先执行 ledmon 才能运行 ledctl?
使用nvme-create-ns
,我们可以分配命名空间大小和命名空间容量;有什么不同?
在使用 NVMe SSD 之前是否有必要这样做?
使用dmidecode
命令时,我们可以看到 RAM 的速度:
Speed: 2933 MHz
和
Configured Clock Speed: 2666 MHz
当前运行速度是哪一个?为什么有两个速度项目?
Windows 10 支持 Intel 变速。
Linux(内核)是否也支持它?
变速的相关资料:
https://www.anandtech.com/show/9751/examineing-intel-skylake-speed-shift-more-responsive-processors
我测试了一个使用以下命令启动的 Docker 容器(从 Nvidia CUDA 映像创建):
docker run -i -t xxxxxx /bin/bash
可以看到root提示,但是还是没有某些操作的权限;例如,当我执行时:
dmesg
我看到“权限被拒绝”。为什么?
当我们运行时:
numactl --hardware
我们可以看到numa设置的当前状态。
但是,它似乎不是Linux设置的(至少,我没有添加参数来设置它)。是BIOS设置的吗?
https://github.com/martinezjavier/ldd3/blob/master/scull/main.c#L601
static void scull_setup_cdev(struct scull_dev *dev, int index)
{
int err, devno = MKDEV(scull_major, scull_minor + index);
cdev_init(&dev->cdev, &scull_fops);
dev->cdev.owner = THIS_MODULE;
dev->cdev.ops = &scull_fops;
我们可以看到andscull_fops
赋值了两次,为什么?cdev_init()
cdev.ops
测试1:
dd if=/dev/sdb of=/dev/sdc
/dev/sdb 是可启动的 OS 硬盘,/dev/sdc 是另一个硬盘,执行上述 dd 命令后,/dev/sdc 变为可启动。
测试 2:
dd if=/dev/sdb of=/dev/sdc
/dev/sdb 是可启动的 OS 硬盘,/dev/sdc 是 PCIe NVME SSD,执行上述命令后,/dev/sdc 无法启动。
类似问题: dd 将硬盘复制到 USB 但无法启动?
上述情况,操作系统需要在initramfs中安装usb-storage驱动;是否需要为 NVME SSD 安装任何驱动程序?
我不是驱动程序员,我不清楚 linux 如何为 pcie 设备分配 irq 号。
从 NIC 驱动程序示例中,Linux 似乎在执行“probe”或“open”函数之前就已经知道应该使用哪个 irq 号。
错误 = ixgbe_request_irq(适配器);
ixgbe 可以通过 'adapter' 变量的数据获取 irq 编号,这意味着 irq 值已经在适配器结构中,它不是生成的编号,它是一个已经存在的值。
如果从pci/pcie配置空间读取,是不是很容易和其他设备冲突?
如果它是由内核生成/排列的,“适配器”变量中的 irq 号如何?(或者它是由 BIOS 分配的?)
对于 MSI 的中断,它似乎是由内核生成的??
--
据我了解,应该从 PCIe 配置空间中的中断线路寄存器(偏移 3Ch)中读取 irq 编号,我猜这就是为什么 kerenl 已经知道应该使用哪个 irq 编号,并且应该由 BIOS 更新中断线路寄存器(我的猜测)在启动期间,但仍然有一个虚拟 IRQ(当 lspci 没有 -b 时),并且似乎 MSI 有另一个 irq(?),它们是公共资源,如要安排的内存吗?