My English Study매일 만나는 비즈니스 영어
← 기술 공유·토론 학습 목록

SYSTEM SW / 2026-08-14 / Tech sharing & debate

Debating Vendor Modules and Upstream-First under the Generic Kernel Image

GKI 환경에서 벤더 모듈과 업스트림 우선 원칙 토론

금요 기술 공유 두 번째 세션으로, Atlas의 6.12 GKI 전환을 앞두고 Orion에서 가져온 약 300개의 아웃오브트리 커널 패치를 어떻게 처리할지 토론합니다. 커널·BSP, 플랫폼 프레임워크, SQE, 제품 보안 팀이 모듈화, 벤더 훅, 업스트림 기여의 장단점과 패치 분류 기준을 정합니다.

가상의 비즈니스 회의 · 중급~고급 · 2,219단어 · 약 18분

Daniel Cho · Kernel & BSPSora Han · Kernel & BSPRachel Kim · Platform FrameworkEthan Yoon · SQEJiho Nam · Product Security

01 / English script

Welcome and Format

01 · Daniel ChoKernel & BSP

Welcome back to the Friday tech share. Last week we talked about lockups, and judging by the wiki page views, people found it useful. Today's topic is more of a debate than a lecture. Sora will present an inventory of our out-of-tree kernel patches, and then we'll argue about what to do with them under the Generic Kernel Image. I've invited people from outside the kernel team on purpose, because this decision affects everyone.

02 · Sora HanKernel & BSP

Thanks, Daniel. For anyone who's new to the topic, I'll start with a two-minute explanation of what the Generic Kernel Image is and why it matters, and then show the numbers.

03 · Rachel KimPlatform Framework

I'm definitely one of those people. From the framework side, the kernel is mostly a black box I complain about.

04 · Ethan YoonSQE

Same here. I'm mainly interested in what this means for testing and for the Atlas schedule.

05 · Jiho NamProduct Security

And I'm here because GKI has big implications for how quickly we can ship kernel security fixes, which is my favorite topic.

What GKI Changes

06 · Sora HanKernel & BSP

Here's the short version. In the old model, every device maker took the kernel from the chipset vendor, added hundreds of their own changes, and built a kernel that was unique to each device. That gave us total freedom, but it meant that every security fix had to be merged and tested separately for every device. With GKI, there's one kernel binary, built by Google from a common source tree, and it's the same for every device on that kernel version.

07 · Sora HanKernel & BSP

Everything that's specific to our hardware or our product has to live outside that core binary, in loadable vendor modules. And modules can only use a defined set of kernel functions and data structures, called the symbol list. If a module needs something that isn't on the list, we have to ask Google to add it, and they'll only agree if there's a good reason.

08 · Rachel KimPlatform Framework

So in practice, you lose the ability to change the core kernel directly. Any change you used to make inside the kernel now has to either become a module, go into the common tree, or disappear.

09 · Sora HanKernel & BSP

Exactly. There's one more option, which is where most of the debate comes from: vendor hooks. Google has added hundreds of small hook points in the core kernel where a vendor module can attach its own code, for example to adjust a scheduling decision. They're a pragmatic escape hatch, but they're also controversial, because they let vendors keep doing things that arguably should be solved properly upstream.

10 · Jiho NamProduct Security

And from a security perspective, the big win is that Google can fix a vulnerability in the core kernel once, and every GKI device can pick it up quickly. In the old model, our median time to ship a kernel security fix on Orion was about forty days. Partners who are fully on GKI are doing it in under two weeks.

The Patch Inventory

11 · Daniel ChoKernel & BSP

Sora, show them the numbers. That's where it gets real.

12 · Sora HanKernel & BSP

We're carrying three hundred and six out-of-tree patches from Orion. I went through every one of them over the last two weeks and sorted them into four buckets. First bucket: sixty-two patches are already covered by the 6.12 common tree, either because we upstreamed them or because upstream solved the same problem differently. Those we simply drop. That's the easy part.

13 · Sora HanKernel & BSP

Second bucket: one hundred and forty-one patches are driver code that can move into vendor modules with modest effort. These are things like our display panel drivers, sensor drivers, and charging logic. Third bucket: fifty-four patches change core kernel behavior, mostly in the scheduler, memory management, and power, and the only way to keep them is through vendor hooks, or by getting the change accepted upstream. Fourth bucket: forty-nine patches that, honestly, I can't justify keeping. They're workarounds for old bugs, debugging aids, or features nobody uses anymore.

14 · Ethan YoonSQE

Forty-nine patches nobody needs? How did we end up carrying those for years?

