Documentation/driver-api/surface_aggregator/clients/san.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API

Surface ACPI Notify

SAN의 ACPI↔SAM bridge, battery·thermal 내부 처리, Surface Book 2 dGPU event relay, client link와 notifier public API를 설명하는 전문 번역입니다.

Source pathDocumentation/driver-api/surface_aggregator/clients/san.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약과 해설

san.rst:1-44

SAN은 ACPI request와 battery·thermal event를 SAM controller에 연결하고 Surface Book 2 dGPU power-on event를 consumer driver로 중계합니다. Client link는 SAN보다 client가 먼저 unbind되도록 보장하며 notifier block은 module이 load된 동안 독립적으로 등록할 수 있습니다.

문서 구성
원문 줄내용
1-9Public API symbol
10-22ACPI↔SAM bridge와 dGPU relay
23-35Client link와 notifier lifecycle
36-44Header·implementation kernel-doc

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0+
2
3 .. |san_client_link| replace:: :c:func:`san_client_link`
4 .. |san_dgpu_notifier_register| replace:: :c:func:`san_dgpu_notifier_register`
5 .. |san_dgpu_notifier_unregister| replace:: :c:func:`san_dgpu_notifier_unregister`
6
7 ===================
8 Surface ACPI Notify
9 ===================
10
11 The Surface ACPI Notify (SAN) device provides the bridge between ACPI and
12 SAM controller. Specifically, ACPI code can execute requests and handle
13 battery and thermal events via this interface. In addition to this, events
14 relating to the discrete GPU (dGPU) of the Surface Book 2 can be sent from
15 ACPI code (note: the Surface Book 3 uses a different method for this). The
16 only currently known event sent via this interface is a dGPU power-on
17 notification. While this driver handles the former part internally, it only
18 relays the dGPU events to any other driver interested via its public API and
19 does not handle them.
20
21 The public interface of this driver is split into two parts: Client
22 registration and notifier-block registration.
23
24 A client to the SAN interface can be linked as consumer to the SAN device
25 via |san_client_link|. This can be used to ensure that the a client
26 receiving dGPU events does not miss any events due to the SAN interface not
27 being set up as this forces the client driver to unbind once the SAN driver
28 is unbound.
29
30 Notifier-blocks can be registered by any device for as long as the module is
31 loaded, regardless of being linked as client or not. Registration is done
32 with |san_dgpu_notifier_register|. If the notifier is not needed any more, it
33 should be unregistered via |san_dgpu_notifier_unregister|.
34
35 Consult the API documentation below for more details.
36
37
38 API Documentation
39 =================
40
41 .. kernel-doc:: include/linux/surface_acpi_notify.h
42
43 .. kernel-doc:: drivers/platform/surface/surface_acpi_notify.c
44 :export:
45

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Surface ACPI Notify 문서 머리말

1-9

이 문서는 `GPL-2.0+` SPDX license를 사용하는 Surface ACPI Notify(SAN) interface 설명입니다.

머리말은 client link와 dGPU notifier 등록·해제 함수인 `san_client_link`, `san_dgpu_notifier_register`, `san_dgpu_notifier_unregister`를 교차 참조 symbol로 정의합니다.

SAN public symbol
Symbol역할
san_client_linkClient와 SAN device 연결
san_dgpu_notifier_registerdGPU notifier 등록
san_dgpu_notifier_unregisterdGPU notifier 해제

.. SPDX-License-Identifier: GPL-2.0+

.. |san_client_link| replace:: :c:func:`san_client_link`
.. |san_dgpu_notifier_register| replace:: :c:func:`san_dgpu_notifier_register`
.. |san_dgpu_notifier_unregister| replace:: :c:func:`san_dgpu_notifier_unregister`

===================
Surface ACPI Notify
===================

ACPI와 SAM controller bridge

10-22

Surface ACPI Notify device는 ACPI와 SAM controller 사이의 bridge를 제공합니다. ACPI code는 이 interface를 통해 request를 실행하고 battery·thermal event를 처리할 수 있습니다.

Surface Book 2의 discrete GPU(dGPU) 관련 event도 ACPI code에서 보낼 수 있습니다. Surface Book 3은 이와 다른 방식을 사용합니다.

현재 이 interface를 통해 전달되는 것으로 알려진 유일한 event는 dGPU power-on notification입니다.

Driver는 ACPI request와 battery·thermal event 부분을 내부에서 처리하지만 dGPU event는 직접 처리하지 않습니다. Public API를 통해 관심 있는 다른 driver로 relay합니다.

Public interface는 client registration과 notifier-block registration의 두 부분으로 나뉩니다.

SAN bridge와 event 처리
ACPI codeSAN deviceSAM controller request
Battery and thermal eventsSAN internal handling
Surface Book 2 dGPU power-onSAN relayRegistered consumer notifier

SAN은 ACPI 요청을 SAM controller에 연결하고 dGPU event는 consumer driver로 중계합니다.


The Surface ACPI Notify (SAN) device provides the bridge between ACPI and
SAM controller. Specifically, ACPI code can execute requests and handle
battery and thermal events via this interface. In addition to this, events
relating to the discrete GPU (dGPU) of the Surface Book 2 can be sent from
ACPI code (note: the Surface Book 3 uses a different method for this). The
only currently known event sent via this interface is a dGPU power-on
notification. While this driver handles the former part internally, it only
relays the dGPU events to any other driver interested via its public API and
does not handle them.

The public interface of this driver is split into two parts: Client
registration and notifier-block registration.

Client link와 dGPU notifier

23-35

SAN interface client는 `san_client_link()`를 통해 SAN device의 consumer로 연결할 수 있습니다.

이 link는 SAN interface가 설정되지 않아 dGPU event를 놓치는 일을 방지합니다. SAN driver가 unbind될 때 client driver도 unbind되도록 강제하여 ordering을 보장합니다.

Notifier block은 client link 여부와 관계없이 module이 load되어 있는 동안 어떤 device든 등록할 수 있습니다. `san_dgpu_notifier_register()`로 등록하고 더 필요하지 않으면 `san_dgpu_notifier_unregister()`로 해제해야 합니다.

SAN public interface
API조건보장
san_client_linkSAN consumer clientSAN unbind 시 client도 unbind
san_dgpu_notifier_registerModule loadeddGPU event callback 등록
san_dgpu_notifier_unregisterNotifier 불필요Callback 해제


A client to the SAN interface can be linked as consumer to the SAN device
via |san_client_link|. This can be used to ensure that the a client
receiving dGPU events does not miss any events due to the SAN interface not
being set up as this forces the client driver to unbind once the SAN driver
is unbound.

Notifier-blocks can be registered by any device for as long as the module is
loaded, regardless of being linked as client or not. Registration is done
with |san_dgpu_notifier_register|. If the notifier is not needed any more, it
should be unregistered via |san_dgpu_notifier_unregister|.

Consult the API documentation below for more details.

SAN API kernel-doc

36-44

API 세부 정보는 `include/linux/surface_acpi_notify.h` header의 kernel-doc과 `drivers/platform/surface/surface_acpi_notify.c`에서 export된 implementation API를 결합합니다.

SAN kernel-doc 입력
Source path범위
include/linux/surface_acpi_notify.hHeader API
drivers/platform/surface/surface_acpi_notify.cExported implementation API



API Documentation
=================

.. kernel-doc:: include/linux/surface_acpi_notify.h

.. kernel-doc:: drivers/platform/surface/surface_acpi_notify.c
    :export: