没有 task_struct 的 ISR

众所周知,中断上下文不能睡眠,但是这句话细说起来,还是有很多值得深究的地方。所谓中断上下文,就是中断触发后,执行中断服务例程 (Interrupt Service Routine/Interrupt Handler) 的资源,这些资源有哪些呢?少得可怜,除了执行 ISR 代码的 CPU 核心外,中断上下文甚至都没有自己的栈来保存临时变量,所有的资源都是抢占中断触发时那个进程的,显然不能让这种“抢占”持续太久,所以 Linux 内核就将 ISR 分成了 top 和 bottom 两部分,也就是硬件中断上下文软件中断上下文, 所以严格来说是,在 Linux 内核中,硬件中断上下文不能睡眠

Read more »

flowchart TD
  subgraph GPU
    slot-0[HW Run Queue]
    slot-1[HW Run Queue]
    slot-2[HW Run Queue]
  end

  sched0[drm_gpu_scheduler]
  sched1[drm_gpu_scheduler]
  sched2[drm_gpu_scheduler]

  runq00[drm_sched_rq<br>KERNEL]
  runq01[drm_sched_rq<br>HIGH]
  runq02[drm_sched_rq<br>NORMAL]
  runq03[drm_sched_rq<br>LOW]

  runq10[drm_sched_rq<br>KERNEL]
  runq11[drm_sched_rq<br>HIGH]

  runq20[drm_sched_rq<br>KERNEL]
  runq21[drm_sched_rq<br>HIGH]
  runq22[drm_sched_rq<br>NORMAL]

  entity00@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity01@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity02@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity03@{shape: docs, label: "drm_sched_entity<br>job chain"}

  entity10@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity11@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity12@{shape: docs, label: "drm_sched_entity<br>job chain"}


  entity20@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity21@{shape: docs, label: "drm_sched_entity<br>job chain"}
  entity22@{shape: docs, label: "drm_sched_entity<br>job chain"}

  entity00 --> entity01 --> entity02 --> entity03 --> runq00
  entity10 --> entity11 --> entity12 --> runq10
  entity20 --> entity21 --> entity22 --> runq02

  runq00 --> sched0
  runq01 --> sched0
  runq02 --> sched0
  runq03 --> sched0

  runq10 --> sched1
  runq11 --> sched1

  runq20 --> sched2
  runq21 --> sched2
  runq22 --> sched2

  sched0 --> slot-0
  sched1 --> slot-1
  sched2 --> slot-2
Read more »

小小的人儿

攥不住流淌的昼与夜

当你舞动手中的仙女棒

却仿佛在挥洒银河

捂住双耳

不为那凛凛的冰寒

只等花儿在星星眼前开放

仍怀抱静谧和安然

这年初二

我们仨

凤翔城里看凤翔

往后余生

翔凤桥头不彷徨

1
2
3
4
5
6
7
8
UVD feature version: 0, firmware version: 0x40000d00
MC feature version: 0, firmware version: 0x00a777d0
ME feature version: 29, firmware version: 0x00000091
PFP feature version: 29, firmware version: 0x00000054
CE feature version: 29, firmware version: 0x0000003d
RLC feature version: 1, firmware version: 0x00000001
SMC feature version: 0, program: 16, firmware version: 0x10020000 (2.0.0)
VBIOS version: 113-xxx-xxx
Read more »

Power State

Level State Power Command
(systemctl)
S0 idle full N/A
S1 sleep low N/A
S2 deeper sleep lower N/A
S3 suspend to RAM CPU off RAM on suspend
S4 suspend to DISK Most devices off hibernate
S5 shutdown completely off poweroff
Read more »

QEMU

特性 QEMU VirtualBox
开发者 开源(QEMU 项目, 最初由 Fabrice Bellard 开发) Oracle(原 Sun Microsystems)
开源/闭源 完全开源(GPLv2) 部分开源(扩展包闭源)
支持架构 x86, ARM, RISC-V, MIPS, LoongArch, SPARC等 仅 x86_64
是否支持纯软件模拟 支持(TCG 模拟,也支持 KVM 加速) 不支持(必须 Intel VT-x/AMD-V)
适用场景 嵌入式开发, 跨架构仿真 桌面用户运行 Win/Linux
Read more »

virtio - 半虚拟化设备标准

对比项 全虚拟化(Emulated) Virtio(半虚拟化) SR-IOV(直通)
性能 ❌ 低(模拟开销大) ✅ 高 ✅✅ 超高(硬件直通)
驱动支持 无需额外驱动(但慢) 需要Virtio 驱动 需要物理设备驱动
适用场景 适用于无 Virtio 支持的旧 OS 普遍适用于 VM 适用于高性能网络存储
硬件需求 无特殊需求 无特殊需求 需要硬件支持
Read more »
0%