15 · Sora HanKernel & BSP

Because removing a patch feels risky, and keeping it feels free. Each time we moved to a new kernel, it was easier to rebase everything than to ask whether each patch still mattered. GKI is forcing us to ask the question we should have been asking all along.

16 · Rachel KimPlatform Framework

Before you drop them, though, I'd want to know if any of the framework relies on their behavior. We've been bitten before by a kernel 'cleanup' that removed a sysfs file one of our services was reading.

17 · Sora HanKernel & BSP

That's a very fair point, and it's exactly why I want a review from each team before we drop anything. I'll publish the list of forty-nine with a short description of each, and give everyone two weeks to object.

The Debate: Vendor Hooks or Upstream

18 · Daniel ChoKernel & BSP

Now the interesting part: the fifty-four core patches. My position is pragmatic. For Atlas, we should move as many of them as possible onto vendor hooks. We have a launch date in March, and upstreaming a scheduler change can easily take six months or more, with no guarantee of success. Vendor hooks let us keep our tuning and ship on time.

19 · Jiho NamProduct Security

I'd push back on that. Every vendor hook is a place where our module code runs inside the most sensitive parts of the kernel. From a security standpoint, that's attack surface we own forever. And if Google changes or removes a hook in a future kernel, we're back to square one. Upstream-first may be slower, but it's the only approach that actually reduces our long-term burden.

20 · Daniel ChoKernel & BSP

In principle, I agree with you. In practice, 'upstream-first' sometimes means 'ship late'. I've seen teams submit a patch upstream, get into a six-month discussion about the right design, and end up with something that doesn't solve their original problem. I can't bet the Atlas launch on that.

21 · Rachel KimPlatform Framework

Can I offer a framework perspective? We had the same debate about platform changes years ago. What worked for us was a two-track approach: use the escape hatch to ship, but open the upstream discussion at the same time, with a deadline to retire the local change. If we never set a deadline, the temporary solution becomes permanent.

22 · Sora HanKernel & BSP

I like that. And honestly, not all fifty-four patches are equal. About twenty of them are small power or scheduling tweaks that upstream would probably accept quickly, maybe within a release or two. Those are worth upstreaming now. The other thirty-four are larger, more product-specific changes where vendor hooks are the realistic option.

23 · Jiho NamProduct Security

Then I'd propose a rule for the hooks: every vendor hook we use needs a named owner, a security review of the code that runs inside it, and an expiry date when we revisit whether it can go upstream. If nobody's willing to own it, it shouldn't exist.

24 · Daniel ChoKernel & BSP

I can live with that, as long as the security review doesn't become a bottleneck. If every hook waits three weeks for a review, we're back to shipping late.

25 · Jiho NamProduct Security

Fair. Most hooks are small. If your team sends them in batches with a short design note, I can commit to a one-week turnaround.

Testing Implications

26 · Ethan YoonSQE

Let me bring this back to testing. If the core kernel comes from Google and gets updated more frequently, does SQE need to retest everything every time the core kernel changes? Because that would be a lot of testing.

27 · Sora HanKernel & BSP

That's one of the trade-offs. The core kernel changes are tested heavily by Google and by other partners using the same binary, so they're less risky than our own changes used to be. But our modules interact with the core kernel, so we still need a solid regression suite. My suggestion is a smaller kernel-focused suite that runs on every core kernel update, and the full suite only for our own module changes and monthly releases.

28 · Ethan YoonSQE

That's reasonable, but I'd want the kernel-focused suite to include our stress profiles, not just functional tests. Most of the kernel bugs we find, like the storage panic this month, only show up under sustained load.

29 · Daniel ChoKernel & BSP

Agreed. A twelve-hour stress run on fifty devices would be a good minimum. Tom already proposed something similar for storage changes after the Orion incident, so we can reuse that setup.

30 · Rachel KimPlatform Framework

One question from me: will framework engineers still be able to debug kernel issues the same way? If the core kernel is a Google binary, do we still get symbols and source for crash analysis?

31 · Sora HanKernel & BSP

Yes. Google publishes the source and the debug symbols for every GKI build, so ramdump analysis works exactly the same way. The only difference is that if the bug is in the core kernel, the fix goes to Google rather than into our tree.

Managing the Symbol List

32 · Ethan YoonSQE

Sora, you mentioned that modules can only use functions on the symbol list. What happens when one of our modules needs something that isn't on the list, and we're two weeks from a milestone?

33 · Sora HanKernel & BSP

That's the scenario that worries me most. Google updates the symbol list on a regular schedule, and requests are reviewed in batches. If we miss a window, we may have to wait several weeks. The way to avoid that is to identify every symbol our modules need early, ideally right after we convert the driver patches, and submit them all at once.

