<@center><b><#selectbg_g>jolla-kernel 체인지로그</#></b>

<b><#selectbg_g>jollaman999 @xda 개발자</#></b>
<b><#selectbg_g>https://github.com/jollaman999</#></b>

<b><#selectbg_g>[bullhead_II-v25.0]</#></b></@>
== 커널 ==
>> Common <<
- Google 의 7월 패치들과 Android O DP3 패치들 적용
- Linux 3.10.107
- xpad: 최신 Linux 업스트림 패치들 적용
- kms: 최신 Linux 업스트림 패치들 적용
- net, mm, sdcardfs: Google android-3.10 로 부터 최신 패치들 적용
- msm_thermal: 낮은 온도에서 더 부드러운 성능을 낼 수 있도록 조정!
- msm_thermal: 쓰로틀링 지연 구현
(주파수가 바로 제한되지 않고, 약간의 지연이 된 후에 제한이 됩니다.
 또한, 온도가 내려가면 제한을 해제하고, 지연시간을 초기화 시킵니다.
 따라서, 이 시간동안 성능을 보장합니다. 기본값은 4초입니다.)
- msm_thermal: Little 의 코어 컨트롤 구현
(성능과 온도가 일부 Little 코어들을 끄고, 남아있는 코어들에게
 높은 주파수들을 주는 것이 더 좋습니다.)
- qcacld-2.0(wlan driver): LA.BF64.1.2.3_rb1.14 로 업데이트 (from CAF)

== AIO ==
- 없음

== 리커버리 ==
- omni TWRP 최신 패치들 적용
- 최신 LineageOS 소스들로 빌드
- jolla-kernel_bullhead_II-v25.0 적용

<b><#selectbg_g>[bullhead_II-v24.0]</#></b>
== 커널 ==
>> Common <<
- Linux 3.10.106
- CAF 의 일부 메모리 누수, 오버플로우, 보안 관련 패치들 적용
- 변경사항 취소 "wcnss: 잠재적인 메모리 누수와 힙 오버플로 수정"
(이것이 배터리 드레인의 진짜 원인이였습니다!!)

== AIO ==
- 없음

== 리커버리 ==
- Squash 된 twrpDigest refactor 와 함께 omni TWRP 최신 패치들 적용
- 최신 LineageOS 소스들로 빌드
- jolla-kernel_bullhead_II-v24.0 적용

<b><#selectbg_g>[bullhead_II-v23.0]</#></b>
== 커널 ==
>> Common <<
- v22.2 에서 적용된 CAF 의 보안 관련 패치들 취소 (배터리 드레인을 보임.)
- qcacld-2.0(wlan): CAF 의 LA.BF64.1.2.3_rb1.13 드라이버 사용
- msm_thermal: 장치가 시원할 때 'poll_ms' 를 늘림
- msm_thermal: 화면이 꺼졌을 때, 온도를 장치가
 시원해질 때까지 확인한 후 suspend 상태로 들어가도록 함
- msm_thermal: 주파수 제어의 반복되는 행동들 제거
- wcnss: 잠재적인 메모리 누수와 힙 오버플로 수정 (from CAF)
- sdcardfs, tcp, dm, gre: Google android-3.10 으로 부터 최신 패치들 적용

== AIO ==
- f2fs-tools: dev 브랜치의 최신 변경 사항들 적용
- aroma: 누가에서만 aptX 설치를 보여줌
- Updater: 라이브러리들을 업데이트하고 API 26 으로 재빌드
- A2DPChecker: 라이브러리들을 업데이트하고 API 26 으로 재빌드

== 리커버리 ==
- f2fs-tools: dev 브랜치의 최신 변경 사항들 적용
- omni TWRP 최신 패치들 적용
- 최신 LineageOS 소스들로 빌드
- jolla-kernel_bullhead_II-v23.0 적용

<b><#selectbg_g>[bullhead_II-v22.3]</#></b>
== 커널 ==
>> Common <<
- Google 의 6월 패치들 적용

== AIO ==
- Updater: 라이브러리들을 업데이트 하고 누가에서의 설치 문제 수정
- A2DPChecker: 라이브러리들을 업데이트 하고 누가에서의 설치 문제 수정

== 리커버리 ==
- jolla-kernel_bullhead_II-v22.3 적용

<b><#selectbg_g>[bullhead_II-v22.2]</#></b>
== 커널 ==
- N 과 O 커널 분리.

>> N <<
- Android O 커밋들을 취소하고 nanohub 와 ipv6 관련 패치들만 적용.
(Android O 커밋들이 장치의 성능을 감소시킴.)

>> O <<
- Android O 커밋들 정리.

>> 공통 <<
- arp: 'ignore_proxy_arp' 옵션을 추가하고 기본으로 활성화 함.
(모바일 장치에서 proxy ARP 를 사용할 필요가 없습니다.
또한, 이 패킷들을 무시하는 것이 안전합니다.)
- arp: Proxy ARP 에서 게이트웨이 업데이트 탐지 제거.
(Proxy ARP 에서 게이트웨이 업데이트를 탐지하는 것이 말이 안됩니다.
Proxy ARP 를 사용하면, 트래픽들을 포워드 시키기 위해 게이트웨이 IP 주소를 사용하지 않기 때문입니다.)
- arp: 게이트웨이로 향하는 ARP 요청들을 확인하여 공격자의 하드웨어 주소 감지.
- arp: arp_project: v1.0 으로 버젼업
- ANDROID: hid: uhid: implement refcount for open and close (from Google android-3.10)
- msm: kgsl: Add accounting for memory mapped in userspace
(누가의 mr2 패치들을 적용하는 동안 빠져 있었습니다.)
- CAF 의 보안 관련 패치들 일부 적용.

== AIO ==
- f2fs-tools: dev 브랜치의 최신 변경 사항들 적용.
- N 과 O 커널 이미지 분리.

== 리커버리 ==
- f2fs-tools: dev 브랜치의 최신 변경 사항들 적용.
- LineageOS 최신 소스들과 빌드
- jolla-kernel_bullhead_II-v22.2 적용

<b><#selectbg_g>[bullhead_II-v22.1]</#></b>
== 커널 ==
- misc: fpc1020: 화면이 꺼졌을 때 fingerprintd 우선순위를 최대로 함 (by sultanxda)
- cpufreq: fingerprint boost 드라이버 소개 (by frap129 origin codes by sultanxda)
- + fingerprint boost 드라이버에 대한 마이너 픽스들

== AIO ==
- Updater: su 명령 실행 에러 확인 (SU 가 업데이터에 대해서 허용되지 않았을때 강제 종료되는 문제 수정.)
- Updater: 사용 되지 않는 구문들 제거
- Updater: 토스트 메세지들을 긴 시간 동안 보여줌
- Updater: v1.9 로 버젼업

== 리커버리 ==
- jolla-kernel_bullhead_II-v22.1 적용

<b><#selectbg_g>[bullhead_II-v22.0]</#></b>
== 커널 ==
- Android O DP2 패치들 적용
- f2fs: 'f2fs_submit_discard_endio()' 에서 빠진 'bio_put(bio)' 추
- nanohub: Google msm 으로 부터 최신 marlin 패치들과 Android O DP2 패치 적용
- kernel: 데몬이 작동중일 때만 su 가 실행되도록 함 (from LineageOS android_kernel_oneplus_msm8996)
- kernel: su 체크에서 잠재적인 refcount 누수 수정  (from LineageOS android_kernel_oneplus_msm8996)
- sdcardfs: Google android-3.10 으로 부터 최신 android-3.10 패치들 적용
- net/packet: Google android-3.10 으로 부터 오버플로우 패치들 적용
- msm_thermal: 높은 온도를 체크하여 LITTLE 의 주파수를 낮은 값으로 감소시킴
( 빅코어가 꺼졌을 때, LITTLE 의 주파수 감소 스텝은 'temp_count_max_little_with_big_off'
에 의해 2가 됩니다.
 몇몇의 상황에서, 장치가 매우 뜨거울 경우, 주파수를 감소시킬 방법이 없습니다.
 LITTLE 코어들이 낮은 주파수를 얻기 위해 높은 온도를 체크할 필요가 있습니다.)
- arm/arm64: Google android-3.10 으로 부터 컴파일 관련 일부 패치들 적용

== AIO ==
- Updater: 라이브러리들 O 로 업데이트
- Updater: Main: 'getApplicationContext()' 가 필요하지 않을때 호출하지 않음
- Updater: SELinux 거부 수정 및 root 상태 확인
- Updater: v1.8 로 버젼업
- A2DP Checker: 라이브러리들 O 로 업데이트

== 리커버리 ==
- omni TWRP 최신 패치들 적용
- 최신 LineageOS 소스들로 빌드
- jolla-kernel_bullhead_II-v22.0 적용

<b><#selectbg_g>[bullhead_II-v21.0]</#></b>
== 커널 ==
- Linaro gcc-linaro-6.3.1-2017.05-rc1 로 빌드
- Google android-3.10 로 부터 timerfd, tty, net 패치들 적용
- sdcardfs: Google android-3.10 로 부터 최신 android-3.10 패치들 적용
- f2fs: jaegeuk/f2fs-stable 로 부터 linux-4.4.y stable 브랜치 패치들 적용

== AIO ==
- f2fs-tools: jaegeuk/f2fs-tools 로 부터 최신 dev 브랜치 패치들 적용

== 리커버리 ==
- 최신 LineageOS 소스들로 빌드
- TWRP 를 AOSP 7.1.2 로 업데이트
- TWRP 3.1.1 로 버젼 업
- jolla-kernel_bullhead_II-v21.0 적용

<b><#selectbg_g>[bullhead_II-v20.0]</#></b>
== 커널 ==
- 5월!
- sdcardfs: Google android-3.10 으로 부터 최신 android-3.10 패치들 적용
- Google android-3.10 의 ext2, ext4, mbcache 패치들 적용

== AIO ==
- 없음

== 리커버리 ==
- jolla-kernel_bullhead_II-v20.0 적용

<b><#selectbg_g>[bullhead_II-v19.0]</#></b>
== 커널 ==
- 4월, Android 7.1.2, Android O Preview, hwbinder 패치들 적용

== AIO ==
- Android O 지원

== 리커버리 ==
- 최신 LineageOS 소스들과 함께 재빌드
- jolla-kernel_bullhead_II-v19.0 적용

<b><#selectbg_g>[bullhead_II-v18.2]</#></b>
== 커널 ==
- sdcardfs: 최신 android-3.10 패치들 적용 (Google android-3.10)
- power: wakelock blocking improvements by franciscofranco
- Google android-3.10 에서 일부 패치들 가져옴

== AIO ==
- 없음

== 리커버리 ==
- 최신 LineageOS 소스들과 함께 재빌드
- FBE 지원 수정 시도 (피드백 부탁드립니다.)
- jolla-kernel_bullhead_II-v18.2 적용

<b><#selectbg_g>[bullhead_II-v18.1]</#></b>
== 커널 ==
- input: misc: fpc:(지문 센서) 화면이 켜져있을 때 불필요한 호출들 방지
- msm_thermal, fpc: 모든 코어들을 켜서 지문 인식 속도 향상

== AIO ==
- 없음

== 리커버리 ==
- jolla-kernel_bullhead_II-v18.1 적용

<b><#selectbg_g>[bullhead_II-v18.0]</#></b>
== 커널 ==
- f2fs: 업스트림 패치들을 적용하는 동안 빠진 체크 추가
- f2fs: 최신 f2fs-stable 패치들 적용 (git.kernel.org jaegeuk)
- sdcardfs: 최신 android-3.10 패치들 적용 (Google android-3.10)
- binder: 최신 android-3.10 패치들 적용 (Google android-3.10)
- cpufreq: conservative, ondemand, despair, relaxed: cache tunables (flar2)
- cpufreq: relaxed: down_threshold_suspended sysfs input 수정 (frap129)
- cpufreq: blu_active: android-4.4 와 맞춤 , fastlane 다시 추가 (engstk)
- usb: gadget: f_accessory: USB Keyboard 사용 후 장치 분리시 발생하는 커널 패닉 수정 (Google android-3.10)

== AIO ==
- 없음

== 리커버리 ==
- init.recovery.bullhead.rc: 빅 클러스터의 '50 768000' target load 제거
- omni TWRP v3.1.0 변경 사항들 적용
- jolla-kernel_bullhead_II-v18.0 적용

<b><#selectbg_g>[bullhead_II-v17.5]</#></b>
== 커널 ==
- Google 의 3월 패치들 적용
- crypto: lz4 Cryptographic API 추가
- zram: 잘못된 초기화 수정 및 crypto 압축 API 로 전환

== 리커버리 ==
- Appiled jolla-kernel_bullhead_II-v17.5

<b><#selectbg_g>[bullhead_II-v17.4]</#></b>
== 커널 ==
- Linaro gcc 6.3.1 stable 버젼으로 빌드
- lib/lz4: 업스트림의 업데이트 된 버젼 적용 (upstream)
- zram: 새로운 버젼의 LZ4 와 동작하도록 수정 (upstream/squash)
- qcacld-2.0 (wlan): 7.1.2 Preview 변경사항들 적용
- cpufreq: interactive: 64bit 에 대해 수정 (Google android-3.10)
- android: binder: 잘못된 포인터 사이즈 수정 (Google android-3.10)
- ASoC: msm: qdsp6v2: 메모리 누수 현상 수정 (CAF)

== AIO ==
- 변경사항 취소 "ramdisk: 빅 클러스터에 대해 '50 768000' 타겟 로드 추가"
(장치를 쉽게 뜨겁게 하며, 배터리를 많이 소모함.)

== 리커버리 ==
- omni TWRP 최신 패치들 적용
- MultiROM: Internal ROM 이름의 공백 허용
- jolla-kernel_bullhead_II-v17.4 적용

<b><#selectbg_g>[bullhead_II-v17.3]</#></b>
== 커널 ==
- 스톡 WLAN 드라이버로 돌아옴
- sdcardfs: android-3.10 패치들 적용
- cpufreq: cpu-boost: input boost 를 기본으로 비활성화
- msm_thermal: 화면이 꺼졌을 때 빅 코어들을 끔

== AIO ==
- fstab.bullhead: 'background_gc=sync' 와 'inline_data' f2fs 옵션들 활성화

== 리커버리 ==
- jolla-kernel_bullhead_II-v17.3 적용

<b><#selectbg_g>[bullhead_II-v17.2]</#></b>
== 커널 ==
- 변경사항 취소 "jolla-kernel_defconfig: RCU_BOOST 활성화"
- sdcardfs, ext4 crypto: android-3.10 패치들 적용

