Documentation/driver-api/wbrf.rst GitHub 원문 ↗

Linux 6.18.37 · Driver API

WBRF - Wifi Band RFI Mitigations

GPU memory-clock harmonic과 Wi-Fi band 간 RFI를 줄이는 ACPI _DSM producer·consumer protocol을 설명하는 한국어 전문 번역입니다.

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

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

1. 요약·해설

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

요약·해설

wbrf.rst:1-78

WBRF는 interference producer가 active RF band를 ACPI _DSM으로 공유하고 consumer가 notifier와 snapshot 조회를 결합해 민감한 frequency를 피하도록 합니다.

문서 구성
원문 줄핵심 내용
1-34RFI 문제와 producer·consumer
35-49ACPI _DSM GUID와 functions
50-78Driver programming flow

2. 영어 원문 전체

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

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0-or-later
2
3 =================================
4 WBRF - Wifi Band RFI Mitigations
5 =================================
6
7 Due to electrical and mechanical constraints in certain platform designs
8 there may be likely interference of relatively high-powered harmonics of
9 the GPU memory clocks with local radio module frequency bands used by
10 certain Wifi bands.
11
12 To mitigate possible RFI interference producers can advertise the
13 frequencies in use and consumers can use this information to avoid using
14 these frequencies for sensitive features.
15
16 When a platform is known to have this issue with any contained devices,
17 the platform designer will advertise the availability of this feature via
18 ACPI devices with a device specific method (_DSM).
19 * Producers with this _DSM will be able to advertise the frequencies in use.
20 * Consumers with this _DSM will be able to register for notifications of
21 frequencies in use.
22
23 Some general terms
24 ==================
25
26 Producer: such component who can produce high-powered radio frequency
27 Consumer: such component who can adjust its in-use frequency in
28 response to the radio frequencies of other components to mitigate the
29 possible RFI.
30
31 To make the mechanism function, those producers should notify active use
32 of their particular frequencies so that other consumers can make relative
33 internal adjustments as necessary to avoid this resonance.
34
35 ACPI interface
36 ==============
37
38 Although initially used by for wifi + dGPU use cases, the ACPI interface
39 can be scaled to any type of device that a platform designer discovers
40 can cause interference.
41
42 The GUID used for the _DSM is 7B7656CF-DC3D-4C1C-83E9-66E721DE3070.
43
44 3 functions are available in this _DSM:
45
46 * 0: discover # of functions available
47 * 1: record RF bands in use
48 * 2: retrieve RF bands in use
49
50 Driver programming interface
51 ============================
52
53 .. kernel-doc:: drivers/platform/x86/amd/wbrf.c
54
55 Sample Usage
56 =============
57
58 The expected flow for the producers:
59 1. During probe, call `acpi_amd_wbrf_supported_producer` to check if WBRF
60 can be enabled for the device.
61 2. On using some frequency band, call `acpi_amd_wbrf_add_remove` with 'add'
62 param to get other consumers properly notified.
63 3. Or on stopping using some frequency band, call
64 `acpi_amd_wbrf_add_remove` with 'remove' param to get other consumers notified.
65
66 The expected flow for the consumers:
67 1. During probe, call `acpi_amd_wbrf_supported_consumer` to check if WBRF
68 can be enabled for the device.
69 2. Call `amd_wbrf_register_notifier` to register for notification
70 of frequency band change(add or remove) from other producers.
71 3. Call the `amd_wbrf_retrieve_freq_band` initially to retrieve
72 current active frequency bands considering some producers may broadcast
73 such information before the consumer is up.
74 4. On receiving a notification for frequency band change, run
75 `amd_wbrf_retrieve_freq_band` again to retrieve the latest
76 active frequency bands.
77 5. During driver cleanup, call `amd_wbrf_unregister_notifier` to
78 unregister the notifier.
79

3. 한국어 전문 번역

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

GPU memory clock와 Wi-Fi RFI 완화

1-22

일부 platform design의 전기적·기계적 제약 때문에 GPU memory clock의 비교적 강한 harmonic이 특정 Wi-Fi band가 사용하는 local radio-module frequency band와 간섭할 수 있습니다.

RFI 가능성을 완화하기 위해 interference producer는 현재 사용하는 frequency를 알리고, consumer는 이 정보를 받아 민감한 기능에서 해당 frequency를 피할 수 있습니다.

Platform 안의 device가 이 문제를 일으킬 수 있다고 알려져 있으면 platform designer는 device-specific ACPI method인 `_DSM`을 통해 WBRF 기능 가용성을 광고합니다. `_DSM`을 가진 producer는 사용 frequency를 알리고 consumer는 frequency-use notification을 등록합니다.

WBRF interference coordination
Platform exposes WBRF `_DSM`Producer advertises active RF bandsConsumer receives band-change notificationConsumer avoids resonant or sensitive frequenciesRFI risk between GPU clock harmonics and Wi-Fi decreases

Platform firmware가 기능을 노출하고 producer의 active band 정보가 consumer의 frequency 조정으로 이어집니다.

.. SPDX-License-Identifier: GPL-2.0-or-later

=================================
WBRF - Wifi Band RFI Mitigations
=================================