34 · Daniel ChoKernel & BSP

Kevin from Google also warned us about this on the Arvenna call. Partners who accumulate private symbol exports during bring-up end up spending weeks cleaning them up before certification. So we should build a check into our CI that fails any module using a symbol outside the official list, from day one.

35 · Jiho NamProduct Security

From a security angle, I'd add one more thing. Some symbols give modules very powerful access, for example to modify page tables or credentials. When our modules request those, I'd like to know, because a vulnerability in a module with that kind of access is much more dangerous than one in a simple sensor driver.

36 · Sora HanKernel & BSP

That's easy to add. I can flag sensitive symbols in the CI report, and any new request for one of them would need Jiho's approval before we submit it to Google.

37 · Rachel KimPlatform Framework

This sounds a lot like how we manage hidden platform APIs on the framework side. We keep an allow list, every exception needs a justification, and the list gets reviewed every release. It's tedious, but it's saved us from some very painful upgrades.

38 · Daniel ChoKernel & BSP

That's a good model to borrow. Let's treat the symbol list the same way, with a review at every kernel update.

Upstream Contribution Budget

39 · Jiho NamProduct Security

If we're serious about upstreaming twenty patches, someone needs time to do it. Upstream work is not something engineers can do in the gaps between bring-up crises.

40 · Daniel ChoKernel & BSP

You're right, and that's a resource question I'll have to take to management. My proposal would be one engineer at fifty percent, dedicated to upstream work, starting in September. It's not much, but it's more than we've ever had.

41 · Sora HanKernel & BSP

I'd volunteer for that, actually. After two weeks with this inventory, I know these patches better than anyone, and I'd rather fix the root problem than rebase the same patches again in two years.

42 · Ethan YoonSQE

Just be careful not to take Sora away from Atlas integration. She's also the person who makes sure the daily build boots.

43 · Daniel ChoKernel & BSP

Noted. Let's start after first boot on Atlas, so the integration work is stable before Sora splits her time.

Agreed Principles

44 · Daniel ChoKernel & BSP

Let me try to capture what we agreed. One: the sixty-two patches already covered upstream are dropped. Two: the hundred and forty-one driver patches become vendor modules. Three: the forty-nine unjustified patches are published for a two-week objection period, then dropped. Four: of the fifty-four core patches, about twenty go upstream, and the rest use vendor hooks, each with an owner, a security review, and an expiry date. Five: a kernel-focused regression suite with stress runs for every core kernel update.

45 · Jiho NamProduct Security

That works for me. It's a much better outcome than I expected when I walked in.

46 · Rachel KimPlatform Framework

Same. And I'll have my team check the forty-nine patches for hidden dependencies before the objection period ends.

Action Items

47 · Daniel ChoKernel & BSP

Action items. Sora: publish the full inventory with the four buckets by Tuesday, including the list of forty-nine for objections. Rachel: framework dependency check on the forty-nine by August 28th. Jiho: draft the vendor hook review checklist, so reviews are consistent. Ethan: define the kernel-focused regression suite with Tom. And I'll write the proposal for the upstream engineer and take it to management next week.

48 · Sora HanKernel & BSP

I'll also add a column to the inventory showing which patches touch interfaces that user space reads, like sysfs or procfs files, so Rachel's team can focus on those first.

49 · Ethan YoonSQE

That will save us a lot of time. Thanks, Sora. I'll also ask Tom to reserve the stress lab for the first kernel-focused run, so we have a baseline before the module conversion starts.

Closing and Next Session

50 · Daniel ChoKernel & BSP

Thank you all. I thought this would be a lot more heated, but I think we found a sensible middle path. Next Friday, August 21st, at 4 p.m. Korea time, the topic is boot time optimization. Given what happened with the Pulse Watch boot loop, it should be a lively discussion.

51 · Rachel KimPlatform Framework

I'll be there. This was the first kernel session where I understood everything, so thank you, Sora.

52 · Sora HanKernel & BSP

Thank you. I'll take that as a compliment. And if anyone wants to go through their team's patches in more detail before the objection period ends, just book thirty minutes with me next week. I'd much rather answer questions now than discover a hidden dependency after we've dropped something.

02 / 한국어 번역

환영 및 진행 방식

01 · Daniel ChoKernel & BSP