== AIO ==
- aptX 코덱 지원

== 리커버리 ==
- 최신 omni 패치들, LineageOS 소스들과 함께 빌드
- jolla-kernel_bullhead_II-v17.2 적용

<b><#selectbg_g>[bullhead_II-v17.1]</#></b>
== 커널 ==
- Linux 3.10.105
- jolla-kernel_defconfig: RCU_BOOST 활성화
- Android 7.1.2 호환

== AIO ==
- ramdisk: 빅 클러스터에 대해 '50 768000' 타겟 로드 추가
- ramdisk: input boost 비활성화
- ramdisk: 리틀의 hispeed_freq 를 960MHz 로 설정
- jugoslavpetrovic 의 스플래시 스크린에 감사드립니다!

== 리커버리 ==
- 최신 LineageOS 소스들과 재빌드
- jolla-kernel_bullhead_II-v17.1 적용

<b><#selectbg_g>[bullhead_II-v17.0]</#></b>
== 커널 ==
- Linux 3.10.105
- jolla-kernel_defconfig: RCU_BOOST 활성화
- Android 7.1.2 호환

== 리커버리 ==
- 최신 LineageOS 소스들과 재빌드
- jolla-kernel_bullhead_II-v17.1 적용

<b><#selectbg_g>[bullhead_II-v17.0]</#></b>
== 커널 ==
- Linux 3.10.105-rc2
- lowmemorykiller:  motolora 의 레드블랙트리 최적화와 함께 스톡으로 되돌림
- per-process reclaim 과 vmpressure 와 관련된 모든 패치들 제거
- qcacld-2.0: 구글의 2월 패치와 함께 CAF 의 wlan 드라이버 다시 가져옴
- USB wireless 지원

== 리커버리 ==
- jolla-kernel_bullhead_II-v17.0 적용

<b><#selectbg_g>[bullhead_II-v16.1]</#></b>
== 커널 ==
- Google 의 2월 보안 패치들 적용
- qcacld-2.0 (wlan): 스톡 드라이버로 되돌림
- msm8992-regulator: 리틀 클러스터의 1248MHz 를 조금 undervoltage 함

== 리커버리 ==
- jolla-kernel_bullhead_II-v16.1 적용

<b><#selectbg_g>[bullhead_II-v16.0]</#></b>
== 커널 ==
- zram: CAF 패치들 적용
- zram: CPU 별 압축 스트림 백포트
- lowmemorykiller: adaptive lmk 와 함께 CAF 패치들 적용
- lowmemorykiller: motolora 의 레드블랙트리 최적화 적용
- mm: vmpressure: 일부 업스트림 패치들 적용
- mm: 빠진 zone 체크들 수정
- msm_thermal: 부드러운 성능을 잃지 않고 -5 도 차갑게 함
- binder, net: 구글의 hwbinder 브랜치 패치들 적용
- msm_rng: 시끄럽다 랜덤 실패 메세지들아
- arm64: irq: 시끄럽다 affinity broken 메세지들아
- 잘가렴 per-process reclaim (시스템 성능 저하 및 프리징을 일으킴.)

== AIO ==
- aroma: magisk 설치 후 설치가 실패하는 문제 수정
(magisk 는 '/tmp/busybox' 폴더를 생성합니다.
따라서, busybox 가 실행되지 않고 커널 설치가 즉시 실패하게 됩니다.)
- ramdisk: adaptive lmk 활성화
- ramdisk: per-process reclaim 라인들 제거
- f2fs-tools: v1.8.0

== 리커버리 ==
- omni 의 최신 패치들 적용
- f2fs-tools: v1.8.0
- jolla-kernel_bullhead_II-v16.0 적용

<b><#selectbg_g>[bullhead_II-v15.4]</#></b>
== 커널 ==
- tcp: __tcp_select_window() 에서 0 으로 나눠지는 문제 수정
- crypto: arm64/aes-blk - CBC 및 CTR 모드에서 iv_out 요구 사항 준수
- 변경사항 취소 "msm_thermal: 불필요한 변수들 제거"
(주파수가 최대로 돌아오지 않는 문제를 발생시킴.)

== 리커버리 ==
- jolla-kernel_bullhead_II-v15.4 적용

<b><#selectbg_g>[bullhead_II-v15.3]</#></b>
== 커널 ==
- Linaro gcc 6.3.1 로 빌드
- tty: ldsem_down_read() 에서의 멈춤 현상 수정
- mm: Per-Process Reclaim
- power: bcl: 예상치 못한 cpu 온라인에 대해 핫플러그 재평가
- jolla-kernel_defconfig: WLAN_UDP_RESPONSE_OFFLOAD 비활성화
- jolla-kernel_defconfig: WLAN_FEATURE_RX_WAKELOCK 비활성화
- msm_thermal: 중복된 인덱스 체크들 제거
- msm_thermal, msm8992: 사용되지 않는 라인 제거
- msm_thermal: 높은 온도에서 깨어난 후에 주파수들이 최대로 설정되는 문제 수정
- msm_thermal: 불필요한 변수들 제거
- 변경사항 취소 "PCI: lockdep 경고 수정"
- kgsl: 일부 workqueues 들을 kthreads 로 변경
- mdss: vsync_retire_work_handler 에 대해 kthread 로 변경

== AIO ==
- 변경사항 취소 "ramdisk: per-process reclaim 라인들 제거"
- ramdisk: per-process reclaim 의 per_swap_size 를 512 로 감소

== 리커버리 ==
- Linaro gcc 6.3.1 로 빌드
- jolla-kernel_bullhead_II-v15.3 적용

<b><#selectbg_g>[bullhead_II-v15.2]</#></b>
== 커널 ==
- mdss: backlight dimmer 를 기본으로 활성화
- 변경사항 취소 "workqueue: delayed work 가 로컬 cpu 에서 동작 하도록 함"
- msm8992, msm_thermal: poll-ms 를 250 으로 되돌림
- msm8992, msm_thermal: 낮은 온도에서의 부드러운 성능
- rmnet_data, ion, msm: %p 를 %pK 로 변경 (CAF)
- ASoC: soc: 버퍼 오버플로 위험 방지 (CAF)
- ASoC: qdsp6v2: 잠재적인 무한 루프 버그 수정 (CAF)
- qcacld-2.0 (WLAN 드라이버): LA.BF64.1.2.3_rb1.8 from CAF

== AIO ==
- init.bullhead.rc: LITTLE 의 부스트 freq 를 960MHz 로 감소
- init.bullhead.rc: hispeed load 를 빠르게 조정

== 리커버리 ==
- 변경사항 취소 "gui: Actions: 파워키를 누를때 백라이트 작동"
(화면이 꺼진 후 화면을 킬 수 없음.)
- init.recovery.bullhead.rc: LITTLE 의 부스트 freq 를 960MHz 로 감소
- init.recovery.bullhead.rc: hispeed load 를 빠르게 조정
- jolla-kernel_bullhead_II-v15.2 적용

<b><#selectbg_g>[bullhead_II-v15.1]</#></b>
== 커널 ==
- 변경사항 취소 "netfilter: nf_hooks 에 jump_label 사용"
(CONFIG_JUMP_LABEL 이 활성화 되었을때 테더링과 일부 필터링을 사용하는 앱들을 망가트림.)
- netfilter: 일부 업스트림 패치들 적용
- arm64, jump label: 일부 업스트림 패치들 적용
- PCI: lockdep 경고 수정

== 리커버리 ==
- jolla-kernel_bullhead_II-v15.1 적용

<b><#selectbg_g>[bullhead_II-v15.0]</#></b>
== 커널 ==
- 리베이스!! (엄청 부드럽고 거의 0~1% 에 가까운 배터리 드레인!!)
- msm_thermal: vdd 제한에 대한 메세지 출력
- msm8992: vdd 제한 비활성화
- msm_thermal: 일부 파라미터들 이름 변경
- msm_thermal: 빅 클러스터를 개별적으로 조절함 (더 부드러워짐.)
(현재, 쓰로틀링 온도에 도달하면, 리틀과 빅이 동시에 주파수를 감소하게 됩니다.
빅 클러스터를 개별적으로 조절할 수 있도록 하였습니다.
따라서 이로 인해, 더 높은 온도에서 빅클러스터의 주파수를 감소시킬 수 있습니다.)
- msm_thermal: 파라미터들 설명 수정
- touchscreen, mdss: 사운드가 멈춘 후 터치하여 깨우기 기능들이 작동하지 않는 문제 수정.
- touchscreen: synaptics: 화면이 켜져있는 경우 터치스크린을 끄도록 시도하지 않음.
- s2w: s2w_input_event() 에서의 잘못된 체크들 수정
- mdss, touchscreen: touch on 체크들 단순화
- cpufreq: cpu-boost: input_boost_ms 를 '1500' 으로 증가
('msm_performance' 를 포함하여 많은 것들을 비활성화 시키고 최적화를 하였습니다. 그리고 40 은 높은 주파수를 유지하기에 너무 짧습니다.
터치를 하는 동안 높은 주파수를 유지 할 수 있도록 이 값을 증가시켰습니다.)
- tcp: 소켓들이 MSG_FASTOPEN 을 기본으로 사용 할 수 있도록 함.
- ASoC: msm: qdsp6v2: 돌비의 CVE-2016-2469 수정 (CAF 로 부터 가져옴)
- ASoC: msm: qdsp6v2: 비활성화된 모듈들을 컴파일 하도록 복구
- crypto: sha256 - SHA-256 에 대한 베이스 레이어 구현
- crypto: sha512 - SHA-512 에 대한 베이스 레이어 구현
- crypto: arm64/sha2 - OpenSSL 의 SHA256/SHA512 구현 통합
- ANDROID: dm verity: 최소 프리패치 크기 추가
(eMMC 와 같은 장치는, 한번에 더 많은 해시 블럭을 읽는데 더 나은 성능을 보여준다.
안드로이드에 대해서, 128 을 기본값으로 한다. 테스트 된 기기들에서 300ms 의 부팅 시간이 줄었다.)
- 'LineageOS/android_kernel_oneplus_msm8996' 로 부터 일부 CAF 패치들 적용
- CAF 로 부터 카메라 패치들 적용
- cpufreq: Relaxed 거버너 추가
- Makefile: Linaro 최적화 추가
- qcacld-2.0: O3 로 빌드
- qcacld-2.0: maybe-uninitialized 경고 메세지 수정
- ext4: 3.18.y 로 부터 일부 업스트림 패치들 적용
- adredo-idler 제거
- per-process reclaim 제거
- 오래된 CAF 패치들 제거

== AIO ==
- ramdisk: 'input_boost_ms' 라인 제거
(기본값이 커널에 의해 1500 으로 변경됨.)
- ramdisk: devfreq 라인들 제거
- ramdisk: per-process reclaim 라인들 제거
- 마쉬멜로우 지원 제거

== 리커버리 ==
- 새 LineageOS 소스들과 빌드
- omni TWRP 의 최신 패치들 적용
- recovery: 'input_boost_ms' 라인 제거
- recovery: devfreq 라인들 제거
- jolla-kernel_bullhead_II-v15.0 적용

<b><#selectbg_g>[bullhead_II-v14.1]</#></b>
== 커널 ==
>> 공통 <<
- 변경 사항 취소 "f2fs: 기본 아이들 간격 값 리셋"
(새로운 f2fs 변경사항에서의 데드락을 방지.)

== AIO ==
- updater: 라이브러리 업데이트
- updater: 소스 클린업 & Deprecate 된 라인들 교체
- updater: Manifest: GoogleAppIndexingWarning 무시
- updater: 개인 서버 사용 및 체인지로그를 Github 로 부터 보여줌
- MultiROMMgr: 라이브러리 업데이트
- MultiROMMgr: ko: 더 번역함
- MultiROMMgr: Gradle 버젼 업데이트
- MultiROMMgr: 일부 클린업

== 리커버리 ==
- jolla-kernel_bullhead_II-v14.1 적용

<b><#selectbg_g>[bullhead_II-v14.0]</#></b>
== 커널 ==
>> 공통 <<
- mdss, sovc: 균형이 맞지 않는 mdss 끄기 수정
(진짜 문제는 균형이 맞지 않는 mdss vreg(전원) 상태였습니다.
사운드가 정지되고 난 후 또 다시 끄려고 시도합니다.
따라서 균형이 맞지 않는 상태를 초래하게 되고 디바이스가 화면을 다시 켤 수 없게 됩니다.
이미 꺼져 있는 경우에 mdss vreg(전원)을 끄지 않도록 하였습니다.)
- mdss, sovc: 저전력 모드에 진입 했을시 mdss 를 끄지 않음
(mdss 에 저전력 모드가 있습니다.
이 모드는 디바이스가 알람을 받아서 화면을 검정과 흰색으로 켤때 사용됩니다.
따라서 저전력 모드로 들어갔을때 mdss 를 끄면 안됩니다.
그렇지 않으면 타임아웃 에러 메세지들을 발생시킵니다.)
- 변경사항 취소 "block: maple: 디스플레이 상태를 필요할 때 체크"
(필요없는 커밋.)
- Google android-3.10 로 부터 sdcardfs 와 관련된 Android mnt 변경사항 적용
- android: binder: Google 의 hwbinder 브랜치 변경 사항들 적용
- net: Google 의 hwbinder 브랜치 변경 사항들 적용
- sound: msm, soc: 사이즈 최적화
- lib/vsprintf.c: 업스트림 변경 사항들 적용
- Input: xpad: 업스트림 변경 사항들 적용
- ksm, msm_thermal, dt2w, s2w, sovc: fb notifier 에서 저전력 상태 체크
(mdss 에 저전력 모드가 있습니다.
이 모드는 디바이스가 알람을 받아서 화면을 검정과 흰색으로 켤때 사용됩니다.
만약 사용자가 자동 잠금 해제 기능을 활성화 하였다면, mdss 가 화면을 저전력 모드로 킬때 문제가 발생할 것입니다.
드라이버가 resume 상태로 전환되지 않습니다.
따라서 이 저전력 상태를 fb notifier 에서 체크하여야 합니다.)

== 리커버리 ==
- 최신 LineageOS/cm-14.1 소스들과 재빌드
- 최신 omni TWRP 변경 사항들 적용
- jolla-kernel_bullhead_II-v14.0 적용

