Linux 6.18-rc3의 새로운 기능: 커널 변경 사항 및 컨텍스트

  • SMB Direct는 클라이언트와 서버의 견고성을 개선하여 6.18-rc3를 선도합니다.
  • XFS, io_uring, 네트워킹, DRM은 모두 실용적이고 잘 분산된 수정 사항을 받습니다.
  • 버전 맵에서는 6.17을 안정 버전으로, 6.12/6.6을 주요 LTS 버전으로 분류합니다.

리눅스 6.18-rc3

6.18 미래형 3번째 발사 후보 도착하다 화려함 없이, 커널 생태계가 그토록 소중히 여기는 차분한 맥박과 함께. 리누스 토발즈 본인에 따르면, 수치는 적정하며 순환은 정상적으로 진행되고 있습니다. 다시 말해, Linux 6.18-rc3는 혁명 없이 다듬고, 수정하고, 조정합니다.트리 전체에 걸쳐 확산된 수정 사항에 초점을 맞춥니다.

Torvalds는 간략한 메모에서 이 배치의 가장 큰 부분은 클라이언트 및 서버 측 SMB 직접 수정 사항과 소수의 미세 조정 패치라고 지적합니다. 나머지는 평소처럼 배포됩니다. 약 절반은 드라이버에 영향을 미치고(DeviceTree 바인딩도 추가), 나머지는 XFS, 네트워킹, io_uring, DRM, Rust Binder 등 기타 수정 사항입니다. 그리고 회사. 자세한 내용에 관심이 있으시다면, 아래 하위 시스템별로 검토한 수십 가지 변경 사항이 담긴 짧은 로그가 있습니다.

Linux 6.18-rc3의 주요 새로운 기능

이 주간 분석에서 SMB Direct 블록이 두드러집니다. SMB 클라이언트와 서버 모두 회귀 및 리소스 부족을 방지하기 위해 크레딧과 대기열을 조정합니다. 하위 시스템의 여러 부분은 다음을 보장하여 기준을 높입니다. send/flush 구조는 충분한 공간을 예약합니다. 그리고 그 연결 해제 상태는 대기 중인 모든 스레드를 강력하게 깨웁니다.

또한 세그먼트 수집기에서 바쁜 루프를 방지하고 i_private에서 열린 영역을 캐시하고 더 이상 사용되지 않는 마운트 옵션의 처리를 강화하기 위해 XFS에 수정 사항이 추가되었습니다. 링크 확인 및 차단의 민감한 섹션 수정이 rc3의 XFS 변경 사항은 레거시 매개변수에 대한 안정성과 명확한 진단에 초점을 맞췄습니다.

나머지 절반은 드라이버와 플랫폼의 일반적인 조합입니다. DRM/AMD와 DRM/Xe부터 Rockchip, mlx5/mlx5e 네트워킹, Realtek과 Micrel PHY, UFS/Qualcomm, USB/xHCI DbC 등 다양한 드라이버와 플랫폼이 사용됩니다. 이는 "배관" rc3이며, 값은 작은 수정의 합계입니다. 충돌, 메모리 누수 또는 타이밍 불일치를 방지합니다.

SMB 및 SMB Direct: 견고성에 중점을 둡니다.

El 쇼트로그 SMB Direct의 노력을 명확히 밝힙니다. 가장 중요한 점은 다음과 같습니다.

  • SMB 클라이언트와 서버는 작업 요청 공간을 조정하여 오버플로를 방지하고 QP 드레이닝(ib_drain_qp)의 안전성을 보장합니다. 카운터가 도입되고 사용됩니다. 배송 크레딧 중요한 경로에 있습니다.
  • 서버는 전송 경로에서 형제 목록 관리를 간소화하고(flush/send_done) RDMA 연결 해제 시 첫 번째 시도에서 모든 스레드를 깨웁니다.
  • smb3_rw_credits의 추적이 강화되고, 포함 항목이 재정렬되어 구조가 추적 지점에서 사용 가능합니다. TCP 신용 구조의 서명 유형은 고정되어 있습니다..

전반적으로 SMB Direct 변경 사항은 부하가 걸린 RDMA 전송이 원활하고 예측 가능하게 동작하며, 중단 없이 오류 상태를 처리할 수 있도록 하는 것을 목표로 합니다. 이러한 조정은 미묘하지만, 고성능 환경에서 차이를 만들어냅니다.