금요 기술 공유에 다시 오신 걸 환영합니다. 지난주엔 락업 이야기를 했는데, 위키 페이지 조회수로 보면 유용하셨던 것 같네요. 오늘 주제는 강의라기보다 토론에 가깝습니다. 소라 님이 저희 아웃오브트리 커널 패치 현황을 발표하고, 그다음 GKI 체제에서 그 패치들을 어떻게 할지 논쟁할 겁니다. 이 결정은 모두에게 영향을 주기 때문에 일부러 커널팀 외부 분들도 초대했습니다.

02 · Sora HanKernel & BSP

고마워요, Daniel. 이 주제가 처음이신 분들을 위해 GKI가 무엇이고 왜 중요한지 2분 정도 설명하고 나서 수치를 보여 드리겠습니다.

03 · Rachel KimPlatform Framework

저도 확실히 그런 사람 중 하나예요. 프레임워크 쪽에서 커널은 주로 불평하는 블랙박스거든요.

04 · Ethan YoonSQE

저도 마찬가지입니다. 주로 테스트와 Atlas 일정에 어떤 의미가 있는지에 관심이 있어요.

05 · Jiho NamProduct Security

그리고 저는 GKI가 커널 보안 수정을 얼마나 빨리 출시할 수 있는지에 큰 영향을 주기 때문에 왔습니다. 제가 제일 좋아하는 주제죠.

GKI가 바꾸는 것

06 · Sora HanKernel & BSP

짧게 말씀드리겠습니다. 예전 방식에서는 모든 제조사가 칩셋 벤더로부터 커널을 받아서 자체 변경을 수백 개 추가하고, 단말마다 고유한 커널을 빌드했습니다. 완전한 자유가 있었지만, 모든 보안 수정을 단말마다 따로 머지하고 테스트해야 했습니다. GKI에서는 Google이 공통 소스 트리에서 빌드한 커널 바이너리가 하나 있고, 그 커널 버전을 쓰는 모든 단말에서 동일합니다.

07 · Sora HanKernel & BSP

저희 하드웨어나 제품에 특화된 모든 것은 그 핵심 바이너리 밖, 즉 로드 가능한 벤더 모듈에 있어야 합니다. 그리고 모듈은 심볼 리스트라고 하는 정해진 커널 함수와 자료 구조 집합만 쓸 수 있습니다. 모듈에 리스트에 없는 게 필요하면 Google에 추가를 요청해야 하고, Google은 타당한 이유가 있을 때만 동의합니다.

08 · Rachel KimPlatform Framework

그러니까 실제로는 핵심 커널을 직접 바꿀 수 있는 능력을 잃는 거네요. 예전에 커널 안에서 하던 변경은 이제 모듈이 되거나, 공통 트리에 들어가거나, 사라져야 하고요.

09 · Sora HanKernel & BSP

정확합니다. 선택지가 하나 더 있는데, 토론의 대부분이 거기서 나옵니다. 벤더 훅이요. Google은 핵심 커널에 벤더 모듈이 자체 코드를 붙일 수 있는 작은 훅 지점을 수백 개 추가했습니다. 예를 들어 스케줄링 결정을 조정하는 데 쓰입니다. 실용적인 탈출구이긴 하지만, 업스트림에서 제대로 해결해야 할 일을 벤더들이 계속하게 해 준다는 점에서 논란이 있습니다.

10 · Jiho NamProduct Security

그리고 보안 관점에서 큰 이점은 Google이 핵심 커널의 취약점을 한 번 고치면, 모든 GKI 단말이 빠르게 반영할 수 있다는 겁니다. 예전 방식에서 Orion의 커널 보안 수정 출시 중앙값은 약 40일이었습니다. GKI를 완전히 적용한 파트너들은 2주 안에 하고 있습니다.

패치 현황

11 · Daniel ChoKernel & BSP

소라 님, 수치를 보여 주세요. 거기서부터 현실이 되거든요.

12 · Sora HanKernel & BSP

저희는 Orion에서 가져온 아웃오브트리 패치 306개를 갖고 있습니다. 지난 2주 동안 하나하나 검토해서 네 개 범주로 분류했습니다. 첫 번째 범주는 이미 6.12 공통 트리에 반영된 62개입니다. 저희가 업스트림했거나, 업스트림이 같은 문제를 다른 방식으로 해결한 경우죠. 그건 그냥 버립니다. 쉬운 부분이에요.

13 · Sora HanKernel & BSP