<b><#selectbg_g>[bullhead_II-v49514648]</#></b>
== 커널 ==
>> 공통 <<
- msm_thermal: 온도 제한 조절 (2017년 1월)
(빅 클러터가 꺼지면, 디바이스가 매우 느려집니다.
따라서, 빅 클러스터를 더욱 제한하고 디바이스가 매우 뜨거울 대만 빅클러스터를 끄도록 하였습니다.
이로써 빅클러스터의 켜지고 꺼지는 사이클을 줄이고 성능을 증가시킬 수 있습니다.)
- Adreno idler 추가 및 기본으로 활성화.
- adreno_idler: 디스플레이 상태 감지 추가
- msm_adreno_tz: 디스플레이 상태 감지 추가
- PM: devfreq: 일부 패치들 적용
- 콘설 버퍼 imageblit function 속도 증가
- sched: 루프와 cpu 선택에 대한 일부 최적화
- 변경사항 취소 "mdss: LiveDisplay to kcal 인터페이스"
(레이스 컨디션을 발생 시키며, LiveDisplay 는 이가 없어도 잘 작동함.)
- mdss: 일부 함수들 static 으로 변경
- mdss, sovc: 사운드가 재생되고 난 후 화면을 키거나 끄는중에 발생하는 레이스 컨디션 방지
- slimbus: slimbus 오버클럭
(하드웨어에 대해 최상의 오디오 품질을 제공.)
- sdcardfs: Google 의 android-3.10 변경사항들 적용.
- mm: Per-Process Reclaim
(프로세스의 종료를 줄이고 더 많은 메모리 여유 제공.
상세 정보: https://lwn.net/Articles/548072/)
- mm: process reclaim: vmpressure 기반 process reclaim
- block: Maple I/O 스케줄러 추가
- block: maple: 디스플레이 상태를 필요할 때 체크

== AIO ==
- ramdisk: per-process reclaim 파라미터들 설정
- updater-script: 앱들을 설치하는 동안 selinux context 설정

== 리커버리 ==
- 최신 LineageOS/cm-14.1 소스들로 빌드 (Android 7.1.1_r9)
- 최신 omni TWRP 변경사항들 적용
- jolla-kernel_bullhead_II-v49514648 적용

== 49514648 ==
* 2.
* ABC.
* 스키 타는 것 좋아하시나요?

<b><#selectbg_g>[bullhead_II-v12.7]</#></b>
== 커널 ==
>> 공통 <<
- 4.1.31 랜덤 패치들 취소

== 리커버리 ==
- cm-14.1 vold 로 부터 cryptfs 가져옴 (빠른 복호화)
- jolla-kernel_bullhead_II-v12.7 적용

<b><#selectbg_g>[bullhead_II-v12.6]</#></b>
== 커널 ==
>> 공통 <<
- Google 1월 보안 패치 적용

== 리커버리 ==
- jolla-kernel_bullhead_II-v12.6 적용

<b><#selectbg_g>[bullhead_II-v12.5]</#></b>
== 커널 ==
>> Android 6.0.1 <<
- msm: vidc: 누가로 부터 에러 체크와 메모리와 관련된 일부 커밋들 적용

>> 공통 <<
- Linaro gcc 6.2.1-2016.11 (release) 로 빌드
- ksm: 사용자에 의해 변경된 'ksm_run' 값 저장
- LineageOS/android_kernel_nextbit_msm8992 로 부터 CAF 의 에러체크와 메모리와 관련된 일부 커밋들 적용
- random: 4.1.31 의 백포트 드라이버
- arm64: 일부 에러 체크들 수정
* ARCH_POWER 활성화 되지 않음 (XDA 요청사항) - 참고 https://github.com/jollaman999/jolla-kernel_bullhead/commit/091aa72394f9da9401a1bb6de57cd1ee4c1afd05

== AIO ==
- 램디스크를 리팩킹 하기 전에 MultiROM 암호화 폴더 제거
- MultiROM: 빌드 베이스를 LineageOS/cm-14.1 로 변경
- MultiROM: 4x4, 5x5, 6x6 패턴 지원
- MultiROM: data 마운트 실패시 리커버리로 재부팅
- MultiROM: 2번째 부팅시 'Reboot to Recovery' 버튼 추가
- MultiROM: vold 의 cryptfs 를 trampoline_encmnt 에 병합 (빠른 복호화)

== 리커버리 ==
- 빌드 베이스를 LineageOS/cm-14.1 로 변경
- MultiROM: 1080x1920: 패턴과 점들의 사이즈 조정
(패턴 사이즈가 너무 작고 점들이 너무 커서
5x5 와 6x6 패턴을 제어할 수 없습니다!
패턴 사이즈를 늘리고 점들의 사이즈를 줄였습니다.)
- jolla-kernel_bullhead_II-v12.5 적용

<b><#selectbg_g>[bullhead_II-v12.4]</#></b>
== 커널 ==
>> 공통 <<
- touchscreen: synaptics: 잘못된 endif 수정 (커널 상의 변화는 없음.)
- mdss, touchscreen: 잘못된 매크로 수정 (커널 상의 변화는 없음.)
- bullhead_defconfig: IP_NF_MATCH_RPFILTER 활성화 (테더링 호환성을 위해 활성화.)
- 진짜로 dynamic fsync 기본으로 활성화 (실수가 있었습니다. :( )

== AIO ==
- Dynamic fsync 옵션 추가

== 리커버리 ==
- v11.2 에서 사용된 리커버리 소스로 되돌림
(이전의 리커버리는 가끔 플래싱 완료 후 아무 변화가 없는 이상한 문제가 존재함.)
- 최신 cm-14.1 소스들과 빌드
- 파일 기반 암호화 지원
- MultiROM: boot.img 의 호환성 증가
- jolla-kernel_bullhead_II-v12.4 적용

<b><#selectbg_g>[bullhead_II-v12.3]</#></b>
== 커널 ==
>> 공통 <<
- drivers: power: 2% 배터리 레벨 드롭 수정
- f2fs: stable 브랜치 변경사항들을 적용을 위해 dev 브랜치 변경사항들 취소
- f2fs: stable 브랜치 변경사항들 적용

== AIO ==
- f2fs-tools: block zone 지원 변경 사항들 적용 (아직 커널에 의해 지원되지 않음.)
- f2fs-tools: 바이너리들 정적으로 빌드 (링크 에러 수정.)
- 메리크리스마스! 새해 복 많이 받으세요! :)

== 리커버리 ==
- 최신 cm-14.1 소스들과 재빌드
- f2fs-tools: 바이너리들 정적으로 빌드
- jolla-kernel_bullhead_II-v12.3 적용

<b><#selectbg_g>[bullhead_II-v12.2]</#></b>
== 커널 ==
>> 공통 <<
- tcp: NULL 포인터 dereference 수정
- mdss: kcal: kcal 값들을 변경할때 발생하는 race condition 방지

== AIO ==
- led: 이전 바이너리로 되돌림
(소스는 같으나 새 빌드가 의존성들로 인해 마쉬멜로우에서 문제가 발생함.)

== 리커버리 ==
- jolla-kernel_bullhead_II-v12.2 적용

<b><#selectbg_g>[bullhead_II-v12.1]</#></b>
== 커널 ==
>> 공통 <<
- mdss, sovc: 모든 체크 완료 후 container_of() 호출
- mdss, sovc: 화면이 꺼졌을 때 mdss 를 끄려고 시도하지 않음.
- mdss: mdss 를 끄기전에 mdss_off_work 작업 취소
- mdss: LiveDisplay 지원 추가 후 발생하는 커널 패닉 수정

== AIO ==
- liblight: 정적 liblog 와 빌드 (일부 롬들에서의 라이브러리 충돌 방지.)

== 리커버리 ==
- jolla-kernel_bullhead_II-v12.1 적용

<b><#selectbg_g>[bullhead_II-v12.0]</#></b>
== 커널 ==
>> 공통 <<
- cpufreq: blu_active 거버너 추가
- sdcardfs: NULL 포인터 dereference 수정
- system_power_efficient_wq 변경 사항들 취소 (대기 상태에서 배터리 드레인을 발생시킴.)
- leds-qpnp: 부드러운 멀티 컬러 LED 지원
- leds-qpnp, mdss: mdss 백라이트가 35% 미만일때의 led 밝기 줄임
- leds-qpnp, mdss: mdss 백라이트가 35~49% 일때의 led 조정 추가
- mdss, sovc: 화면을 끌때 발생하는 race condition 방지
- dt2w: 잘못된 터치 범위 감지 수정 (dt2w 나 dt2s 가 x 또는 y 값이 이전 값과 같은 경우 작동하는 문제 수정.)
- dt2w: fb notifier 에서의 잘못된 무시 체크 수정 (더블탭으로 화면이 꺼지는 문제 수정.)
- dt2w, sovc: dt2w, dt2s 그리고 sovc 가 비활성화 되었을때 dt2w 등록 해제
- mdss: kcal 과의 CyanogenMod LiveDisplay 지원
- mdss: kcal: LiveDisplay 와 kcal_fix_yellow 간의 충돌 수정
- cpuidle: 대기 상태시 cpuidle 비활성화 하지 않음 (낮은 대기 상태 전력 소모.)
- drivers: wakeup: qcom_rx_wakelock 옵션 추가
- f2fs: dev 브랜치 패치들 적용
- kexec: linux-master 업스트림 패치들 적용
- arm64/crypto: 중복된 데이터 업데이트 제거
- arm64: crypto: ECB 모드는 IV 를 필요로 하지 않음을 보장.
- crypto: arm64/aes-ctr - tail processing 에서의 NULL 포인터 dereference 수정
- crypto: xts - 키들에 대한 온전성 검사 통합

== AIO ==
- ramdisk: userdebug 빌드에서 ramdump 비활성화
- ramdisk: modem ramdump 들 비활성화
- ramdisk: 빅 클러스터의 최소 주파수를 633Mhz 로 되돌림
- updater-script: sovc 가 비활성화 되었을때 sovc_auto_off_delay 라인 지움
- led: led 바이너리들 업데이트

== 리커버리 ==
- 최신 cm-14.1 소스들과 빌드 (Android 7.1.1_r6)
- TWRP 3.0.3 변경사항들 적용
- MultiROM TWRP 베이스를 nkk71 의 소스로 변경
(테마 또한 공식 테마와 비슷한 어두운 것으로 변경. MultiROM 메뉴는 우상단에 위치해 있습니다.)
- 변경사항 취소 "7.0 트리의 adb 쉘 수정" (현재 디렉터리를 보여주지 않음.)
- jolla-kernel_bullhead_II-v12.0 적용

<b><#selectbg_g>[bullhead_II-v11.2]</#></b>
== 커널 ==
>> 공통 <<
- f2fs: 최신 f2fs dev 브랜치 패치들 적용
- fs/sync.c: sync_file_range(2) 가 WB_SYNC_NONE writeback 을 사용하도록 함
- sched/core: try_to_wake_up() 와 깨어난 작업 사이의 race 수정
- qcom: msm-core: system_power_efficient_wq 에 작업 할당
- power: smb135x-charger: system_power_efficient_wq 에 작업 할당
- net: SO_{SND|RCV}BUFFORCE 에 대한 signed 오버플로 회피
- packet: packet_set_ring 에 있는 race condition 수정
- sdcardfs: 'obbpath is found' 메세지 제거
- arm64: psci: psci firmware 호출을 다른 곳으로 옮김
- dt2w: 블루투스 헤드셋 사용시 올바르지 않은 등록 해제 수정
(버그 수정: 음악이 정지된 후에 DoubleTap2Sleep 이 작동안함.)

== AIO ==
- 이 압축파일에 포함되어 있는 busybox 사용 (몇몇 리커버리들에는 busybox 가 없을것.)
- updater-script: 완료 후 /data 언마운트 하지 않음 (/data 가 언마운트 된 후에 MTP 가 작동하지 않을 것.)
- updater-script: f2fs 바이너리들의 권한 올바르게 설정
- init.d 지원 제거
(init.d 가 selinux 권한들로 인해 더이상 작동하지 않습니다.
이미 수많은 시도를 해보았지만 하나도 작동되는게 없습니다.
대신에, 앱들에서 지원하는 init.d emulation 을 사용할 수 있습니다.)
- updater-script: 필요하지 않은 android_touch 라인들 제거
- updater-script: kcal 이 비활성화 되었을시 kcal 라인 제거
- 어두운 색상의 로고 사용

== 리커버리 ==
- Android 7.1.1 변경사항들 적용
- 최신 cm-14.1 소스들과 빌드 (Android 7.1.1_r4)
- jolla-kernel_bullhead_II-v11.2 적용

<b><#selectbg_g>[bullhead_II-v11.1]</#></b>
== 커널 ==
>> 공통 <<
- s2w: sweep2sleep 파라미터 추가
- s2w: sweep2wake 가 화면이 켜졌을때 동작하는 것 방지
- s2w: sweep2sleep 범위 빠르게 감지
- touchscreen: s2w: dt2w: sovc: 등록 호출시 초기화 함
- dt2w: DoubleTap2Sleep 구현
(상태바를 더블탭 하여 화면을 끕니다. (화면의 상단.)
커스텀 되지 않은 롬들에 유용합니다.
사용중인 커스텀 롬에 이 기능이 있을 경우, 필요치 않습니다.)
- msm: caf 의 race condition 수정 패치들과 메모리 관련 패치들 적용
- 업스트림: arm64: vdso: vDSO 코드를 읽기 전용으로 표시
- soc: qcom: watchdog_v2: watchdog 기능 활성화 지원 (caf)
- msm8992.dtsi: non secure watchdog 활성화

== AIO ==
- init.d: busybox 를 /su 디렉토리 에서도 찾음
- aroma: 화면 켜기/끄기 옵션들 추가
- aroma: DoubleTap2Sleep 옵션 추가
- aroma: 문자열들을 보기 좋게 수정함.
- aroma: 설명 더욱 추가
- aroma: 블럭 옵션 추가

== 리커버리 ==
- jolla-kernel_bullhead_II-v11.1 적용

<b><#selectbg_g>[bullhead_II-v11.0]</#></b>
== 커널 ==
>> 공통 <<
- leds-qpnp, mdss: mdss 백라이트 값에 기반하여 충전 LED 밝기 조정
(백라이트 밝기를 조정하였을 경우, 케이블을 재연결한 후 LED 밝기가 바뀝니다.)
- cpufreq: ironactive 거버너 제거
(현재 interactive 거버너와 99% 일치함.)
- sched/loadavg: Fix loadavg artifacts on fully idle and on fully loaded systems
- sg: Fix double-free when drives detach during SG_IO
- af_unix: 일부 업스트림 패치들 적용
- msm_thermal: system_power_efficient_wq 에 큐 할당

== AIO ==
- f2fs-tools: cm-14.1 소스로 리베이스
- multirom: 빌드 플랫폼을 cm-14.1 로 변경
- multirom: Password UI 에서 메인롬 자동 부팅
- multirom: 테마들 순서를 거꾸로 하고 블랙 테마를 기본 값으로 설정
- multirom: 패턴의 점들과 라인들의 색상 변경
- multirom: Password UI 애서 자동 부팅 스킵시 메세지 표시
- multirom: 가능성 있는 boot.img truncation 수정
- multirom: 잠재적인 세그멘테이션 오류 수정
- multirom: 'force autoboot' 에 대하여 파티션 정보 수정
- multirom: file_contexts[.bin] 바이너리 파일 지원
- multirom: multirom: core: Android 7.1 /cache symlink 지원
- multirom: Fix: Android 7.x 에서 fstab 에 /data 요소가 필요 (개발자 옵션 충돌 문제 해결!)
- multirom: 세컨 롬들 부팅시 pw_ui 에서 자동 부팅 하지 않음
- multirom: multirom: 기본 밝기를 149 로 설정

== 리커버리 ==
- 최신 cm-14.1 소스들과 새로운 f2fs-tools 로 재빌드함
- jolla-kernel_bullhead_II-v11.0 적용

<b><#selectbg_g>[bullhead_II-v10.3]</#></b>
== 커널 ==
>> Android 6.0.1 <<
- sdcardfs: 외부 저장소가 잘못된 uid 를 내보내는 것을 수정  (포토 앱과 같은 권한 거부 문제 수정.)
(Android 6.0.1 에서 빠뜨렸습니다..)
- power: qpnp-smbcharger: 누가로 부터 패치들 적용

>> 공통 <<
- selinux: 중복된 코드들 제거
- cpufreq: ironactive 거버너 추가
- workqueues: Power efficient workqueue 지원
- power: smbcharger: system_power_efficient_wq 에 큐 할당
- power: bcl: system_power_efficient_wq 에 큐 할당
- power: qpnp-fg: system_power_efficient_wq 에 큐 할당
- f2fs: dev 브랜치 패치들 커널 소스에 맞게 적용 함

== AIO ==
- updater-script: Android 7.1.1 에서 빠진 sdcardfs 활성화 추가
- f2fs-tools: dev 브랜치 패치들 기존 소스에 맞게 적용 함

== 리커버리 ==
- 최신 cm-14.1 소스들과 새로운 f2fs-tools 로 재빌드함
- jolla-kernel_bullhead_II-v10.3 적용

<b><#selectbg_g>[bullhead_II-v10.2]</#></b></@>
== 커널 ==
>> Android 7.0.0 & Android 7.1.1 <<
- sdcardfs: CyanogenMod/android_kernel_oneplus_msm8996 로 부터 패치들 적용
- sdcardfs: 외부 저장소가 잘못된 uid 를 내보내는 것을 수정  (포토 앱과 같은 권한 거부 문제 수정.)

>> 공통 <<
- Linaro gcc 6.2.1-2016.11-rc2 로 빌드
- mdss: 화면이 꺼진 상태에서 마이크 이용중 mdss 를 끔
- kexec: hardboot 영역 분리 및 일부 매크로들 수정

== AIO ==
- sdcardfs: 비활성화 되었을때만 클린업
- sdcardfs: 불필요한 라인들 제거 및 sdcardfs 가 이미 활성화 되어있을때 빈 라인들이 추가되는 현상 수정
- sdcardfs: sdcardfs 를 기본으로 활성화
- lang: sdcardfs 에 대해 일부 스트링들 수정
- lang: SOVC 에 대해 일부 스트링들 수정
- 맞지 않는 서명들 제거
- 저의 self signature 로 사인함

== 리커버리 ==
- Linaro gcc 6.2.1-2016.11-rc2 로 빌드
- 빌드 플랫폼을 cm-14.1 로 변경
- recovery: Add support to brick a device.
- recovery: Track the name change for wipe_ab.
- Verify wipe package when wiping A/B device in recovery.
- bootloader_message 정적 라이브러리 생성. (Squashed)
- cm-14.1 에서의 빌드 에러들 수정
- multirom: ext4 이미지 생성시 'file_contexts.bin' 사용
- file_contexts.bin 를 먼저 사용하고 이가 존재하지 않을 경우 file_contexts 사용
- jolla-kernel_bullhead_II-v10.2 적용

<b><#selectbg_g>[bullhead_II-v10.1]</#></b>
== 커널 ==
>> Android 6.0.1 <<
- 10.0 에서 빠진 2 커밋들 적용 (온도 수정, NULL 포인터 dereference 수정)

>> 공통 <<
- sdcardfs: 파일들을 non-mappable 로 표시함
- touchscreen, mdss: Sweep2Sleep 구현
- power: wakeup: wakeup 소스가 활성화 상태일때만 비활성화 하도록 시도
- power: wakeup: ipa_ws 옵션 추가

== AIO ==
- Android 버젼 스트링들 수정
- ramdisk: ramdump 와 bugreport 복원

== 리커버리 ==
- jolla-kernel_bullhead_II-v10.1 적용

<b><#selectbg_g>[bullhead_II-v10.0]</#></b>
== 커널 ==
>> 공통 <<
- Android 7.1.x 지원
- Google 11월 패치들 적용
- sovc: dt2w 나 s2w 가 활성화 되었을 때 sovc 강제 끄기가 작동하지 않는 문제 수정
- sovc: 가끔 A2DP 가 정지되었거나 블루투스가 꺼졌을 때 SOVC 가 비활성화 되지 않는 문제 수정
- sovc: 통화 종료후 SOVC 가 비활성화 되지 않는 문제 수정
- sovc: s2w 가 활성화 되어있고 'sovc_force_off=true' 상태일 때 DT2W 가 작동하는 문제 수정
- sovc: S2W 가 활성화 되었을 때 트랙 변경 무시
- sovc: 사용자 공간의 값이 이전값과 일치할 때 스킵
- sovc: 블루투스 기기 사용중에 트랙 전환시 터치스크린이 켜져 있도록 함
- sovc: sovc 가 필요할 때 등록함
- s2w: 화면이 일시정지 상태일때만 등록
- msm_thermal: poll_ms 파라미터 추가
- msm_thermal: msm8992.dtsi: poll-ms 증가
- msm_thermal: msm8992.dtsi: 온도 제한 감소
- msm_thermal: 빅 클러스터의 작동 분리
(장치를 시원하고 부드럽게 함. 낮은 온도에서 부드러운 성능을 얻을 수 있음.)
- i2c: core: 레이스 컨디션에 의한 NULL 포인터 dereference 수정

== AIO ==
- Android 7.1.x 지원 추가

== 리커버리 ==
- MultiROM: Fix installation of zip files missing updater-script
- multiromedify: check for run_program umount command
- MultiROM: 컴파일 경고들 수정
- 버젼 스트링을 3.0.2-3 으로 변경
- jolla-kernel_bullhead_II-v10.0 적용

<b><#selectbg_g>[bullhead_II-v9.1]</#></b>
== 커널 ==
>> 공통 <<
- Linaro gcc 6.2.1-2016.11-rc1 로 빌드
- Linux 3.10.104
- ksm: 업스트림 변경 사항들 적용
- f2fs: f2fs-stable 브랜치 패치들 적용
- nanohub: marlin 으로 부터 Android 7.1 변경사항 적용
- lowmemorykiller: marlin 으로 부터 Android 7.1 변경사항 적용
- arm, kbuild: "make install" 이 vmlinux 에 의존하지 않도록 함
- arm64: kbuild: "make install" 이 vmlinux 에 의존하지 않도록 함
- arm64: libgcc 의존성 없앰
- kbuild: arm: "comma" 를 두번 정의 하지 않음
- kgsl: 일부 workqueue 들이 kthread 를 사용하도록 함 (from marlin)
- mdss: vsync_retire_work_handler 에 대해 kthread 를 사용하도록 함 (from marlin)
- proc: 더 빠른 /proc/vmstat
- 변경 사항 취소 "sched/fair: Fix fairness issue on migration"
- proc: verifiedbootstate 플래그를 /proc/cmdline 로 부터 제거함

** Dirtycow patch 는 이미 이전에 Linux 3.10.x 변경 사항들에서 적용되었습니다. **

== AIO ==
- ramdisk: fstab.bullhead: /data 에 대해 readahead 감소
- N 에서의 sdcardfs 지원 수정
- langs: 7.0.x 를 7.x.x 로 변경

== 리커버리 ==
- jolla-kernel_bullhead_II-v9.1 적용

<b><#selectbg_g>[bullhead_II-v9.0]</#></b>
== 커널 ==
>> 공통 <<
- 변경사항 취소 "sched: Force sleep on consecutive sched_yields"
- net: sch_generic: Allow devices to opt-out net watchdog
- [backport] sched, nohz: Change rq->nr_running to always use wrappers
- 변경사항 취소 "lib: do_strncpy_from_user: Fix return error code for get_user failures"
- 변경사항 취소 "lib: align source before using optimized implementation"

== AIO ==
- fstab.bullhead: 누가 변경 사항들 적용

== 리커버리 ==
- AROMA 인스톨러로 설치중에 화면 잠금 해제가 안되는 문제 수정
- Android 7.0 업데이트 스크립트 실패 문제 해결
- Support symlinked init in ramdisk
- Fix missing variables
- omnirom/android_bootable_recovery 로 부터 android-7.0 변경 사항들 적용
- jolla-kernel_bullhead_II-v9.0 적용

<b><#selectbg_g>[bullhead_II-v8.2]</#></b>
== 커널 ==
>> 공통 <<
- msm_thermal: big 의 주파수에 좀 더 제한을 줌
- msm_thermal: 수정가능한 옵션들에 코멘트 추가
- msm_thermal: 잘못된 타겟 index 수정
- sovc: 변경된 값 체크하지 않음
- sovc: 몇몇 불필요한 'sovc_force_off' 체크들 제거
- sovc: 가끔 블루투스 연결이 끊어진 후에도 sovc 가 비활성화 되지 않는 문제 수정
- sovc: A2DP 상태를 변경하는 동안 'sovc_scroff_volctr_temp_dump' 에 Lock 을 검
- f2fs: f2fs-stable 브랜치 패치들 적용

== AIO ==
- 'cleaner.sh' 제거
- A2DPChecker: 라이브러리 업데이트 및 일부 접근제어자들 클린업

== 리커버리 ==
- jolla-kernel_bullhead_II-v8.2 적용

<b><#selectbg_g>[bullhead_II-v8.1]</#></b>
== 커널 ==
>> 공통 <<
- 누가의 10월 패치들 적용 (Wi-Fi 패치들은 M에서 제외.)
- sovc: 블루투스의 A2DP 재생 상태 저장
- cpufreq: cpu-boost: boost the input boost notifier to max prio
- cpufreq: cpu-boost: 터치시에 바보 같은 빅 클러스터가 부스트 되로록 함
- cpufreq: interactive: hispeed_freq init 제한 제거
- UPSTREAM: 일부 잠재적인 문제들 수정
- UPSTREAM: net diag 업스트림 패치들 적용

== AIO ==
- init.bullhead.rc: 리틀의 부스트 증가 및 빅의 부스트 활성화
- init.bullhead.rc: 리틀의 target_loads 조절

== 리커버리 ==
- jolla-kernel_bullhead_II-v8.1 적용

<b><#selectbg_g>[bullhead_II-v8.0]</#></b>
== 커널 ==
>> 공통 <<
- 더 나아진 성능과 더 좋아진 배터리
- 소스 클린업
- Linux 3.10.103
- 9월 패치들 적용
- Linaro gcc 6.1.1-2016.08-rc2 로 빌드
- mmc: crc 체크 비활성화
- block: add_random 비활성화
- block: scheduler: ZEN v2 추가
- block: zen: eMMC 와 CPU 의 부하를 줄이기 위해 fifo batch 를 16으로 설정
- arp: arp_project의 sysfs 노드들과 arp_print_info export
- arp: 이미 include 된 라인 제거
- arp, net/core: Export 들 수정
- 변경 사항 취소 "arp: Request 가 수행되지 않았거나 소스 IP가 Request 했던 타겟 IP 와 다를때 Reply 무시"
- arp: 시간 정보 제거
- arp: 'print_arp_info' 를 더 일찍 체크
- arp: 게이트웨이 탐지 수정
- arp: ignore_gw_update_by_reply 옵션 추가
- arp: memcpy 클린업, 'arp_print_info' 에 있는 필요없는 않는 변수들 제거
- Power efficient workqueue 제거
- f2fs: stable branch 로 되돌아가고 lazytime 패치 적용
- sovc: 재생중 상태 notifier 추가와 *~tmp 포인터들 클린업 + 몇몇 버그들 수정
- tcp_cubic: Hystart 가 얼마나 효과적인지 추적하기 위해 SNMP 카운터들 추가
- tcp_cubic: Hystart delay threshold 수정
- inet_diag: tcp cc 정보 액세스 수정
- tcp: CDG 혼잡 제어 추가
- tcp: cdg: div_u64() 사용
- tcp: tcp_in_slow_start helper 추가
- tcp: cwnd 가 ssthresh 와 같을 때 천천히 시작하지 않음
- tcp: tcp_enter_cwr 와 tcp_init_cwnd_reduction 의 불필요한 인수들 제거
- proc: jolla-kernel 의 버젼 정보 추가
- msm_thermal: 일부 잘못된 로직들 수정
- msm_thermal: 발열 감소와 기기 성능 증가
- msm_thermal: 'freq_step' 파라미터 추가
- msm_thermal: core_control 와 freq_control 디버그 옵션 추가

== AIO ==
- init.d: 오래된 라인들 제거 및 seclabel 추가
- aroma: N의 이름을 Nougat 로 수정 후 기본값으로 설정
- kcal 과 sovc 비활성화가 작동하지 않는 문제 수정.
- updater-script: 'jolla-kernel.prop' 설치 라인들 제거
- sepolicy 패치 제거
- aroma: MultiROM 라이센스 추가
- aroma: license: ko: '<U+FEFF>' 제거.
- multirom: Linaro gcc 6.1.1-2016.08-rc2 로 빌드

== jolla-kernel Updater ==
- 라이브러리들 업데이트
- 강제 종료 문제들 수정
- v1.5 로 버젼업

== 리커버리 ==
- Linaro gcc 6.1.1-2016.08-rc2 로 빌드
- 3.0.2-2
- init.recovery.bullhead.rc: 파워 설정들 추가
(리커버리를 사용할 때 기본 거버너가 'performance' 로 되어있어서 기기가 매우 뜨거워 집니다.
또한 리커버리 모드에서 장시간 켜놓았을때 제 보드가 나갔습니다.
따라서 안전을 위해 거버너를 'interactive' 로 바꾸고 파워 설정들을 추가했습니다.)
- jolla-kernel_bullhead_II-v8.0 적용

<b><#selectbg_g>[bullhead_II-v7.0]</#></b>
== 커널 ==
>> 공통 <<
- 변경 사항 취소 "msm: mdss: support parallel execution of MDSS_EVENT handlers"
- workqueues: 파워 지향 WQ_POWER_EFFICIENT 새 플래그 소개
- power efficient workqueue 사용 - firmware, net/wireless, rcu, net/ipv4,
      PHYLIB, ASoC, net/neighbour, timekeeping, net/rfkill, usb, regulator/core
- BACKPORT: Bluetooth: RFCOMM bind callback 의 잠재적인 NULL dereference 수정
- net: ipv6: 링크 로컬 주소로의 핑 수정
- ipv6: icmpv6_err 의 endianness 에러 수정
- 업스트림의 (CVE-2016-5696) 변경 사항 취소
- [PATCH v3 3.10.y] tcp: make challenge acks less predictable (CVE-2016-5696)
- arp: 작업을 power efficient workqueue 에 할당
- touchscreen: synaptics: 작업을 power efficient workqueue 에 할당
- touchscreen: sovc: 작업을 power efficient workqueue 에 할당
- touchscreen: dt2w: 작업을 power efficient workqueue 에 할당
- touchscreen: s2w: 작업을 power efficient workqueue 에 할당
- net: cnss: 작업을 power efficient workqueue 에 할당
- net: wcnss: 작업을 power efficient workqueue 에 할당
- qcacld-2.0: 작업을 power efficient workqueue 에 할당
- touchscreen: sovc: 화면이 켜졌을때 sovc_auto_off_check_work 취소
- f2fs: 최신 dev 브랜치 패치들 적용

>> N <<
- mdss: mdp3: 유저 스페이스 입력 검증

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- 암호화된 Android N 기기에서의 복호화 수정
- bionic: add fortified implementations of write/pwrite{,64}
  (N 에서의 복호화 수정후 멀티롬 설치 문제 수정)
- jolla-kernel_bullhead_II-v7.0 적용

<b><#selectbg_g>[bullhead_II-v6.3]</#></b>
== 커널 ==
>> 공통 <<
- sovc: 자동 끄기 지연시간이 길어지는 문제 수정
- sovc: 자동 끄기 지연시간의 기본값을 2.5초로 줄임
- tcp: make challenge acks less predictable (CVE-2016-5696)

>> N <<
- Revert "bullhead-nanohub: 올바르게 테이블 매칭"
- Revert "bullhead-hardboot: N 에서 M 으로 부팅했을시 회전 문제 수정"
(기존 방법이 큰 배터리 드레인을 발생시킴.)
- bullhead-sensorhub: M 으로 hardboot 이 수행될때의 호환성 추가

>> M <<
- bullhead-sensorhub: hardboot 이 수행되었을때 작동하기 위해 라벨들 이름 변경

== AIO ==
- sovc: 설정할 수 있는 자동 끄기 지연시간 값들 조정
- multirom: kexec-tools 를 2.0.13 으로 업데이트

== 리커버리 ==
- jolla-kernel_bullhead_II-v6.3 적용

<b><#selectbg_g>[bullhead_II-v6.2]</#></b>
== 커널 ==
>> 공통 <<
- Linaro gcc 6.1.1 로 빌드
- 빠른 zram
- Linux kexec 업스트림 변경사항들 적용
- netfilter: x_tables: make sure e->next_offset covers remaining blob size
- CHROMIUM: android: binder: Fix potential scheduling-while-atomic
- UPSTREAM: netfilter: x_tables: validate e->target_offset early
- qseecom: added small sleep between busy-wait calls to TZ
- cpufreq: interactive: Honor changed minimum frequency
- cpufreq: interactive: Consider changed min limit a frequency boost
- msm: mdss: revert to stock wait_event behaviour on display threads. Was causing some weird lockups in some games
- xpad: 최신 업스트림 버젼
- ashmem: fix CVE-2016-5340
- arm64: dma-mapping: always clear allocated buffers
- arp: 'for' 구문들의 스페이스들 수정
- arp: arp_find_gw 에서 잘못된 return 수정
- power:qpnp-charger: extended charge time from 30s to 100s when battery status is near to full
- qcacld-2.0: misleading-indentation 경고들 수정

>> N <<
- bullhead-hardboot: N 에서 M 으로 부팅했을시 회전 문제 수정
- bullhead-nanohub: 올바르게 테이블 매칭

== AIO ==
- init.bullhead.rc: 불필요한 라인들 제거
- N 의 퍼포먼스 문제 수정
- updater: jolla-kernel Updater v1.4 (N 에서의 강제 종료 문제 수정.)
- aroma: PNG 파일들 최척화 및 사이즈 줄임
- f2fs-tools: 릴리즈 1.7.0
- multirom: 바이너리들 재빌드 및 라이브러리들 업데이트 (Linaro gcc 6.1.1)

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- adb backup 지원 및 Restore_Partition 변경사항들의 변경사항들 취소 (multirom 복원 망가뜨림.)
- jolla-kernel_bullhead_II-v6.2 적용

<b><#selectbg_g>[bullhead_II-v6.1]</#></b>
== 커널 ==
>> 공통 <<
- Google 의 보안 업데이트들 적용

== AIO ==
- ramdisk: sepolicy 업데이트
- 다양한 롬들에 대해 sdcardfs 지원

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead_II-v6.1 적용

<b><#selectbg_g>[bullhead_II-v6.0]</#></b>
== 커널 ==
>> 공통 <<
- UPSTREAM: KEYS: Fix ASN.1 indefinite length object parsing
- f2fs: dev 브랜치 최신 패치들 적용
- 잘가요 msm_hotplug
- zram: lz4 를 기본 compressor 로 사용
- ksm: prepare to new THP semantics
- qcacld-2.0: HIFTargetSleepStateAdjust 의 trace 비활성화
- radix-tree: fix radix_tree_iter_retry() for tagged iterators.
- sdcardfs: 구글 업데이트 적용
- Appiled CyanogenMod/android_kernel_oneplus_msm8996 로 부터 crypto 패치들 적용

>> M <<
- sdcardfs: CyanogenMod/android_kernel_oneplus_msm8996 로 부터 패치와 수정 사항들 적용

== AIO ==
- ramdisk: init.bullhead.rc: LZ4 가 이제 기본이다.
- ramdisk: sepolicy 업데이트
- cm-13.0 를 위한 sdcardfs 지원

== 리커버리 ==
- 새 cm-13.0 소스들로 재빌드
- jolla-kernel_bullhead_II-v6.0 적용

<b><#selectbg_g>[bullhead_II-v5.1]</#></b>
== 커널 ==
>> 공통 <<
/* lazytime 관련 하여 몇몇 패치들 적용 */
- fs: lazytime inode 들의 타임스태프가 제대로 쓰여지게 함
- fs: dirtytime_expire_seconds sysctl 추가
- ext4: lazytime 최적화 수정

- vfs: get_next_ino 에서 0 인 inode 를 생성하지 못하게 함
- ext4: ext2 마운트 들에 대헤 저널 옵션 무시
- mdss: 4K 비디오들의 플레이 문제를 방생하는 일부 변경사항들 취소
- 몇몇 업스트림 패치들 적용
- cpufreq: interactive: franco 로 부터 일부 변경 사항들 적용

== AIO ==
- ramdisk: init.superuser.rc: su_daemon 의 selinux 권한 수정
- multirom_hack.sh: otg.prop not found 에러 수정
- updater-script: 세컨롬들에서 MultiROM 설치시 무시하도록 함

== 리커버리 ==
- jolla-kernel_bullhead_II-v5.1 적용

<b><#selectbg_g>[bullhead_II-v5.0]</#></b>
== 커널 ==
>> 공통 <<
/* lazytime 마운트 옵션 지원 */
- vfs: lazytime 마운트 옵션 지원 추가
- f2fs: lazytime 마운트 옵션 지원
- f2fs: dev 브랜치 최신 패치들 적용
- ext4: lazytime 마운트 옵션을 위한 최적화 추가
- ext4: mount 에 의해 MS_LAZYTIME 이 설정 되었을때 리마운트시 lazytime 설정

/* 일부 android-msm-bullhead-3.10-marshmallow-dr1.6 변경 사항들 취소 */
- 변경사항 취소 "mdss: mdp3: Validate input from userspace" (배터리 드레인 발생.)
- 변경사항 취소 "ASoC: msm: audio-effects: misc fixes in h/w effects (update)" (스피커 사운드를 작게함.)
- 변경사항 취소 "ASoC: msm: audio-effects: misc fixes in h/w accelerated effect"

/* sovc 와 dt2w 를 위한 일부 수정 사항들 */
- touchscreen: sovc: 터치스크린을 끌때 진동을 두번 울림
- touchscreen: sovc: work 구조체를 큐에 넣기 전에 터치 상태를 확인
- touchscreen: sovc, synaptics: touch off 작업의 레이스 컨디션 방지
- touchscreen: dt2w: 불필요한 scr_suspended 체크 제거

== AIO ==
/* ext4 와 f2fs 파티션들에 대해 lazytime 마운트 옵션 활성화 */
- ramdisk: fstab.bullhead: ext4 파티션들에 대해 discard 옵션 활성화
- ramdisk: fstab.bullhead: noatime,nodiratime 옵션들을 lazytime 으로 변경
- ramdisk: fstab.bullhead: persist 파티션에 대해 lazytime 옵션 활성화
- ramdisk: fstab.bullhead: system 과 vendor 에 대해 lazytime 옵션 활성화
- ramdisk: fstab.bullhead: vendor 에 대해 barrier 비활성화

== 리커버리 ==
- jolla-kernel_bullhead_II-v5.0 적용

<b><#selectbg_g>[bullhead_II-v4.1]</#></b>
== 커널 ==
>> 공통 <<
- android-msm-bullhead-3.10-marshmallow-dr1.6 변경 사항들 적용

== AIO ==
- OTG 에서의 멀티롬이 이제 작동합니다!!
- multirom: OTG 경로 수정 + 업데이트된 소스들과 함께 재빌드
- OTG 에서의 설치 수정
- ramdisk: sepolicy 업데이트
- A2DPChecker: 메인 액티비티를 열때 SU 실행

== 리커버리 ==
- 업데이트된 소스들과 함께 재빌드
- jolla-kernel_bullhead_II-v4.1 적용

<b><#selectbg_g>[bullhead_II-v4.0]</#></b>
== 커널 ==
>> 공통 <<
- touchscreen: synaptics: resume 이나 suspend 시 lock 수행 및 suspend 된 상태 체크
  (사운드가 켜진 상태에서 화면을 킬때 발생하는 터치스크린 문제 완벽하게 수정.)
- lib: bitmap: Linux 업스트림 패치들 적용
- lib: string: Linux 업스트림 패치들 적용
- strnicmp 를 strncasecmp 로 교체
- lib: rbtree: Linux 업스트림 패치들 적용
- lib: sort: Linux 업스트림 패치들 적용
- lib: strncpy_from_user: Linux 업스트림 패치들 적용
- ARM: 8187/1: add CONFIG_HAVE_ARCH_BITREVERSE to support rbit instruction
- ARM: 8189/1: arm64:add bitrev.h file to support rbit instruction
- bullhead_defconfig: CONFIG_HAVE_ARCH_BITREVERSE 활성화
- ALSA: 6fire: Convert byte_rev_table uses to bitrev8
- msm: mdss: fb 켜기에 실패했을때 수행되지 않는 unlock 수정
- lib: crc32: Linux 업스트림 패치들 적용
- lib: decompress_inflate: Linux 업스트림 패치들 적용
- lib: decompress_unlzma: Linux 업스트림 패치들 적용
- 변경사항 취소의 취소 "gpiolib: add IRQF_ONESHOT flag for shared IRQ"
  (터치스크린 문제가 수정됨.)

>> M <<
- 변경사항 취소의 취소 "msm: mdss: trigger frame timeout when recovery is in progress"
  (터치스크린 문제가 수정됨.)

== 리커버리 ==
- jolla-kernel_bullhead_II-v4.0 적용

<b><#selectbg_g>[bullhead_II-v3.1]</#></b>
== 커널 ==
>> 공통 <<
- arm64: Revert jump label patches and disable it
  (jump label 패치들을 적용및 활성화 하고 난 후 USB 테더링이 정상적으로 동작하지 않음.)
- 변경 사항 취소 "fpc1020_tee: 지문 센서가 터치되었을 때 sched 부스트 수행"
  (느린 인식 속도가 이미 수정됨.)
- net: core: Send ARP probe and trigger RTM_NEWNEIGH
- net: core: To send ARP probe when neighbor state is NUD_STALE
- net: core: Release neigh lock when neigh_probe is enabled
- net: add a per-cpu counter for the number of frames coalesced in GRO

>> M <<
- bullhead: wlan 펌웨어 파일들을 커널에 포함시킴
- qcacld-2.0: rps cpu map 을 ini 설정 파일로 부터 읽어 들이도록 함
- qcacld-2.0: CyanogenMod/android_device_nextbit_ether 의 ini 설정 파일 사용
- qcacld-2.0: rpsRxQueueCpuMapList 문제점 수정
- qcacld-2.0: WCNSS_qcom_cfg.ini: rpsRxQueueCpuMapList 올바르게 설정

== 리커버리 ==
- jolla-kernel_bullhead_II-v3.1 적용

<b><#selectbg_g>[bullhead_II-v3.0]</#></b>
== 커널 ==
>> 공통 <<
- cpuidle: 본래 드라이버로 되돌림 (배터리 드레인 현상 발생.)
- 변경사항 취소 "gpiolib: add IRQF_ONESHOT flag for shared IRQ"
  (sovc 가 활성화 되어있을때 가끔 터치스크린 드라이버가 정상적으로 작동하지 않는 현상 발생.)
- arm64: 불필요한 일부 변경 사항들 취소
- arm64: jump label 변경 사항들 적용
- wlan: CyanogenMod/android_kernel_nextbit_msm8992 로 부터 일부 변경 사항들 적용
- cpufreq: impulse: Use wake_up_process_no_notif to wake up tasks
- sync: Permit out-of order sync users
- qos: Register irq notify after adding the qos request
- qos: wake up cores based on the qos updated cpu mask

>> M <<
- wlan: qcacld-2.0: CyanogenMod/android_kernel_nextbit_msm8992 로 부터 일부 변경 사항들 적용

>> N <<
- N Preview 4 변경 사항들 적용

== AIO ==
- init.bullhead.rc: zram 의 max_comp_streams 항목 올바르게 설정
- 변경 사항 취소 "ramdisk: init.bullhead.rc: Enable retention idle state"

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead_II-v3.0 적용

<b><#selectbg_g>[bullhead_II-v2.3]</#></b>
== 커널 ==
>> 공통 <<
- Linaro GCC 5.3.1 로 빌드
- Linux 3.10.102
- touchscreen: dt2w: dt2w_doubletap2wake_tmp_dump 에서 잘못된 unregister 수정
  (블루투스를 사용하면서 dt2w 와 sovc 가 활성화된 사용자에게 발생하는 문제점 수정.)
- touchscreen, wcd9330: dt2w 와 s2w 에 대해서도 마이크 상태 확인
  (dtw 나 s2w 가 활성화 되었을 때 전화를 하는 도중 예상치 못한 터치 작업이 발생하는 문제점 수정.)
- touchscreen: synaptics: 화면이 켜졌을때 지연된 touch off 작업 취소
  (화면이 켜진 후 가끔 터치스크린이 작동하지 않는 문제점 수정.)
- arp: 다른 하드웨어 주소로 부터 게이트웨이 업데이트를 시도하려는 요청 무시
  (변조된 ARP 요청 패킷으로 부터 ARP Spoofing 막음.)
- sched: sched_upmigrate_min_nice 를 9로 설정
- sched: avoid unnecessary HMP scheduler stat re-accounting
- sched: fix incorrect wait time and wait count statistics
- sched: Provide a wake up API without sending freq notifications
- cpufreq: interactive: Use wake_up_process_no_notif to wake up tasks
- memset 경고들 수정
- compiler.h: add support for malloc attribute
- soc: qcom: rpm: Change driver memory allocation to use GFP_NOFS
- ARM: dts: msm: Enable POPP for MSM8992
- arm/dts: Fix GPU bwmon on msm8992
- msm: kgsl: CyanogenMod/android_kernel_nextbit_msm8992 로 부터 일부 패치들 적용
- arm64: CyanogenMod/android_kernel_nextbit_msm8992 로 부터 일부 패치들 적용
- lpm, cpuidle, spm: CyanogenMod/android_kernel_nextbit_msm8992 로 부터 일부 패치들 적용
- qos: Disable irq notifier when qos request is removed
- net: Send only BIND and LISTEN events
- 변경사항 취소 "timer: Queue timers on least power cpu"
- CPU hotplug, smp: flush any pending IPI callbacks before CPU offline
- irq_work: Remove BUG_ON in irq_work_run()

>> N <<
- wlan: qcacld-2.0: N 의 기본 드라이버로 되돌림

== AIO ==
- multirom: Linaro GCC 5.3.1  로 재빌드
- f2fs-tools: 최신 dev 브랜치 패치들을 적용하고 Linaro GCC 5.3.1  로 빌드
- ramdisk: init.bullhead.rc: Enable retention idle state

== 리커버리 ==
- Linaro GCC 5.3.1 와 cm-13.0 최신 소스들로 재빌드
- jolla-kernel_bullhead_II-v2.3 적용

<b><#selectbg_g>[bullhead_II-v2.2]</#></b>
== 커널 ==
>> 공통 <<
- wlan: qcacld-2.0: caf 드라이버 (LA.BF64.1.2.2-05240-8x94.0) 를 사용하고
  CyanogenMod/android_kernel_nextbit_msm8992 로 부터 패치들 적용
  (끊김 현상 없어짐.)
- bullhead_defconfig: SCHED_FREQ_INPUT 비활성화
  (이 옵션이 지문 인식 시간을 엄청 느리게 하는 것으로 보임. 따라서 비활성화.)
- 변경 사항 취소 "bullhead_defconfig: NF_TARGET_REJECT_SKERR 비활성화"

>> M <<
- netfilter: IDLETIMER: lockdep 경고 수정 (N 에서 가져옴)

== 리커버리 ==
- jolla-kernel_bullhead_II-v2.2 적용

<b><#selectbg_g>[bullhead_II-v2.1]</#></b>
== 커널 ==
>> 공통 <<
- mdss: 잘못된 EXPORT_SYMBOL 수정

>> M <<
- 변경 사항 취소 "msm: mdss: trigger frame timeout when recovery is in progress"
(화면을 키는 중에 가끔 타임아웃 에러가 발생함.)

== 리커버리 ==
- jolla-kernel_bullhead_II-v2.1 적용

<b><#selectbg_g>[bullhead_II-v2.0]</#></b>
== 커널 ==
- 빠릿하고 부드러운 성능, 배터리 사용시간 향상

>> 공통 <<
- Linux 3.10.101
- msm_hotplug: 몇몇 버그들을 수정하고 기본으로 비활성화
(여러번의 테스트를 통해, 저희 기기인 bullhead 와 최신 기기들에게 핫플러깅이 필요 없습니다.
핫플러깅 없이 더 빠르고 부드러우며 긴 배터리 시간을 보여줍니다.)
- arp:Linux Kernel master 브랜치의 최신 변경 사항들 적용
- arp_project applied (ARP 스푸핑 공격 방어 프로젝트. 지속적으로 업데이트 될 예정입니다.)
- arp_project: Request 가 수행되지 않았거나 소스 IP가 Request 했던 타겟 IP 와 다를때 Reply 무시
- kcal: 노란 액정 수정 옵션 추가
- f2fs: stable 브랜치의 최신 변경 사항들 적용
- sched: 기본 값들을 커널 단에서 적용
- bullhead_defconfig: 빠뜨린 conservative 거버너 추가
- sound: franco 의 사운드 제어 드라이버 사용
- mdss: fb: backlight dimmer(백라이트 단계를 부드럽게 하는 옵션) 옵션 활성화
- fingerprint: 지문 센서가 터치되었을 때 sched 부스트 수행
- PM / devfreq: 일부 msm-3.10 변경 사항들 적용
- others: 일부 msm-3.10 변경 사항들 적용
- CyanogenMod/android_kernel_nextbit_msm8992 로 부터 몇몇 수정 사항들 적용

>> M <<
- marshmallow-dr1.6 변경사항들 적용
- wlan: N Preview 3 wlan 드라이버 적용
- sdcardfs 지원
- N Preview 3 로 부터 몇몇 변경 사항들 적용

>> N <<
- Applied N Preview 3 변경 사항들 적용

== AIO ==
- updater-script: sovc_auto_off_delay 값이 변경 되었을 때 빠진 init.d 지원 추가
- bullhead: max_comp_streams 가 적용되지 않는 문제 수정
- ramdisk: init.bullhead.rc: msm_hotplug 를 끄고/켜지 않음 (기본으로 비활성화 됨)
- kcal_fix_yellow on/off 옵션 추가
- f2fs: f2fs-tools 업데이트
- ramdisk: franco 로 부터 devfreq 트윅들 적용

== 리커버리 ==
- jolla-kernel_bullhead_II-v2.0 적용

<b><#selectbg_g>[bullhead_II-v1.0]</#></b>
== 커널 ==
>> 공통 <<
~~~~~ 새 jolla-kernel_bullhead_II 를 소개 합니다 !! ~~~~~
- 최신 Google msm 소스들로 다시 제작.
- 소스 클린업.
- 매우 개선된 배터리 시간, 배터리 드레인 현상들 수정.
- Linux 3.10.y 업스트림 패치들 적용하지 않음.
  (우리에게 필요한 패치들만 적용하는 것이 좋아보임.)
- UKSM 에서 KSM 으로 변경.
- 몇몇 KSM 업스트림 패치들 적용.
- 배터리 시간을 위해 KSM 기본 값들을 조정
- 올바르게 재가동/일시정지 되는 KSM
  (KSM 은 기본으로 활성화 되어있습니다. 화면이 꺼졌을때 멈추고 화면이 켜지면 다시 작동합니다.
   이것은 장치가 suspend 되었을시 배터리를 절약합니다.)
- EAS 패치들을 적용하지 않고 일부 패치들이 적용된 기본 sched 사용.
  (이 패치 없이 장치가 더 부드럽고 더 좋은 성능을 보여줍니다.
   대신에 프랑코 커널로 부터 sched 와 mm 패치들을 적용하였습니다.)
- f2fs의 소스를 stable 브랜치로 변경.
  (제가 이전에 dev-test 브랜치를 사용하였는데 에러들과 베터리 드레인 현상을 보여주었습니다.
   stable 로 변경 후 아무런 문제들이 없었습니다.)
- SOVC 를 사용중일때 음악이 정지된 후 터치스크린과 디스플레이 패널이 올바르게 꺼집니다.
  (Before: 디스플레이 패널이 resume 상태로 남아있고, 터치스크린이 몇몇 상황에서 제대로 꺼지지 않았습니다.
   After: 이제 제가 이러한 문제들을 해결했고 더이상 배터리 드레인 현상이 없습니다!!)
- SOVC 를 위한 터치스크린 자동 끄기 구현.
  (터치스크린을 오랜 시간 동안 누르고 있으면 터치스크린이 꺼집니다.
   잘못된 터치스크린 작동으로 부터 보호하고 걷는 동안 장치를 쥐고 있을 수 있게 합니다.
   기본값은 4초 이고 아로마 인스톨러에서 이 값을 변경 할 수 있습니다.)
- 이제, msm_hotplug 가 작동중일 때 빅코어들의 거버너 설정을 변경 할 수 있습니다!!
  (마침내, 제가 이 짜증나는 문제를 해결했습니다! Kernel Adiutor 에서 잘 작동합니다.
   Kernel Adiutor 의 CPU/거버너 설정에 들어가면 첫번째 빅코어를 켭니다.
   CPU/거버너 설정을 나가고 5초가 지나면 다시 정상적으로 작동합니다.)
- 터치스크린 드라이버에 있는 suspend/resume 작업들을 제거하고 각각의 드라이버마다 FB notifier 사용.
  (터치스크린 드라이버에 엄청난 suspend/resume 작업들이 있었습니다.
   이제 suspend/resume 작업들의 각각의 드라이버 마다 개별적으로 작동합니다.)
- Screen Off Volume Control, DoubleTap2Wake, Sweep2Wake suspend/resume 작업들 개선.
- cpu_up 작업의 race condition 수정.

== AIO ==
- ramdisk: sepolicy 바이너리 업데이트
- sovc_auto_off_delay 설정 옵션 추가
- A2DPChecker: SOVC 를 올바르게 비활성화 하기 위해 연결 끊김 상태 체크
- ramdisk: init.bullhead.rc: big 코어들에 대해 최소 클럭값 사용
- ramdisk: init.bullhead.rc: 거버너 설정을 변경하는 동안 msm_thermal 끄기

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead_II-v1.0 적용

<b><#selectbg_g>[bullhead-v9.1]</#></b>
== 커널 ==
>> 공통 <<
- UBERTC gcc 7.0.0 20160416 으로 빌드
- msm_hotplug: up/down work 구조체를 지우고 big core up/down 향상
- msm_hotplug: DEFAULT_BIG_CORE_UP_DELAY 감소
- msm_hotplug: 중복된 target_big 계산 병합
- msm_hotplug: 저작권 업데이트
- 변경사항 취소 "msm_hotplug: HZ 를 본래 값으로 변경"
- lowmemorykiller: vmpressure 에 적합하게 함
- lowmemorykiller: false adaptive LMK triggers 회피
- lowmemorykiller: adaptive lmk 기본으로 활성화
- lowmemorykiller: 튜닝
- block: Zen I/O 스케쥴러 추가
- block: V(R) I/O 스케쥴러 추가
- block: bfq: IOPS 모드를 기본값으로 설정 하고 slice_idle 을 0 으로 설정
- bullhead_defconfig: 기본 I/O 스케쥴러를 bfq 로 변경
- mm: ksm, uksm: 기본으로 비활성화
- f2fs: page 를 얻은 후 매핑 확인 (수정됨) (커널 패닉 올바르게 수정됨.)
- f2fs: 최신 dev-test 브랜치 패치들 적용
- touchscreen: s2w, dt2w, sovc: 등록/해제 정보를 디버그 코드로 변경
- touchscreen: s2w, dt2w, sovc: 저작권, URL, 버젼 업데이트
- power_efficient workqueue 변경사항들 취소
- lib: lz4: 빅엔디안 장치들에서 lz4 와의 zram 수정
- lib: lz4: unaligned access efficiency 탐지 클린업
- lib/xz: add comments for the intentionally missing break statements
- lib/xz: enable all filters by default in Kconfig
- 변경사항 취소 "net: sched: watchdog 시간을 HZ 에서 1000 으로 변경"
- net: sched: watchdog_timeo 에 대해 "* 1000 / HZ" 수행
- bullhead_defconfig: 기본 TCP Congestion 제어를 CUBIC 으로 변경
- bullhead_defconfig: Google 과 wlan 설정 맞춤
- qcacld-2.0: caf wlan 드라이버 변경사항 취소
- qcacld-2.0: N Preview 2 의 wlan 드라이버 적용
- qcacld-2.0: __queue_delayed_work 경고 메세지 수정
- qcacld-2.0: 디버그 버젼 빌드 비활성화
- qcacld-2.0: 조용히 해라 'first packet after WOW wakeup'
- qcacld-2.0: 조용히 해라 PM runtime 메세지들아
- qcacld-2.0: 조용히 해라 resume 메세지들아
- power: quickwakeup: 드라이버 도입
- msm: lpm-levels: suspend_again 핸들러 추가
- power: catch wake-up requests in suspend_again
- security: selinux: 중복된 코드들 제거
- 변경사항 취소 "sched, smp: Correctly deal with nested sleeps"
- 변경사항 취소 "smpboot: use kmemleak_not_leak for smpboot_thread_data"

== AIO ==
- UBERTC gcc 7.0.0 20160416 으로 빌드
- f2fs: f2fs-tools 업데이트 (최신 dev 브랜치 패치들 적용)
  (여러 툴들 사용가능: mkfs.f2fs, fsck.f2fs, dump.f2fs, defrag.f2fs, resize.f2fs, sload.f2fs)
- ramdisk: sepolicy 바이너리 업데이트
- multirom: 새 cm-13.0 소스들과 빌드

== 리커버리 ==
- UBERTC gcc 7.0.0 20160416 으로 빌드
- 새 cm-13.0 소스들과 빌드
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead-v9.1 적용

<b><#selectbg_g>[bullhead-v9.0]</#></b>
== 커널 ==
>> 공통 <<
- smpboot: use kmemleak_not_leak for smpboot_thread_data
- sched, smp: Correctly deal with nested sleeps
- touchscreen: dt2w, s2w, sovc: queue_work_on 를 queue_work 로 변경
- touchscreen: s2w, dt2w, sovc: input 핸들러가 필요치 않을때 등록 해제
- touchscreen: s2w, dt2w, sovc: 매번 터치 인터럽트 발생할 때마다 is_touch_on() 호출하지 않음
- touchscreen: synaptics: 빠른 화면 on/off 를 위해 suspend/resume 에 대해 작업 구조체 만듬
- synaptics, wcd9330: 음악이 정지된 후 일부 항목이 등록해제가 안되는 점 수정
- synaptics, sovc, dt2w: 빠진 dt2w 등록 추가
- f2fs: dev-test 브랜치 패치들 적용
- f2fs: f2fs: 맵핑 확인에 빠진 put_page() 추가 (커널 패닉 수정)
- ext4 crypto: tytso 로 부터 crypto-3.14 브랜치 최신 패치들 적용
- ext4 crypto: Google n-preview-2 최신 패치들 적용
- net: sched: watchdog 시간을 HZ 에서 1000 으로 변경
- wlan: qcacld-2.0: LA.BF64.1.2.2_rb4.33 from caf
- qcacld-2.0 와 cnss 를 제외하고 Google n-preview-2 변경 사항들 적용
- vmpressure: change vmpressure::sr_lock to spinlock
- vmpressure: do not check for pending work to prevent from new work
- vmpressure: make sure there are no events queued after memcg is offlined
- mm/vmpressure.c: fix race in vmpressure_work_fn()
- msm_hotplug: HZ 를 본래 값으로 변경
- compiler.h: add support for function attribute assume_aligned
- include/linux/compiler-gcc.h: hide assume_aligned attribute from sparse
- include/linux/compiler-gcc.h: improve __visible documentation
- compiler-gcc: disable -ftracer for __noclone functions

>> N <<
- nanohub: Google n-preview-2 변경 사항들 적용

== AIO ==
- sepolicy: 바이너리 업데이트
- F2FS 바이너리 패치 추가
- 진행바 수정

== 리커버리 ==
- jolla-kernel_bullhead-v9.0 적용

<b><#selectbg_g>[bullhead-v8.4]</#></b>
== 커널 ==
>> 공통 <<
- wlan: qcacld-2.0: 스캔이 완료된 후 Runtime PM 허용
- ARM64 CRC32 하드웨어 가속 모듈을 제외하고 crypto 변경사항들 취소
  (배터리 드레인 현상 수정.)
- sdcardfs 파일시스템 추가
- PM 업스트림 변경사항들 취소
- msm: camera: actuator 메모리 누수 수정
- bullhead_defconfig: 기본 io 스케줄러 CFQ 로 변경
- msm8992.dtsi: 온도 제한 조절
- pipe: Fix buffer offset after partially failed read
- cpufreq: use memcpy() to copy policy
- cpufreq: update user_policy.* on success
- cpufreq: Clean up after a failing light-weight initialization
- cpufreq: preserve user_policy across suspend/resume
- Revert "cpufreq: Don't create empty /sys/devices/system/cpu/cpufreq directory"
- cpufreq: fix uevent broken issue
- cpufreq: don't send frozen uevent
- cpufreq: Fix up sysfs api usage
- cpufreq: impulse: Remove global object usage

== AIO ==
- multirom: 바이너리들 업데이트
- sepolicy: 바이너리 업데이트

== 리커버리 ==
- TWRP v3.0.2-0 로 버젼업
- jolla-kernel_bullhead-v8.4 적용

<b><#selectbg_g>[bullhead-v8.2]</#></b>
== 커널 ==
>> 공통 <<
- UBERTC gcc 6.0.0 20160401 로 빌드
- 변경 사항 취소 "cpu 와 관련된 모든 코드들 제거 (cpufreq, cpumask)"
- 변경 사항 취소 "power: bcl: 핫플러그와 freq-control 제거"
- power: bcl: Re-evaluate hotplug for unexpected cpu online

== AIO ==
- UBERTC gcc 6.0.0 20160401 로 빌드
- multirom: 이제 2nd 롬들에서 잠금화면 설정이 가능합니다
- sepolicy: 바이너리 업데이트

== 리커버리 ==
- UBERTC gcc 6.0.0 20160401 로 빌드
- 복호화 후 메인화면이 중복되는 문제 해결
- themes_multirom: 재부팅 옵션 추가
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead-v8.2 적용

<b><#selectbg_g>[bullhead-v8.1]</#></b>
== 커널 ==
>> 공통 <<
- wlan: qcacld-2.0: CAF 로 부터 LA.BF64.1.2.2_rb4.30 가져옴
- msm_hotplug: big core down delay 파라미터 제거
- msm_hotplug: big core 들에 대해 apply_down_lock 수행
- msm_hotplug: big core 들의 cpu down 수정
- msm_hotplug: input handler 제거
- msm_hotplug: 2 개의 little core 들이 항상 켜져 있도록 함
- msm_hotplug: max_cpus_online_susp 가 1 보다 클 경우에 대해 msm_hotplug_suspend() 수정
- msm_thermal: 디바이스가 일시정지 상태일 때 비활성화
- msm8992.dtsi: 온도 제한 조절
- f2fs: 최신 f2fs-stable 과 dev-test 패치들 적용
- 변경 사항 취소 "sovc, synaptics, mdss: suspend 상태에서 음악이 정지된 후 패널 끄기"
  (효과가 없을 뿐더러 리커버리나 충전 모드로 부팅 불가.)
- spi_qsd: Vote for PNOC clock before spi clock
- spi_qsd: Exit gracefully if the system is suspended
- spi: spi_qsd: Fix unmasked write to IO control register

== AIO ==
- sepolicy: 바이너리 업데이트

== 리커버리 ==
- TWRP v3.0.1-0 로 버젼업
- f2fs-tools: dev 브랜치 패치들 적용
- jolla-kernel_bullhead-v8.1 적용

<b><#selectbg_g>[bullhead-v8.0]</#></b>
== 커널 ==
>> 공통 <<
- bcl, msm8992.dtsi: cpu 와 관련된 모든 코드들 제거 (cpufreq, cpumask)
- sovc, synaptics, mdss: suspend 상태에서 음악이 정지된 후 패널 끄기
- msm_thermal: 모든 기능들이 올바르게 작동하도록 수정
- wlan: qcacld-2.0: 일부 코드 n-preview 와 맞춤
- crypto: crc32 - ARM64 CRC32 하드웨어 가속화 모듈 추가
- crypto: arm64: Linux 4.5 일부 패치들 적용
- f2fs: 최신 f2fs-stable linux-4.1.y 브랜치 패치들 적용
- 닥X cpu cacpcity!! (다량의 kernel 로그들)

>> M <<
- camera: 비디오 레코딩 문제 수정

== AIO ==
- SOVC off 시 설치 문제 수정
- Multi ROM Manager 추가
- sepolicy: 바이너리 업데이트
- sepolicy: NFC selinux 거부 문제 수정
- multirom: 최신 cm-13.0 소스들과 재빌드

== 리커버리 ==
- 최신 cm-13.0 소스들과 재빌드

<b><#selectbg_g>[bullhead-v7.4]</#></b>
== 커널 ==
- msm_thermal, msm8992.dts: 온도 제어 개선

== AIO ==
- updater-script: 빠진 'init.superuser.rc' 파일 압축풀도록 함
- mkbootimg: 일부 롬에서의 init.d 와 SOVC off 문제 수정

== 리커버리 ==
- jolla-kernel_bullhead-v7.4 적용

<b><#selectbg_g>[bullhead-v7.3]</#></b>
== 커널 ==
- cpufreq: despair 거버너 추가
- cpufreq: bioshock 거버너 추가
- cpufreq: despair: 사용되지 않는 cpufreq_notify_utilization 제거

== AIO ==
- multirom_hack.sh 추가 (2nd 롬들에서 설치가 되지 않는 현상 수정)

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead-v7.3 적용

<b><#selectbg_g>[bullhead-v7.2]</#></b>
== 커널 ==
- Linux 3.10.101

== AIO ==
- SOVC On/Off 지원

== 리커버리 ==
- jolla-kernel_bullhead-v7.2 적용

<b><#selectbg_g>[bullhead-v7.1]</#></b>
== 커널 ==
- ASoC: Dirty Unicorns 같은 일부 롬에서 mp3 파일들이 재생되지 않는 현상 수정
- camera: MHC19J 와 N 에서 손전등 타일이 작동하지 않는 문제 수정

- ASoC: wcd9330: Update speaker driver OCP current register
- drivers: mfd: Add support to configure OCP current limit
- ASoC: msm: qdsp6v2: Fix invalid num_codecs
- ASoC: pcm: Use the power efficient workqueue for delayed powerdown
- ASoC: jack: Use power efficient workqueue
- ASoC: compress: Use power efficient workqueue
- workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues
- workqueue: Add system wide power_efficient workqueues
- workqueue: Fix permission for power_efficient workqueue
- PHYLIB: queue work on system_power_efficient_wq
- block: queue work on power efficient wq
- fbcon: queue work on power efficient wq
- regulator: core: Use the power efficient workqueue for delayed powerdown

== 리커버리 ==
- omni android-6.0 최신 TWRP 패치들 적용
- jolla-kernel_bullhead-v7.1 적용

<b><#selectbg_g>[bullhead-v7.0]</#></b>
== 커널 ==
- Linux 3.10.100
- 구글로 부터 Android M, Android N 최신 패치들 적용
- msm_hotplug, fingerprint: 지문 인식 관련 수정
- block: SIOPLUS I/O 스케줄러 추가
- sovc, wcd9330: 터치 끄기 지연시간 증가
- sovc: 볼륨 컨트롤 터치 거리 감소
- sovc: 트랙 컨트롤 재실행 지연 시간 증가

== AIO ==
- Android N 지원 (jolla-kernel_bullhead-v7.0N)
- multirom: MHC19J 지원
- A2DPChecker: 재생중 체크 지연시간 증가

== 리커버리 ==
- MHC19J 지원
- jolla-kernel_bullhead-v7.0 적용

<b><#selectbg_g>[bullhead-v6.2]</#></b>
== 커널 ==
- Linux 3.10.99
- 변경사항 취소 "msm8992 initial overclocking" (클럭 테이블을 위한 추가적인 수정이 필요하고 가끔 커널 패닉을 일으킴.)
- f2fs: 최신 f2fs-stable 패치들 적용
- f2fs: recovery missing dot dentries in root directory
- kexec: 업스트림 패치들 적용
- msm: ipa, sps, camera 를 위한 몇몇 패치들 적용
- dm-crypt: run in a WQ_HIGHPRI workqueue
- dm-verity: run in a WQ_HIGHPRI workqueue
- mmc: move to a SCHED_FIFO thread
- net: tcp: fix rtable leak in tcp_is_local[6]
- dm: Add android verity target
- dm: boot time specification of dm=

== AIO ==
- MultiROM: 세컨롬들로 부팅 후 지문인식 문제 수정

== 리커버리 ==
- z31s1g 의 Play 테마에서 이미지들 가져옴
- jolla-kernel_bullhead-v6.1 적용

<b><#selectbg_g>[bullhead-v6.0]</#></b>
== 커널 ==
- Linux 3.10.98
- 변경사항 취소 "bullhead_defconfig: FB_MSM_MDSS_HDMI_PANEL 활성화"
- 변경사항 취소 "bullhead_defconfig: 모듈 지원 활성화"
- msm_hotplug, cpu, fingerprint: 지문인식이 작동하는 중에 모든 cpu 켜도록 함
  (가끔 지문인식이 작동하지 않는 문제 수정.)
- msm8992 오버클럭 지원

== AIO ==
- MultiROM: kexec 의 잘못된 주소들 수정 (이제 세컨 롬들이 각 롬들의 커널과 정삭적으로 부팅됩니다.)
- MultiROM: adbd closed 문제 수정
- MultiROM: 최신 cm-13.0 소스들로 재빌드

== 리커버리 ==
- adbd closed 문제 수정
- jolla-kernel_bullhead-v6.0 적용

<b><#selectbg_g>[bullhead-v6.0_beta]</#></b>
== 커널 ==
- kexec hardboot 지원

== AIO ==
- MultiROM 지원!! (Experimental)

== 리커버리 ==
- MultiROM TWRP v3.0.0-0
- jolla-kernel_bullhead-v6.0_beta 적용

<b><#selectbg_g>[bullhead-v5.2]</#></b>
== 커널 ==
- fs: fsync on/off 를 다이나믹 fsync 로 변경
- msm8992.dtsi: cpubw 기본 거버너를 bw_hwmon 으로 설정
- power: IPA_WS 웨이크락 방지 on/off 지원
- cpufreq_elementalx: lower sampling_down_factor for big cluster
- sound_control: 코드 수정 및 클린업
- GCC 6 misleading-indentation 경고들 수정

== 리커버리 ==
- TWRP v3.0.0 으로 버젼업
- jolla-kernel_bullhead-v5.2 적용

== AIO ==
- ramdisk: init.bullhead.rc 추가
- ramdisk: 수정된 init.bullhead.power.sh 스크립트를 init.bullhead.rc 에 포함시킴
- 부팅 중에 빅 클러스터의 거버너가 performance 로 설정 되는 현상 수정

<b><#selectbg_g>[bullhead-v5.1]</#></b>
== 커널 ==
- Google 로 부터 EAS 패치들 적용
  (EAS 정보: http://www.linaro.org/blog/core-dump/energy-aware-scheduling-eas-project/)
- sovc: 화면을 키지 않고 터치스크린을 직접 끄도록 함.
- usb: gadget: mass_storage: added sysfs entry for cdrom to LUNs (Android 기기를 USB 저장소나 CD-Rom 으로 사용/DriveDroid 지원)
  (DriveDroid 정보: https://play.google.com/store/apps/details?id=com.softwarebakery.drivedroid)

== 리커버리 ==
- jolla-kernel_bullhead-v5.1 적용

== AIO ==
- AIO: 램디스크 압축 타입 선택과 init.d 패치 옵션들 추가 (재 업로드된 v5.0 에서 이미 구현됨)

<b><#selectbg_g>[bullhead-v5.0]</#></b>
== 커널 ==
- Linux 3.10.96
- mm: UKSM 지원
- devfreq: Adreno idler 지원
- wlan: qcacld-2.0: caf 로 부터 LA.BF64.1.2.9 가져옴 (Wi-Fi 문제 없음/느린 Wi-Fi 현상 없음/끊김 현상 없음)
- sovc: 스크린에서 손가락을 떼어낸 후 진동이 다시 울리는 현상 수정
- msm_hotplug: big_core_down_delay 새 파라미터 추가
- msm_hotplug: 비활성화 되었거나 suspend 상태일때 핫플러깅 하지 않음
- msm_hotplug, cpu: suspend 상태일때 빅코어들에 대해서만 핫플러깅 방지
- msm_hotplug, fingerprint: 비활성화 되었을때 핫플러깅 하지 않음
- msm_hotplug: 빅코어들이 좀 더 어렵게 켜지도록 함
- msm_hotplug: 빅코어의 'apply_down_lock(cpu)' 제거
- msm_hotplug: DEFAULT_BIG_CORE_UP_DELAY 증가
- msm_hotplug: 'online_little' 변수들 제거
- msm_hotplug: 모든 빅코어들이 켜져있거나 꺼져있으면 스킵
- wakeup: try to deactivate a wakeup source when the user explicitly disables it from userspace
- wakeup: Add the guard condition for len in pm_get_active_wakeup_sources
- qcom: rpm-smd: workqueue 경고 수정을 포함해 몇몇 패치들 적용
- soc: qcom: common_log: common_log driver 의 메모리 누수 수정
- ASoC: Cyanogenmod 로 부터 업스트림 패치들 적용
- hid: FiiO USB DAC 드라이버 추가
- cpuidle: 몇몇 패치들 적용
- msm: spm: 몇몇 패치들 적용
- msm: lpm-levels: 몇몇 패치들 적용
- lib: LZ4 로 압축된 커널 지원
- lib/lz4: 업스트림 패치들 적용
- lib/decompressors: 업스트림 패치들 적용
- bullhead_defconfig: LZ4 램디스크/압축풀기 지원
- bullhead_defconfig: : 모듈 지원 활성화
- bullhead_defconfig: FB_MSM_MDSS_HDMI_PANEL 활성화
- PM / sleep: 몇몇 패치들 적용
- cpufreq: interactive: 몇몇 패치들 적용
- cpufreq: 몇몇 패치들 적용
- cpufreq: ZZMoove big.LITTLE Edition (bLE) 2016.01.09 일자 개발 버젼 추가
- cpufreq: 실패시 interactive 거버너 사용
- haptic: 커널 컨트롤 어플을 통한 진동 조절 지원

== 리커버리 ==
- cm-13.0 을 베이스로 하여 최신 omni android-6.0 TWRP 소스로 빌드
- jolla-kernel_bullhead-v5.0 적용
- f2fs-tools: 최신 dev 브랜치 패치들 적용
- f2fs-tools: Cyanogenmod 로 부터 Android 패치들 적용
- LZ4 로 압축된 램디스크 이미지 사용

== AIO ==
- AIO: mkbootimg 를 위해 수정된 AIK 스크립트 사용 및 기본으로 LZ4 로 압축된 램디스크 제작

<b><#selectbg_g>[bullhead-v4.3]</#></b>
== 커널 ==
- UBERTC gcc-6.0.0 으로 빌드
- GCC 6.0.0 을 위해 수정
- 변경사항 취소 "msm_thermal: core control 비활성화"
- thermal: thermal-engine 핫플러깅 비활성화
- power: bcl: 핫플러그와 freq-control 제거
- 변경사항 취소 "ksm: check and skip page, if it is already scanned"
  (랜덤 리붓을 발생하는 요인으로 추정. KSM 에서 NULL pointer dereference 로 인하여 커널 패닉이 발생하였음.)
- ksm: hlist_empty helper 메소드 사용
- mm: ksm: 기본값 최적화
- msm: thermal: 조용한 threshold 로그
- sovc: 'mic detected' 로그 제거
- proc: 몇몇 패치들 적용
- seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO
- proc: add a reschedule point in proc_readfd_common()
- lowmemorykiller: 레드 블랙 트리 최적화와 함께 몇몇 패치들 적용
- ion: 몇몇 패치들 적용
- fs: 몇몇 패치들 적용
- msm: camera: 8992: 8994: delete session if post event failed
- msm: camera: Handling openCamera timeout
- selinux: avc 로깅 개선
- KEYS: 몇몇 패치들 적용
- include/linux/poison.h: fix LIST_POISON{1,2} offset
- qcacld-2.0: 에러 체크 빠진 부분 수정
- qcacld-2.0: 항상 실패를 반환하는 현상 수정
- cpufreq: impulse: @neobuddy89 님의 최신 소스로 업데이트

== 리커버리 ==
- UBERTC gcc-6.0.0 으로 빌드
- cm-13.0 을 베이스로 하여 최신 omni android-6.0 TWRP 소스로 빌드
- jolla-kernel_bullhead-v4.3 적용
- f2fs-tools: dev 브랜치 패치들 적용

== AIO ==
- sepolicy 바이너리 업데이트

<b><#selectbg_g>[bullhead-v4.2]</#></b>
== 커널 ==
- msm_hotplug: target_big 계산 수정 (효율적인 핫플러깅 및 느린 Wi-Fi 개선)
- sovc: 마이크가 감지 되었을때 터치스크린 Off (전화 중에 터치스크린이 작동되는 현상 수정)

== 리커버리 ==
- jolla-kernel_bullhead-v4.2 적용

<b><#selectbg_g>[bullhead-v4.1]</#></b>
== 커널 ==
- UBERTC gcc-5.3.1 로 빌드
- dt2w: sovc 가 비활성화 되어있을 때 'dt2w_switch_tmp' 비활성화
- f2fs: 최신 업데이트들 적용 (for-f2fs-4.5)

== 리커버리 ==
- UBERTC gcc-5.3.1 로 빌드
- cm-13.0 을 베이스로 하여 최신 omni android-6.0 TWRP 소스로 빌드
- jolla-kernel_bullhead-v4.1 적용

== AIO ==
- AROMA Installer 업데이트
- LED 패치를 옵션으로 함.
- 사용자가 애플리케이션을 선택할 수 있도록 함.
- 애플리케이션이 data 파티션에 복사되도록 함.

== jolla-kernel Updater ==
- minSdk 버젼을 23 으로 변경.
- 외부 저장소 쓰기 권한 요청.
- 다운로드 바가 항상 "다운로드 중" 이라 표시되는 버그 수정
- Deprecated 코드들 제거. (네비게이션 뷰를 위해 메인 액티비티는 제외.)
- Lint 경고들 수정.
- 불필요한 라이브러리들 제거.
- cz.msebera.android httpclient v4.4.1.1 라이브러리 사용.

<b><#selectbg_g>[bullhead-v4.0]</#></b>
== 커널 ==
- gcc-5.3.0 으로 빌드
- lowmemorykiller: 죽어가거나 종료중인 작업 스킵
- f2fs: 최신 dev 브랜치 패치들 적용
- ext4 crypto: 최신 패치들 적용
- soc: qcom: msm_perf: perfd 가 최대 클럭을 변경 하는것 방지
- wakeup: bluedroid_timer 웨이크락을 위한 토글 추가
- wakeup: bluesleep 웨이크락을 위한 토글 추가
- msm: qpnp-haptic: vmax_mv_strong 이 최소로 설정되었을때 진동 비활성화
- msm: camera: 몇몇 패치들 적용
- mmc: sd: bus speed switch 실패시 에러 리턴
- arm64: relaxed 파워 소모량 최적화 패치 적용
- arm64: lib: memory utilities 최적화
- workqueue: 몇몇 패치들 적용
- sched: 몇몇 패치들 적용
- mm: 몇몇 패치들 적용
- qcacld: 초기화 되지 않은 변수 수정
- staging: qcacld-2.0: 기본값으로 빌드
- 변경사항 취소 "qcacld: Tlshim Rx shutdown 이 non-interruptable wait 을 하도록 함"
- cpufreq: cpu-boost: 어떤 코어든 적어도 1개의 작업이 있어도 파워 절약을 위해 빅코어를 부스트 하지 않음
- cpufreq: cpu-boost: input_boost_enable 파라미터 추가
- cpufreq: cpu-boost: 사용자가 설정한 최대 클럭값 이상으로 부스트 하지 않음
- cpufreq: governor_enabled 가 읽히는 것을 방지하여 timer/workqueue 충돌 수정
- cpufreq: user_policy 데이터로 policy 설정
- tick: cpu 가 오프라인 상태일때 idle time 업데이트 하지 않음
- proc: stat: idle time 점프 현상 수정
- usb: gadget: storage: MacOS READ_TOC 지원
- USB: android: mass_storage_function_init() 메모리 누수 수정
- USB: f_fs: wait 을 freezable 로 변경
- dts: mmc: idle flag 의 wakeup 제거
- mmc: core: mmc 가 suspend 상태일 동안 mmc_flush_cache() 사용
- tcp_cubic: 몇몇 패치들 적용
- fs: 몇몇 패치들 적용
- vfs: 몇몇 패치들 적용
- writeback: 몇몇 패치들 적용
- fs/proc: 몇몇 패치들 적용
- block: 몇몇 패치들 적용
- block: CFQ 가 SSD 에서 기본으로 IOPS 모드가 되도록 함
- cfq-iosched: SSD 에서 IOPS 모드가 되는 설정 수정
- sched: LOAD_FREQ (4*HZ+61) loadavg 물결 현상 방지
- msm: uninterruptible wait 으로 부터의 high load average 수정
- soc: qcom: 몇몇 패치들 적용
- mpm: clk_get API 문제 수정
- rpm-smd: 몇몇 패치들 적용
- Makefile: Cortex A57 용으로 빌드
- Makefile: big.Little a53/a57 플래그 사용
- mdss: load_average 감소를 위해 edp 에 interruptible thread 사용
- msm: load average 에 영향을 주지 않기 위해 interruptible wait 사용
- qcom: msm-core: uninterruptible wait
- msm: load average 에 영향을 주지 않기 위해 interruptible wait 사용
- msm: mdss: event 가 interrupt 되었을 때 더 일찍 'continue' 함
- bullhead: Kconfig 경고들 수정

== 리커버리 ==
- jolla-kernel_bullhead-v4.0 적용

== AIO ==
- 충전 LED 패치 추가

<b><#selectbg_g>[bullhead-v3.2]</#></b>
== 커널 ==
- touchscreen: dt2w 나 sw2w 가 sovc 활성화 없이 작동되지 않는 현상 수정 (노크온 작동 불가현상 수정)
- fs: xattr 단순화
- f2fs: f2fs dev 브랜치 업데이트들 적용
- md: 몇몇 패치들 적용
- fs/buffer.c: CPU LRU 사이즈당 버퍼 헤드 증가
- soc: qcom: smd: 몇몇 패치들 적용

== 리커버리 ==
- jolla-kernel_bullhead-v3.2 적용

<b><#selectbg_g>[bullhead-v3.1]</#></b>
== 커널 ==
>> 배터리 시간 증가 <<
- soc: qcom: msm_perf: perfd 가 최대 cpu 와 최대 클럭을 변경하는 것 방지
- soc: qcom: msm_perf: perfd 가 작업량을 변경하는 것 방지
- bullhead: msm_performance 의 핫플러깅 비활성화

- leds-qpnp: 더 부드러운 충전 LED

== 리커버리 ==
- jolla-kernel_bullhead-v3.1 적용

<b><#selectbg_g>[bullhead-v3.0]</#></b>
== 커널 ==
- hotplug: msm_hotplug 드라이버 추가 및 big, little 에 맞게 수정
- touchscreen: doubletap2wake, sweep2wake 추가
- touchscreen: 음악이 재생되는 동안 dt2w 임시로 활성화
- leds-qpnp: 부드럽게 깜박이는 충전 LED & 부드러운 알림 LED
- power:qpnp-charger: 배터리가 완충에 가까워 졌을때 충전시간을 30초에서 100초로 늘림
- hwrng: 직접적인 device_create_file() 호출들 회피
- cpufreq: impulse elementalx, wheatley, impulse, conservative 거버너들 추가
- cpufreq: interactive: 몇몇 패치들 적용
- tcp: 소켓들이 MSG_FASTOPEN 을 기본으로 사용하도록 활성화
- mdss_fb: backlight dimmer 옵션
- power: lge crash handler 비활성화
- f2fs: f2fs_follow_link 로 인한 시스템 패닉 수정
- f2fs: 불필요한 new_valid_dev() 체크 제거
- f2fs: f2fs-stable repository 로 부터 f2fs_kvfree 추가
- random: /dev/frandom 지원 추가
- random, random32: Linux upstream 패치들 적용
- zram, zsmalloc, zpool: Upstream 패치들 적용
- crypto: msm: 몇몇 패치들 적용
- md: 몇몇 패치들 적용
- dm verity: 몇몇 패치들 적용

== 리커버리 ==
- 최신 omni android-6.0 브랜치 TWRP 소스들로 빌드
- 최신 cm-13.0 소스들을 베이스로 사용
- f2fs-tools: v1.6.0 적용
- jolla-kernel_bullhead-v3.0 적용

== AIO ==
- fstab.bullhead: f2fs 부팅 문제 수정
- A2DPChecker: 음악이 재생되는 동안 dt2w 임시로 활성화

<b><#selectbg_g>[bullhead-v2.0]</#></b>
== 커널 ==
- UBERTC gcc 5.2.1 로 빌드
- Screen Off Volume Controller 추가
- Linux 3.10.94
- Marshmallow 6.0.1 업데이트들 적용
- Faux Sound control v3.6 추가
- fsync on/off 지원
- exFAT 지원
- 성능을 위해 mmc crc 체크 비활성화
- SIO, FIOPS i/o 스케쥴러 추가
- 기본 i/o 스케쥴러를 FIOPS 로 변경
- 알림 진동 감소

== 리커버리 ==
- jolla-kernel_bullhead-v2.0 적용

<b><#selectbg_g>[bullhead-v1.0]</#></b>
== 커널 ==
- 첫 릴리즈!
- bullhead 노란색 스크린 수정!
- Linux 3.10.93
- TCP_CONG_ADVANCED 활성화 및 'westwood' 기본값으로 설정
- NTFS 지원
- f2fs 지원
- 최신 f2fs-3.10 패치들 적용
- 안드로이드 기기를 USB 키보드/마우스로 사용
- BFQ IO 스케줄러 추가 및 기본값으로 설정
- mdss KCAL control 지원

== 리커버리 ==
- jolla-kernel_bullhead-v1.0 적용


<b><#selectbg_g>[Thanks to..]</#></b>
The Linux Kernel Archives : https://www.kernel.org/
LineageOS : https://github.com/LineageOS
Developers : jaegeuk, Tasssadar, savoca and all of commited in their sources & all of xda developers

<#selectbg_g>->></#> 제 jolla-kernel 을 선택해 주셔서 감사합니다!! :)
