KERNEL
Posts
183 postsIRQ Stack(ARM64) - Overview
IRQ Stack을 소개할까 해요. ARM64 비트 아키텍처 기반 리눅스 커널 4.4 버전부터는 IRQ Stack을 지원하거든요. 이게 뭔 소리냐?IRQ가 Trigger되면IRQ Stack Bottom 주소로 점프해서 IRQ Stack을 써서 함수 호출 및 로컬 변수를 처리한다는 거에요. 간단히 설명을 하면 A -> B -> C -> IRQ Trigger ->D 이런 순서로 호출된다고 보면 되요..[스택주소]0x9880x990 D0x9980xA000 irq_el1 //<<-- IRQ Stack Bottom 주소 // .. 생략 ...0x700x780x80 C0x880x90 B0x980xa00 A 그럼 왜 IRQ 용 스택을 따로 쓸까요? 여러가
spin_lock() vs spin_lock_irq() vs spin_lock_irqsave() - 분석
자 그 동안 궁금해왔던 아래 API들의 차이점에 대해서 알아보는 시간을 갖도록 하겠습니다.spin_lock(), spin_lock_irq(), spin_lock_irqsave() 리눅스 커널 책에서 마르고 닳도록 설명을 많이 하고 있는데요. 직접 소스를 열어서 분석하는게 가장 좋은 리눅스 커널을 마스터하는 길인 것 같아요. 소스 코드가 오픈되어 있잖아요. 1> spin_lock()아래 순서로 실제 구현부는 __raw_spin_lock() 함수 라는 걸 알 수 있어요. spin_lock -> raw_spin_lock -> __raw_spin_lockstatic inline void spin_lock(spinlock_t *lock){ raw_spin_lock(&lock->rlo
ARM64(Aarch64) - 함수 호출시 Stack Push(스택 푸쉬) 규약
아래와 같은 콜 스택에서 유저 공간에서 돌던 레지스터 Stack Push와 Exception 발생 시 Stack Push에 대해서 살펴봤어요. 이제는 평상시 함수 호출 시 어떻게 Stack Push를 하는 지 점검하려고 해요. 자 계속 그 동안 다뤄왔던 아래 "rild"란 프로세스의 콜스택에서 msm_ipc_router_sendmsg()-> msm_ipc_router_send_to() 으로 함수가 호출된 후 스택 푸쉬가 어떻게 수행되는 지 점검해볼께요.-000|do_mem_abort()-001|el1_da(asm) -->|exception-002|ch_pop_remote_rx_intent()-003|glink_tx_common()-004|glink_txv()-005|ipc_router_glink
특정 CPU를 끄는 패치(특정 CPU에서 커널 크래시)
가끔 타겟 보드에서 특정 CPU에서만 커널 패닉으로 시스템이 리셋되는 경우가 있어요.이럴 때 테스트할 수 있는 유용한 디버깅 패치를 소개하고자 해요. 아래 패치는 부팅 할 때 CPU3을 sys node에서 아예 제거시키거든요. 아예 CPU3가 안 돌게 되는거죠.diff --git a/kernel/cpu.c b/kernel/cpu.cindex 5b4440d..14cce91 100644--- a/kernel/cpu.c+++ b/kernel/cpu.c@@ -510,7 +510,7 @@ static int _cpu_up(unsigned int cpu, int tasks_frozen) cpu_hotplug_begin(); - if (cpu_online(cpu) || !cpu_presen
![[1년 전 오늘] 250608 인천 무의도 덕점방파제 바다루어낚시 - 장대, 광어](https://img.zoomtrend.com/2026/06/10/1781084366-20250608122254.jpg)
![[CV] [Comi] '終末のハーレム ファンタジア' (종말의 하렘 판타지아) 17권. 그동안 SAVAN에 무슨 일이 있었던 거냐](https://img.zoomtrend.com/2026/06/10/1781084386-ECA484EBA6ACEC9790.jpg)