두 번째 범주는 적당한 노력으로 벤더 모듈로 옮길 수 있는 드라이버 코드 141개입니다. 디스플레이 패널 드라이버, 센서 드라이버, 충전 로직 같은 것들이죠. 세 번째 범주는 주로 스케줄러, 메모리 관리, 전원 쪽에서 핵심 커널 동작을 바꾸는 54개 패치인데, 유지하려면 벤더 훅을 쓰거나 업스트림에 변경을 받아들이게 하는 수밖에 없습니다. 네 번째 범주는 솔직히 유지할 명분이 없는 49개입니다. 오래된 버그에 대한 우회책, 디버깅 보조 기능, 더 이상 아무도 안 쓰는 기능들이에요.

14 · Ethan YoonSQE

아무도 필요 없는 패치가 49개라고요? 어떻게 그걸 몇 년씩 들고 다니게 된 거죠?

15 · Sora HanKernel & BSP

패치를 빼는 건 위험하게 느껴지고, 유지하는 건 공짜처럼 느껴지기 때문이죠. 새 커널로 옮길 때마다 각 패치가 여전히 중요한지 묻는 것보다 전부 리베이스하는 게 쉬웠습니다. GKI가 저희가 처음부터 물었어야 할 질문을 하도록 강제하고 있는 겁니다.

16 · Rachel KimPlatform Framework

그래도 버리기 전에 프레임워크가 그 동작에 의존하는 게 있는지 알고 싶습니다. 저희 서비스 하나가 읽던 sysfs 파일을 커널 '정리' 작업이 없애는 바람에 낭패를 본 적이 있거든요.

17 · Sora HanKernel & BSP

아주 타당한 지적이고, 바로 그래서 뭔가를 버리기 전에 각 팀의 검토를 받고 싶은 겁니다. 49개 목록을 각각 짧은 설명과 함께 공개하고, 모두에게 2주간 이의를 제기할 기간을 드리겠습니다.

토론: 벤더 훅이냐 업스트림이냐

18 · Daniel ChoKernel & BSP

이제 흥미로운 부분입니다. 핵심 패치 54개요. 제 입장은 실용적입니다. Atlas에서는 가능한 한 많이 벤더 훅으로 옮겨야 합니다. 3월 출시일이 있는데, 스케줄러 변경을 업스트림하는 데는 쉽게 6개월 이상 걸리고 성공한다는 보장도 없습니다. 벤더 훅을 쓰면 저희 튜닝을 유지하면서 제때 출시할 수 있습니다.

19 · Jiho NamProduct Security

그 부분엔 이의를 제기하고 싶습니다. 벤더 훅 하나하나가 저희 모듈 코드가 커널의 가장 민감한 부분 안에서 실행되는 지점입니다. 보안 관점에서 그건 저희가 영원히 떠안는 공격 표면이에요. 그리고 Google이 향후 커널에서 훅을 바꾸거나 없애면 원점으로 돌아갑니다. 업스트림 우선은 느릴 수 있지만, 장기적인 부담을 실제로 줄이는 유일한 방법입니다.

20 · Daniel ChoKernel & BSP

원칙적으로는 동의합니다. 하지만 현실에서 '업스트림 우선'은 때때로 '늦게 출시'를 의미합니다. 업스트림에 패치를 제출했다가 올바른 설계에 대해 6개월간 논의하고, 결국 원래 문제를 해결하지 못하는 결과물로 끝나는 팀들을 봤습니다. Atlas 출시를 거기에 걸 수는 없어요.

21 · Rachel KimPlatform Framework

프레임워크 관점을 말씀드려도 될까요? 저희도 몇 년 전 플랫폼 변경에 대해 같은 논쟁을 했습니다. 저희에게 효과가 있었던 건 투트랙 방식이었어요. 탈출구를 써서 출시하되, 동시에 업스트림 논의를 시작하고 로컬 변경을 폐기할 기한을 정하는 겁니다. 기한을 정하지 않으면 임시 해결책이 영구적으로 굳어집니다.

22 · Sora HanKernel & BSP

그거 좋네요. 그리고 솔직히 54개 패치가 다 똑같지는 않습니다. 그중 약 20개는 업스트림이 아마 빨리, 한두 릴리스 안에 받아 줄 작은 전원이나 스케줄링 조정입니다. 그건 지금 업스트림할 가치가 있어요. 나머지 34개는 더 크고 제품 특화된 변경이라 벤더 훅이 현실적인 선택지입니다.

23 · Jiho NamProduct Security

그럼 훅에 대한 규칙을 제안하겠습니다. 저희가 쓰는 모든 벤더 훅에는 담당자 이름, 그 안에서 실행되는 코드에 대한 보안 검토, 그리고 업스트림할 수 있는지 다시 검토하는 만료일이 있어야 합니다. 아무도 책임지려 하지 않는다면, 그 훅은 존재해서는 안 됩니다.