파일 시스템 및 스토리지

섹션 파일 시스템 및 블록 여기에는 몇 가지 주목할 만한 작품이 포함됩니다.

  • XFS: 바쁜 루프, 캐시 영역 방지, FS 컨텍스트 초기화에서 __GFP_NOFAIL 금지, 더 이상 사용되지 않는 옵션에 대한 메시지 개선 잠금 장치 및 섹터 카운터 수정.
  • Btrfs: ref-verify(IS_ERR 대 NULL)에서 수정, 충돌 시 부분적으로 초기화된 fs_info 해제, btrfs send에서 extrefs로 rmdir 작업이 중복되는 것을 방지하기 위한 수정.
  • EROFS: 루프를 방지하기 위해 악의적으로 코딩된 확장 프로그램의 처리 강화 룩백 검색 통합 손상된 하위 페이지에 대해.
  • 블록 계층: 보호 정보(PI)를 사용할 때 LBA 정렬을 적용하여 저수준 무결성을 유지합니다.

scsi/ufs/phy(새로운 호환 장치용 바인딩), CPU I/O 관련 채널 선호도를 높이는 storvsc, 그리고 qla4xxx와 같은 드라이버에 대한 조정 작업도 진행 중입니다. 이러한 작업들은 함께 I/O 안정성 및 성능 강화 실제 사례에서는 그렇습니다.

네트워크: mlx5/mlx5e, 본딩, HSR 등

인터넷에서는 그림이 다양하며 드라이버에 초점을 맞춥니다. 고성능 그리고 사람들이 거의 다니지 않는 구석:

  • mlx5/mlx5e: PCAM의 PPHCR 레지스터 마스크, 장치가 레지스터를 지원하지 않는 경우 쿼리 건너뛰기, 레거시 및 스트라이딩 큐 모두에서 비선형 xdp_buff에서 skbs를 생성할 때 발생하는 RX 문제 수정. 또한, MPV 장치의 IPsec 수정 그리고 devcom은 오류가 발생하면 NULL을 반환합니다.
  • 본딩: 슬레이브 배열은 브로드캐스트 모드로 업데이트되고 피어 알림에서 발생할 수 있는 손실이나 중복이 수정됩니다.
  • HSR: 다른 네트워크의 슬레이브로 장치를 만드는 것을 방지하여 일관되지 않은 구성 경로를 닫습니다.
  • Gro 및 gro_cells: hwtstamps는 skbs 재사용 경로에서 정리됩니다. 잠금 불균형이 수정되었습니다 gro_cells_receive에서.
  • 기타: virtio-net은 사용되지 않는 해시 필드를 0으로 설정합니다. hibmcge는 FIXED_PHY를 선택합니다. dlink는 dev_kfree_skb_any를 사용합니다. stmmac/rk는 클럭 선택 기능을 수정합니다. enetc는 MDIO 잠금 교착 상태와 TRUESIZE 값을 수정합니다.

전체적으로 네트워크 스택은 부하가 걸리는 상황에서 예상치 못한 상황을 방지하고 실패할 경우 데이터 경로의 세부 사항을 처리하는 패치를 수신합니다. 지연, 손실 또는 차단으로 변환.

그래픽 및 디스플레이: DRM/AMD, DRM/Xe, Rockchip 및 QR Panic

DRM 공간도 움직이고 있습니다. 보안 및 안정성 변경:

  • DRM/AMD 디스플레이: 인터럽트 컨텍스트에서 GFP_NOWAIT를 사용하고, 링크 최대값을 늘리고, 링크→enc에서 NULL 액세스를 방지합니다. 또한, 특정 경로에 대한 널 포인터 수정.
  • DRM/Xe: madvise를 위해 VM을 재생성하고 분할할 때 VM 플래그를 보존하고 madvise 자동 재설정을 VM_BIND 플래그 뒤에 숨겨 위험한 부분을 제거합니다.
  • Rockchip: dw_hdmi의 RK3228에 대한 올바른 SCLIN 마스크.
  • drm/panic: 로고 및 QR을 사용한 "패닉 모드"에 대한 여러 가지 개선 사항: 로고와의 겹침을 방지하고, 양의 수직 여백을 보장하고, 화면 너비가 글꼴 너비보다 작을 때 0으로 나누는 것을 방지합니다. 24비트 픽셀로 페이지를 교차하지 마세요.
  • Intel i915: 구조를 할당할 때 패닉 객체 누출을 방지합니다.