Due to electrical and mechanical constraints in certain platform designs
there may be likely interference of relatively high-powered harmonics of
the GPU memory clocks with local radio module frequency bands used by
certain Wifi bands.

To mitigate possible RFI interference producers can advertise the
frequencies in use and consumers can use this information to avoid using
these frequencies for sensitive features.

When a platform is known to have this issue with any contained devices,
the platform designer will advertise the availability of this feature via
ACPI devices with a device specific method (_DSM).
* Producers with this _DSM will be able to advertise the frequencies in use.
* Consumers with this _DSM will be able to register for notifications of
frequencies in use.

Producer와 consumer 역할

23-34

Producer는 강한 radio frequency를 발생시킬 수 있는 component입니다. Consumer는 다른 component의 radio frequency에 반응해 자신이 사용하는 frequency를 조정함으로써 RFI 가능성을 줄일 수 있는 component입니다.

Mechanism이 동작하려면 producer가 특정 frequency의 active use를 notify해야 합니다. 그러면 다른 consumer가 resonance를 피하도록 필요한 내부 조정을 수행할 수 있습니다.

WBRF 참여자
역할책임
Producer강한 RF를 만들 수 있는 active frequency band 공개
Consumer공개된 band를 바탕으로 내부 frequency 조정
PlatformACPI `_DSM`으로 coordination capability 노출

Some general terms
==================

Producer: such component who can produce high-powered radio frequency
Consumer: such component who can adjust its in-use frequency in
response to the radio frequencies of other components to mitigate the
possible RFI.

To make the mechanism function, those producers should notify active use
of their particular frequencies so that other consumers can make relative
internal adjustments as necessary to avoid this resonance.

WBRF ACPI _DSM interface

35-49

ACPI interface는 처음에는 Wi-Fi와 discrete GPU 조합에 사용됐지만 platform designer가 interference 가능성을 찾은 어떤 device type에도 확장할 수 있습니다.

WBRF `_DSM` GUID는 `7B7656CF-DC3D-4C1C-83E9-66E721DE3070`입니다.

Function 0은 사용할 수 있는 function 수를 발견하고, function 1은 사용 중인 RF band를 기록하며, function 2는 사용 중인 RF band를 조회합니다.

WBRF _DSM functions
Function의미
0지원 function discovery
1Active RF band 기록
2Active RF band 조회

ACPI interface
==============

Although initially used by for wifi + dGPU use cases, the ACPI interface
can be scaled to any type of device that a platform designer discovers
can cause interference.

The GUID used for the _DSM is 7B7656CF-DC3D-4C1C-83E9-66E721DE3070.

3 functions are available in this _DSM:

* 0: discover # of functions available
* 1: record RF bands in use
* 2: retrieve RF bands in use

Producer·consumer driver programming flow

50-78

Driver API의 kernel-doc 원본은 `drivers/platform/x86/amd/wbrf.c`입니다.

Producer는 probe 중 `acpi_amd_wbrf_supported_producer()`로 WBRF 활성화 가능 여부를 확인합니다. Frequency band 사용을 시작하면 `acpi_amd_wbrf_add_remove()`에 `add`를 전달하고, 사용을 멈추면 `remove`를 전달해 consumer에 알립니다.

Consumer는 probe 중 `acpi_amd_wbrf_supported_consumer()`를 호출하고 `amd_wbrf_register_notifier()`로 producer의 band add/remove notification을 등록합니다.

Consumer가 올라오기 전에 producer가 정보를 보냈을 수 있으므로 초기화 때 `amd_wbrf_retrieve_freq_band()`로 현재 active band를 먼저 조회합니다. 이후 band-change notification을 받을 때마다 같은 함수를 다시 호출해 최신 상태를 가져옵니다.

Driver cleanup에서는 `amd_wbrf_unregister_notifier()`로 notifier를 해제합니다.

WBRF producer와 consumer 동작
Check producer or consumer support during probeProducer adds or removes active frequency bandConsumer registers notifierConsumer retrieves initial active-band snapshotNotification triggers fresh band retrievalConsumer unregisters notifier during cleanup

Producer는 band 사용 변화를 기록하고 consumer는 notifier와 초기 snapshot을 함께 사용합니다.

Driver programming interface
============================

.. kernel-doc:: drivers/platform/x86/amd/wbrf.c

Sample Usage
=============

The expected flow for the producers:
1. During probe, call `acpi_amd_wbrf_supported_producer` to check if WBRF
can be enabled for the device.
2. On using some frequency band, call `acpi_amd_wbrf_add_remove` with 'add'
param to get other consumers properly notified.
3. Or on stopping using some frequency band, call
`acpi_amd_wbrf_add_remove` with 'remove' param to get other consumers notified.

The expected flow for the consumers:
1. During probe, call `acpi_amd_wbrf_supported_consumer` to check if WBRF
can be enabled for the device.
2. Call `amd_wbrf_register_notifier` to register for notification
of frequency band change(add or remove) from other producers.
3. Call the `amd_wbrf_retrieve_freq_band` initially to retrieve
current active frequency bands considering some producers may broadcast
such information before the consumer is up.
4. On receiving a notification for frequency band change, run
`amd_wbrf_retrieve_freq_band` again to retrieve the latest
active frequency bands.
5. During driver cleanup, call `amd_wbrf_unregister_notifier` to
unregister the notifier.