24 · Daniel ChoKernel & BSP

보안 검토가 병목이 되지만 않는다면 받아들일 수 있습니다. 훅마다 검토를 3주씩 기다리면 다시 늦게 출시하게 되니까요.

25 · Jiho NamProduct Security

맞는 말이에요. 대부분의 훅은 작습니다. 팀에서 짧은 설계 노트와 함께 묶어서 보내 주시면 일주일 안에 처리하겠다고 약속할 수 있습니다.

테스트 측면의 영향

26 · Ethan YoonSQE

테스트 이야기로 돌아가 볼게요. 핵심 커널이 Google에서 오고 더 자주 업데이트된다면, SQE는 핵심 커널이 바뀔 때마다 모든 걸 다시 테스트해야 하나요? 그렇다면 테스트가 엄청 많아질 텐데요.

27 · Sora HanKernel & BSP

그게 트레이드오프 중 하나입니다. 핵심 커널 변경은 Google과 같은 바이너리를 쓰는 다른 파트너들이 많이 테스트하기 때문에, 예전 저희 자체 변경보다 위험이 낮습니다. 하지만 저희 모듈이 핵심 커널과 상호작용하니 여전히 탄탄한 회귀 스위트가 필요합니다. 제 제안은 핵심 커널이 업데이트될 때마다 도는 커널 중심의 소규모 스위트를 두고, 전체 스위트는 저희 모듈 변경과 월간 릴리스에만 돌리는 겁니다.

28 · Ethan YoonSQE

합리적이네요. 하지만 커널 중심 스위트에 기능 테스트만이 아니라 저희 스트레스 프로필도 포함됐으면 합니다. 이번 달 스토리지 패닉처럼, 저희가 찾는 커널 버그 대부분은 지속적인 부하에서만 나타나거든요.

29 · Daniel ChoKernel & BSP

동의합니다. 50대로 12시간 스트레스를 최소 기준으로 하면 좋겠네요. Orion 사고 이후 Tom이 스토리지 변경에 대해 비슷한 걸 이미 제안했으니, 그 구성을 재사용할 수 있습니다.

30 · Rachel KimPlatform Framework

제 쪽에서 질문 하나요. 프레임워크 엔지니어도 여전히 같은 방식으로 커널 이슈를 디버깅할 수 있나요? 핵심 커널이 Google 바이너리라면, 크래시 분석에 필요한 심볼과 소스를 여전히 받을 수 있나요?

31 · Sora HanKernel & BSP

네. Google은 모든 GKI 빌드의 소스와 디버그 심볼을 공개하니까, 램덤프 분석은 정확히 똑같이 동작합니다. 유일한 차이는 버그가 핵심 커널에 있으면 수정이 저희 트리가 아니라 Google로 간다는 겁니다.

심볼 리스트 관리

32 · Ethan YoonSQE

소라 님, 모듈은 심볼 리스트에 있는 함수만 쓸 수 있다고 하셨죠. 저희 모듈에 리스트에 없는 게 필요한데 마일스톤이 2주 남았다면 어떻게 되나요?

33 · Sora HanKernel & BSP

그게 제가 가장 걱정하는 시나리오입니다. Google은 정해진 일정에 따라 심볼 리스트를 업데이트하고, 요청은 묶어서 검토합니다. 시기를 놓치면 몇 주를 기다려야 할 수도 있습니다. 그걸 피하는 방법은 모듈에 필요한 모든 심볼을 일찍, 이상적으로는 드라이버 패치를 변환하자마자 파악해서 한 번에 제출하는 겁니다.

34 · Daniel ChoKernel & BSP

Google의 Kevin도 Arvenna 회의에서 이걸 경고했죠. 브링업 중에 비공식 심볼 익스포트를 쌓아 둔 파트너들은 인증 전에 그걸 정리하느라 몇 주를 쓰게 된다고요. 그러니 첫날부터 공식 리스트 밖의 심볼을 쓰는 모듈은 실패시키는 체크를 CI에 넣어야 합니다.

35 · Jiho NamProduct Security

보안 관점에서 하나 더하고 싶습니다. 일부 심볼은 모듈에 페이지 테이블이나 자격 증명 수정 같은 매우 강력한 접근 권한을 줍니다. 저희 모듈이 그런 걸 요청하면 알고 싶어요. 그런 접근 권한을 가진 모듈의 취약점은 단순한 센서 드라이버의 취약점보다 훨씬 위험하니까요.

36 · Sora HanKernel & BSP

그건 쉽게 추가할 수 있습니다. CI 보고서에 민감한 심볼을 표시하고, 그런 심볼에 대한 새 요청은 Google에 제출하기 전에 지호 님 승인을 받도록 하겠습니다.