Panthor(GPU)조차도 커널 패닉으로 인해 VA 영역이 부분적으로 매핑 해제되는 것을 방지하도록 조정되었습니다. 이는 단편화된 메모리 환경에서 발생하는 성가신 버그입니다. 이러한 변경 사항은 미묘하지만, 실제 컴퓨터에서 충돌을 방지합니다.

Rust Binder와 Classic Binder

Rust Binder는 몇 가지 개선을 통해 계속해서 발전해 왔습니다. 고아 매핑에 대한 경고가 제거되었고, 예기치 않은 상태 발생 시 freeze_notif_done 알림이 재전송되며, 보류 중인 중복 항목이 있는 경우 FreezeListener가 삭제되지 않고, 프로세스가 실제로 정지된 경우에만 알림이 보고됩니다. 이와 동시에, 기존 Binder는 더 이상 작동하지 않는 "invalid inc weak" 검사를 제거합니다. 툴체인 측면에서는, objtool은 추가 Rust 함수를 'noreturn'으로 인식합니다. 그리고 Rust Binder의 클리피 경고가 정리되었습니다.

io_uring, sqpoll 및 zc rx

io_uring에는 몇 가지 외과적 조정이 있습니다. io_waitid_prep()에서 likely()의 오용이 수정되었고, __must_hold 주석이 조정되었으며, uring_cmd multishot 명령에 대한 버퍼의 자동 커밋이 수정되었습니다. sqpoll CPU 회계가 재평가되었습니다. getrusage()는 나중에 처리하고 stime을 더욱 지능적으로 업데이트합니다. 또한, MAINTAINERS에 zcrx 관련 항목이 추가되었습니다.

아키텍처 및 ACPI: RISC-V, arm64 및 x86

라스 아키텍처 그것들은 다양하고 구체적입니다:

  • RISC-V: 비일관성 장치에 대해 pgprot_dmacoherent()가 정의되어 있으며, 비활성화된 CPU의 세부 정보는 DT에 인쇄되지 않으며, IPI IRQ는 고유한 이름으로 등록되고, MAX_POSSIBLE_PHYSMEM_BITS는 zsmalloc에 ​​대해 정의되어 있습니다. 불필요한 레거시 매크로가 제거됩니다.. 또한 hwprobe의 초기화되지 않은 사용법과 vDSO의 늦게 초기화된 키도 수정했습니다.
  • arm64: MTE에서는 해당 페이지가 copy_highpage()에서 이미 태그가 지정된 경우 경고가 표시되지 않습니다.
  • x86: Intel에 대한 RETBLEED 메시지 조정, Zen1/Naples에 대한 Entrysign 개정 확인 수정 데드 코드는 완화 조치로 정리됩니다..
  • ACPI/속성: acpi_node_get_property_reference()에서 인수 순서를 수정하고 RIMT에서 IOMMU_API가 비활성화되었을 때 발생하는 경고를 제거했습니다.

또한 MIPS Malta에서 IO 범위를 잠그는 pcibios_align_resource()와 i8042 등록을 방해하는 키보드 리소스와 같은 이상한 비트를 수정합니다. 이러한 작은 변경 사항은 교착 상태 시나리오나 취약한 초기화를 방지합니다..

드라이버 및 버스: SPI, serial, hwmon, GPIO, PCI/ASPM 및 기타