37 · Rachel KimPlatform Framework

프레임워크 쪽에서 숨겨진 플랫폼 API를 관리하는 방식과 아주 비슷하네요. 허용 목록을 두고, 예외마다 정당한 근거가 있어야 하고, 릴리스마다 목록을 검토합니다. 지루하지만 아주 고통스러운 업그레이드를 몇 번 막아 줬습니다.

38 · Daniel ChoKernel & BSP

빌려 올 만한 좋은 모델이네요. 심볼 리스트도 같은 방식으로 다루고, 커널 업데이트 때마다 검토합시다.

업스트림 기여 예산

39 · Jiho NamProduct Security

20개 패치를 업스트림하는 걸 진지하게 생각한다면, 누군가 그걸 할 시간이 있어야 합니다. 업스트림 작업은 엔지니어들이 브링업 위기 사이사이에 할 수 있는 일이 아닙니다.

40 · Daniel ChoKernel & BSP

맞습니다. 그건 경영진에게 가져가야 할 자원 문제예요. 제 제안은 9월부터 엔지니어 한 명이 업무의 50%를 업스트림 작업에 전담하는 겁니다. 많지는 않지만, 지금까지 가져 본 것보다는 많습니다.

41 · Sora HanKernel & BSP

사실 제가 자원하고 싶습니다. 이 현황을 2주간 들여다봐서 이 패치들은 누구보다 잘 알고, 2년 뒤에 같은 패치를 또 리베이스하느니 근본 문제를 고치고 싶어요.

42 · Ethan YoonSQE

소라 님을 Atlas 통합에서 빼 가지 않도록 조심하세요. 데일리 빌드가 부팅되는지 확인하는 사람도 소라 님이니까요.

43 · Daniel ChoKernel & BSP

알겠습니다. 소라 님이 시간을 나누기 전에 통합 작업이 안정되도록, Atlas 첫 부팅 이후에 시작하죠.

합의한 원칙

44 · Daniel ChoKernel & BSP

합의한 내용을 정리해 보겠습니다. 첫째, 이미 업스트림에 반영된 62개 패치는 버립니다. 둘째, 드라이버 패치 141개는 벤더 모듈이 됩니다. 셋째, 명분이 없는 49개 패치는 2주 이의 기간을 두고 공개한 뒤 버립니다. 넷째, 핵심 패치 54개 중 약 20개는 업스트림하고, 나머지는 벤더 훅을 쓰되 각각 담당자, 보안 검토, 만료일을 둡니다. 다섯째, 핵심 커널 업데이트마다 스트레스 테스트를 포함한 커널 중심 회귀 스위트를 돌립니다.

45 · Jiho NamProduct Security

저는 괜찮습니다. 들어올 때 예상했던 것보다 훨씬 나은 결과네요.

46 · Rachel KimPlatform Framework

저도요. 그리고 이의 기간이 끝나기 전에 저희 팀이 49개 패치에 숨은 의존성이 있는지 확인하게 하겠습니다.

실행 항목

47 · Daniel ChoKernel & BSP

실행 항목입니다. 소라 님은 화요일까지 이의 제기용 49개 목록을 포함해 네 범주로 정리한 전체 현황을 공개해 주세요. Rachel은 8월 28일까지 49개에 대한 프레임워크 의존성 확인을 해 주세요. 지호 님은 검토가 일관되도록 벤더 훅 검토 체크리스트 초안을 작성해 주세요. Ethan은 Tom과 함께 커널 중심 회귀 스위트를 정의해 주세요. 그리고 저는 업스트림 전담 엔지니어 제안서를 써서 다음 주에 경영진에게 가져가겠습니다.

48 · Sora HanKernel & BSP

그리고 Rachel 팀이 그것부터 집중해서 볼 수 있도록, sysfs나 procfs 파일처럼 사용자 공간이 읽는 인터페이스를 건드리는 패치를 표시하는 열도 현황표에 추가하겠습니다.

49 · Ethan YoonSQE

그러면 시간이 많이 절약될 거예요. 고마워요, 소라 님. 그리고 모듈 변환이 시작되기 전에 기준치를 확보할 수 있도록, Tom에게 첫 커널 중심 실행을 위해 스트레스 랩을 예약해 달라고 하겠습니다.

마무리 및 다음 세션

50 · Daniel ChoKernel & BSP

모두 감사합니다. 훨씬 더 격렬할 줄 알았는데, 합리적인 중간 지점을 찾은 것 같네요. 다음 주 금요일 8월 21일 한국 시간 오후 4시 주제는 부팅 시간 최적화입니다. Pulse Watch 부트 루프 사건도 있었으니 활발한 토론이 될 겁니다.

51 · Rachel KimPlatform Framework

참석할게요. 제가 모든 걸 이해한 첫 커널 세션이었어요. 고마워요, 소라 님.

52 · Sora HanKernel & BSP

감사합니다. 칭찬으로 받아들일게요. 그리고 이의 기간이 끝나기 전에 팀 관련 패치를 더 자세히 보고 싶은 분은 다음 주에 저와 30분만 잡아 주세요. 뭔가를 버린 뒤에 숨은 의존성을 발견하느니 지금 질문에 답하는 게 훨씬 낫습니다.

03 / Business expressions

judging by

~로 판단하건대 · 근거를 들어 추정할 때

Last week we talked about lockups, and judging by the wiki page views, people found it useful.

응용 연습
Judging by the crash logs, the issue started after the update.

on purpose

일부러 · 의도적인 선택임을 밝힐 때

I've invited people from outside the kernel team on purpose, because this decision affects everyone.

응용 연습
We left the debug logs enabled on purpose for the beta.

a black box

내부를 알 수 없는 블랙박스 · 동작 원리를 모르는 시스템을 말할 때

From the framework side, the kernel is mostly a black box I complain about.

응용 연습
The modem firmware is a black box to most of us.

Here's the short version

간단히 말씀드리면 · 복잡한 내용을 요약해 설명할 때

Here's the short version.

응용 연습
Here's the short version: the vendor fix is late.

escape hatch

탈출구, 비상 수단 · 원칙을 우회할 수 있는 실용적 장치를 말할 때

They're a pragmatic escape hatch, but they're also controversial, because they let vendors keep doing things that arguably should be solved properly upstream.

응용 연습
The feature flag is our escape hatch if the rollout goes wrong.

That's where it gets real

거기서부터 현실이 된다 · 추상적 설명에서 구체적 수치로 넘어갈 때

That's where it gets real.

응용 연습
Show them the field numbers. That's where it gets real.

keeping it feels free

유지하는 건 공짜처럼 느껴진다 · 기술 부채가 쌓이는 심리를 설명할 때

Because removing a patch feels risky, and keeping it feels free.

응용 연습
Deleting old config feels risky, and keeping it feels free.

all along

처음부터 줄곧 · 원래부터 그랬어야 했다고 말할 때

GKI is forcing us to ask the question we should have been asking all along.

응용 연습
The bug was in our driver all along.

been bitten before

전에 낭패를 본 적이 있다 · 과거의 쓰라린 경험을 근거로 주의를 줄 때

We've been bitten before by a kernel 'cleanup' that removed a sysfs file one of our services was reading.

응용 연습
We've been bitten before by vendor drops without release notes.

back to square one

원점으로 돌아간 · 노력이 무위로 돌아가는 상황을 말할 때

And if Google changes or removes a hook in a future kernel, we're back to square one.

응용 연습
If the fix doesn't hold, we're back to square one.

bet the Atlas launch on

Atlas 출시를 ~에 걸다 · 불확실한 것에 중요한 일정을 의존할 수 없다고 할 때

I can't bet the Atlas launch on that.

응용 연습
We can't bet the launch on a vendor drop that hasn't been tested.

a two-track approach

투트랙 방식 · 단기와 장기 해결책을 병행할 때

What worked for us was a two-track approach: use the escape hatch to ship, but open the upstream discussion at the same time, with a deadline to retire the local change.

응용 연습
Let's take a two-track approach: a hotfix now and a redesign later.

it shouldn't exist

존재해서는 안 된다 · 책임자 없는 코드나 기능을 강하게 반대할 때

If nobody's willing to own it, it shouldn't exist.

응용 연습
If no one can explain this flag, it shouldn't exist.

become a bottleneck

병목이 되다 · 절차가 전체 진행을 늦출 것을 우려할 때

I can live with that, as long as the security review doesn't become a bottleneck.

응용 연습
We can't let the device lab become a bottleneck.

in the gaps between

~ 사이사이에 · 전담 시간이 아닌 자투리 시간에 하는 일을 말할 때

Upstream work is not something engineers can do in the gaps between bring-up crises.

응용 연습
Documentation can't be done in the gaps between releases.

a sensible middle path

합리적인 중간 지점 · 양극단 사이에서 균형 잡힌 결론에 이르렀을 때

I thought this would be a lot more heated, but I think we found a sensible middle path.

응용 연습
A staged rollout is a sensible middle path.