이 rc는 좋은 것을 가져다줍니다 수정 사항 모음 드라이버에서:

  • SPI: Airoha의 버그가 있는 dirmap은 이제 실패를 반환하고 exec_op에서 듀얼/쿼드 지원을 추가하고 문제가 발생하면 비 DMA 모드로 전환하고 LUN당 다중 플레인 플래시를 수정합니다. NXP FSPI는 필요할 때 클록을 재설정합니다. 소스에 따라 주파수를 제한합니다DLL 잠금 후 지연을 추가하는 것 외에도 Intel SPI는 128M 밀도와 새로운 플랫폼(Arrow Lake-H, Wildcat Lake)에 대한 지원을 추가합니다.
  • 직렬 및 TTY: 8250_dw는 재설정 시 오류를 처리합니다. 8250_mtk는 보드 클럭을 활성화하고 런타임 PM에 전달합니다. sc16is7xx는 불필요하게 활성화된 보드 클럭을 지웁니다. sh-sci는 FIFO 오버런을 수정합니다.
  • PCI/ASPM: DeviceTree 플랫폼에서는 검증되지 않은 상태를 피하기 위한 보수적인 결정인 L0 및 L1만 활성화됩니다.
  • GPIO: ACPI가 디바운스 오류 심각도를 완화합니다. gpio-regmap이 fixed_direction_output 매개변수를 추가합니다. IDIO-16 모듈이 정의합니다.
    최대 유효 주소 및 고정 회선 주소.
  • Hwmon 및 pmbus: 자식 노드에 대한 참조 누출을 수정하고 Max/ISL 모델 계수를 업데이트했으며, GPD 팬 드라이버에 대한 세부 정보도 추가했습니다.

동시에, DT 호환 모듈이 Kaanapali용 SPI Cadence(ZynqMP/Versal-Net), Rockchip RK3506 및 UFS QMP에 ​​추가되었으며, 새로운 옵션 ID(Telit FN920C04 ECM, Quectel RG255C, UNISOC UIS7720)도 추가되었습니다. 새로 도착한 하드웨어에 대한 지원을 미세 조정합니다..

메모리, 슬래브 및 mm/damon

메모리 영역도 주목을 받습니다. slab에서 obj_exts 및 NULL 혼동 조건과의 경쟁이 방지됩니다. mm/mremap은 DONTUNMAP 이후 이전 매핑을 올바르게 설명합니다. THP는 거대한 페이지를 분할할 때 독극물 소모를 방지합니다. DAMON은 ops_filter 누수를 정리합니다. 할당량 목표 논리를 중앙 집중화합니다.. hugetlbfs에서 잠금 어설션은 huge_pmd_unshare()에서 조기 반환 후 이동됩니다.

보안, 추적 및 Kconfig

작지만 중요한 부분:

  • lib/crypto: Poly1305는 !KMSAN을 사용하여 종속성을 복원하여 구성 충돌을 방지합니다.
  • include/trace: 실패한 시작 시 발생하는 인플라이트 카운트 도우미를 수정했습니다. 읽기/쓰기 크레딧에 대한 SMB3 추적 지점을 추가했습니다.
  • 다양한 Kconfig: CONFIG_XFS_RT 도움말이 개선되었고 테스트/통계가 DEBUG_FS로 조정되었습니다. QCOMTEE 및 기타 플랫폼의 종속성 수정.

이러한 변경 사항은 커널 구성 중 문제를 방지하고, 제대로 시작되지 않을 때 진단을 더 쉽게 만들어 주는 눈에 띄지 않는 변경 사항입니다. 이러한 삶의 질 향상의 총합은 시간 낭비가 줄어듭니다.

6.18-rc3에 대한 이 리뷰를 통해 핵심은 바로 '폭발적인 기능보다는 견고성'입니다. SMB Direct 블록부터 XFS 조정, 네트워킹, 그래픽, 메모리 분야의 수많은 드라이버와 수정 사항까지, 모든 것이 더욱 안정적인 커널을 지향하고 있습니다. 버전 맵(최신 안정 릴리스는 6.17, 참조 버전인 LTS 버전은 6.12/6.6)에 추가된 내용을 통해 현재 커널의 상태를 명확하게 파악할 수 있습니다. 중요한 부분에 대한 지속적인 반복, 장기 지원 각 팀이 침착하게 계획할 수 있는 마이그레이션 경로가 있으며, 어떤 분야가 안전하고 어떤 분야가 아직 초기 단계인지 알 수 있습니다.

리눅스 6.18-rc2
관련 기사 :
Linux 6.18-rc2는 그래픽, Rust 및 AMD Zen에 대한 주요 수정 사항을 포함하여 대규모로 출시되었습니다.