<@center><b><#selectbg_g>jolla-kernel ChangeLog</#></b>

<b><#selectbg_g>jollaman999 @xda developers</#></b>
<b><#selectbg_g>https://github.com/jollaman999</#></b>

<b><#selectbg_g>[bullhead_II-v10.2]</#></b></@>
== Kernel ==
>> Android 7.0.0 & Android 7.1.1 <<
- sdcardfs: Applied patches and from CyanogenMod/android_kernel_oneplus_msm8996
- sdcardfs: fix external storage exporting incorrect uid (Fix permission denial issues like photo apps.)

>> Common <<
- Built with with Linaro gcc 6.2.1-2016.11-rc2
- mdss: Turn off mdss when using the mic with screen turned off
- kexec: Seperate hardboot region and fix some macros

== AIO ==
- sdcardfs: Only cleanup when disabled
- sdcardfs: Remove useless lines and fix blank lines when sdcardfs is already enabled
- sdcardfs: Enable sdcardfs by default
- lang: Fix some strings for sdcardfs
- lang: Fix some strings for SOVC
- Remove not matched signatures
- Signed with my self signature

== Recovery ==
- Built with with Linaro gcc 6.2.1-2016.11-rc2
- Change build platform to 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.
- Create bootloader_message static library. (Squashed)
- Fix build errors in cm-14.1
- multirom: Use 'file_contexts.bin' for make ext4 images
- Use file_contexts.bin first then use file_contexts if it not exist
- jolla-kernel_bullhead_II-v10.2 applied

<b><#selectbg_g>[bullhead_II-v10.1]</#></b>
== Kernel ==
>> Android 6.0.1 <<
- Add missed 2 commits (Thermal fix, NULL pointer dereference fix) in 10.0

>> Common <<
- sdcardfs: Flag files as non-mappable
- touchscreen, mdss: Implement Sweep2Sleep
- power: wakeup: only try to deactivate if the wakeup source is active
- power: wakeup: add ipa_ws option

== AIO ==
- Fix Android version strings
- ramdisk: Restore ramdump and bugreport

== Recovery ==
- jolla-kernel_bullhead_II-v10.1 applied

<b><#selectbg_g>[bullhead_II-v10.0]</#></b>
== Kernel ==
>> Common <<
- Android 7.1.x support
- Appiled Google November patches
- sovc: Fix sovc force off not working when dt2w or s2w is enabled
- sovc: Fix SOVC not disabled sometimes when A2DP stopped or bluetooth is turned off
- sovc: Fix SOVC not disabled after end the phone call
- sovc: Fix DT2W is working when s2w is enabled with 'sovc_force_off=true'
- sovc: Ignore to change track when S2W is enabled
- sovc: Skip if userspace value is same with previous value
- sovc: Keep touchscreen on when track changed while using bluetooth device
- sovc: Register sovc when need it
- s2w: Only register when screen suspended
- msm_thermal: Export poll_ms parameter
- msm_thermal: msm8992.dtsi: Increase poll-ms
- msm_thermal: msm8992.dtsi: Decrease thermal limit
- msm_thermal: Seperate big cluster's operation
(This makes device cool and smooth. We can get smooth performance in low temperature.)
- i2c: core: fix NULL pointer dereference under race condition
- arm64/configs: bullhead: disable extra SCSI configs

== AIO ==
- Add Android 7.1.x support

== Recovery ==
- MultiROM: Fix installation of zip files missing updater-script
- multiromedify: check for run_program umount command
- MultiROM: fix compile warnings
- Change version string to 3.0.2-3
- jolla-kernel_bullhead_II-v10.0 applied

<b><#selectbg_g>[bullhead_II-v9.1]</#></b>
== Kernel ==
>> Common <<
- Built with with Linaro gcc 6.2.1-2016.11-rc1
- Linux 3.10.104
- ksm: Applied upstream changes
- f2fs: Applied f2fs-stable branch patches
- nanohub: Applied Android 7.1 changes from marlin
- lowmemorykiller: Applied Android 7.1 changes from marlin
- arm, kbuild: make "make install" not depend on vmlinux
- arm64: kbuild: make "make install" not depend on vmlinux
- arm64: kill off the libgcc dependency
- kbuild: arm: Do not define "comma" twice
- kgsl: convert some workqueues to use kthreads (from marlin)
- mdss: move to a kthread for vsync_retire_work_handler (from marlin)
- proc: much faster /proc/vmstat
- Revert "sched/fair: Fix fairness issue on migration"
- proc: Remove verifiedbootstate flag from /proc/cmdline

** Dirtycow patch already applied before in Linux 3.10.x changes **

== AIO ==
- ramdisk: fstab.bullhead: Reduce readahead for /data
- Fix sdcardfs support in N
- langs: Change 7.0.x to 7.x.x

== Recovery ==
- jolla-kernel_bullhead_II-v9.1 applied

<b><#selectbg_g>[bullhead_II-v9.0]</#></b>
== Kernel ==
>> Common <<
- Revert "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
- Revert "lib: do_strncpy_from_user: Fix return error code for get_user failures"
- Revert "lib: align source before using optimized implementation"

== AIO ==
- fstab.bullhead: Apply nougat changes

== Recovery ==
- Fix can't unlock while installing with AROMA installer
- Fix Android 7.0 update scripts fail issue
- Support symlinked init in ramdisk
- Fix missing variables
- Apply android-7.0 changes from omnirom/android_bootable_recovery
- jolla-kernel_bullhead_II-v9.0 applied

<b><#selectbg_g>[bullhead_II-v8.2]</#></b>
== Kernel ==
>> Common <<
- msm_thermal: More limit frequency for big
- msm_thermal: Add comments for tunable options
- msm_thermal: Fix wrong target index
- sovc: Don't check changed value
- sovc: Clean up some useless 'sovc_force_off' checks
- sovc: Fix sovc not disabled sometimes even if bluetooth has been disconnected
- sovc: Lock 'sovc_scroff_volctr_temp_dump' when changing A2DP state
- f2fs: Applied f2fs-stable branch patches

== AIO ==
- Remove 'cleaner.sh'
- A2DPChecker: Updates libraries and cleanup some Access Modifiers

== Recovery ==
- jolla-kernel_bullhead_II-v8.2 applied

<b><#selectbg_g>[bullhead_II-v8.1]</#></b>
== Kernel ==
>> Common <<
- Applied Nougat's October patches (Except Wi-Fi patches for M.)
- sovc: Save Bluetooth's A2DP playing state
- cpufreq: cpu-boost: boost the input boost notifier to max prio
- cpufreq: cpu-boost: let the big ass cluster be boosted on touch
- cpufreq: interactive: remove hispeed_freq init restriction
- UPSTREAM: Fix some potential issues
- UPSTREAM: Applied upstream net diag patches

== AIO ==
- init.bullhead.rc: Increase boost of little and enable boost for big
- init.bullhead.rc: Adjust target_loads of little

== Recovery ==
- jolla-kernel_bullhead_II-v8.1 applied

<b><#selectbg_g>[bullhead_II-v8.0]</#></b>
== Kernel ==
>> Common <<
- Better performance and better battery
- Source cleanup
- Linux 3.10.103
- Applied September patches
- Built with with Linaro gcc 6.1.1-2016.08-rc2
- mmc: disable crc check
- block: Disable add_random
- block: scheduler: add ZEN v2
- block: zen: set fifo batch to 16 to reduce overload on eMMC and CPU
- arp: Export arp_project's sysfs nodes and arp_print_info
- arp: Remove already included line
- arp, net/core: Fix exports
- Revert "arp: Ignore reply when request not proceeded or sip is differ with requested tip"
- arp: Remove time information
- arp: Check 'print_arp_info' earlier
- arp: Fix gateway detection
- arp: Add ignore_gw_update_by_reply option
- arp: Cleanup memcpy and useless variables in 'arp_print_info'
- Remove power efficient workqueue
- f2fs: Back to stable branch with lazytime patch
- sovc: Add playing state notifier and cleanup *~tmp pointers + Fix some bugs
- tcp_cubic: add SNMP counters to track how effective is Hystart
- tcp_cubic: refine Hystart delay threshold
- inet_diag: fix access to tcp cc information
- tcp: add CDG congestion control
- tcp: cdg: use div_u64()
- tcp: add tcp_in_slow_start helper
- tcp: do not slow start when cwnd equals ssthresh
- tcp: Remove unnecessary arg from tcp_enter_cwr and tcp_init_cwnd_reduction
- proc: Add jolla-kernel's version information
- msm_thermal: Fix some wrong logics
- msm_thermal: Decrease heat and increase device's performance
- msm_thermal: Add 'freq_step' parameter
- msm_thermal: Add debug options for core_control and freq_control

== AIO ==
- init.d: Remove old lines and add seclabel
- aroma: Change N's name to Nougat and set as defult
- Fix disable kcal and sovc not working issue.
- updater-script: Remove 'jolla-kernel.prop' installation lines
- Remove sepolicy patch
- aroma: Add MultiROM license
- aroma: license: ko: Remove '<U+FEFF>'.
- multirom: Built with with Linaro gcc 6.1.1-2016.08-rc2

== jolla-kernel Updater ==
- Update libraries
- Fix force close issues
- Version up to v1.5

== Recovery ==
- Built with with Linaro gcc 6.1.1-2016.08-rc2
- 3.0.2-2
- init.recovery.bullhead.rc: Add power settings
(When using recovery, device getting very hot cause default geoversnor is 'performance'.
Also my board was broken when boot in to recovery mode for a long time.
So change governor to 'interactive' and add power settings for safety.)
- jolla-kernel_bullhead_II-v8.0 applied

<b><#selectbg_g>[bullhead_II-v7.0]</#></b>
== Kernel ==
>> Common <<
- Revert "msm: mdss: support parallel execution of MDSS_EVENT handlers"
- workqueues: Introduce new flag WQ_POWER_EFFICIENT for power oriented workqueues
- Use power efficient workqueue - firmware, net/wireless, rcu, net/ipv4,
      PHYLIB, ASoC, net/neighbour, timekeeping, net/rfkill, usb, regulator/core
- BACKPORT: Bluetooth: Fix potential NULL dereference in RFCOMM bind callback
- net: ipv6: Fix ping to link-local addresses
- ipv6: fix endianness error in icmpv6_err
- Revert upstream's (CVE-2016-5696)
- [PATCH v3 3.10.y] tcp: make challenge acks less predictable (CVE-2016-5696)
- arp: queue work on power efficient wq
- touchscreen: synaptics: queue work on power efficient wq
- touchscreen: sovc: Use power efficient wq and high priority wq
- touchscreen: dt2w: Use power efficient wq and high priority wq
- touchscreen: s2w: Use power efficient wq and high priority wq
- net: cnss: queue work on power efficient wq
- net: wcnss: queue work on power efficient wq
- qcacld-2.0: queue work on power efficient wq
- touchscreen: sovc: Cancel sovc_auto_off_check_work when screen turned on
- f2fs: Applied lastest dev branch patches

>> N <<
- mdss: mdp3: Validate input from userspace

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- Fix decryption in encrypted Android N devices
- bionic: add fortified implementations of write/pwrite{,64}
  (Fix multirom installation problem after fixed decryption in N)
- jolla-kernel_bullhead_II-v7.0 applied

<b><#selectbg_g>[bullhead_II-v6.3]</#></b>
== Kernel ==
>> Common <<
- sovc: Fix long auto off delay
- sovc: Reduce default auto off delay to 2.5sec
- tcp: make challenge acks less predictable (CVE-2016-5696)

>> N <<
- Revert "bullhead-nanohub: Correctly matching table"
- Revert "bullhead-hardboot: Fix rotation issue when booted to M from N"
(Previous method makes huge battery drain.)
- bullhead-sensorhub: Add compatibility for M when hardboot proceeded

>> M <<
- bullhead-sensorhub: Rename labels for working when hardboot proceeded

== AIO ==
- sovc: Adjust configurable auto off delay values
- multirom: Update kexec-tools to 2.0.13

== Recovery ==
- jolla-kernel_bullhead_II-v6.3 applied

<b><#selectbg_g>[bullhead_II-v6.2]</#></b>
== Kernel ==
>> Common <<
- Built with Linaro gcc 6.1.1
- faster zram
- Applied Linux kexec upstream changes
- 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: latest upstream version
- ashmem: fix CVE-2016-5340
- arm64: dma-mapping: always clear allocated buffers
- arp: Fix spaces of 'for' loops
- arp: Fix wrong return in arp_find_gw
- power:qpnp-charger: extended charge time from 30s to 100s when battery status is near to full
- qcacld-2.0: Fix misleading-indentation warnings

>> N <<
- bullhead-hardboot: Fix rotation issue when booted to M from N
- bullhead-nanohub: Correctly matching table

== AIO ==
- init.bullhead.rc: Remove uneeded lines
- Fix N's performance issue
- updater: jolla-kernel Updater v1.4 (Fix force close issue in N.)
- aroma: Optimize and reduce size of PNG files
- f2fs-tools: release 1.7.0
- multirom: Rebuild binaries and update libraries (Linaro gcc 6.1.1)

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- Revert adb backup support and Restore_Partition changes (Break multirom restoration.)
- jolla-kernel_bullhead_II-v6.2 applied

<b><#selectbg_g>[bullhead_II-v6.1]</#></b>
== Kernel ==
>> Common <<
- Appiled Google's sucurity updates

== AIO ==
- ramdisk: Update sepolicy
- Support sdcardfs for various roms

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead_II-v6.1 applied

<b><#selectbg_g>[bullhead_II-v6.0]</#></b>
== Kernel ==
>> Common <<
- UPSTREAM: KEYS: Fix ASN.1 indefinite length object parsing
- f2fs: Applied lastest dev branch patches
- Bye bye msm_hotplug
- zram: Use lz4 as default compressor
- ksm: prepare to new THP semantics
- qcacld-2.0: Disable trace of HIFTargetSleepStateAdjust
- radix-tree: fix radix_tree_iter_retry() for tagged iterators.
- sdcardfs: Applied Google updates
- Appiled crypto patches from CyanogenMod/android_kernel_oneplus_msm8996

>> M <<
- sdcardfs: Applied patches and fix from CyanogenMod/android_kernel_oneplus_msm8996

== AIO ==
- ramdisk: init.bullhead.rc: Now, LZ4 is the default
- ramdisk: Update sepolicy
- sdcardfs support for cm-13.0

== Recovery ==
- Re-built with new cm-13.0 sources
- jolla-kernel_bullhead_II-v6.0 applied

<b><#selectbg_g>[bullhead_II-v5.1]</#></b>
== Kernel ==
>> Common <<
/* Applied some patches related with lazytime */
- fs: make sure the timestamps for lazytime inodes eventually get written
- fs: add dirtytime_expire_seconds sysctl
- ext4: fix lazytime optimization

- vfs: avoid creation of inode number 0 in get_next_ino
- ext4: reject journal options for ext2 mounts
- mdss: Revert some changes that breaks to play 4K videos
- Applied some upstream patches
- cpufreq: interactive: Applied some changes from franco

== AIO ==
- ramdisk: init.superuser.rc: Fix selinux permission of su_daemon
- multirom_hack.sh: Fix otg.prop not found error
- updater-script: Ignore to install MultiROM in second roms

== Recovery ==
- jolla-kernel_bullhead_II-v5.1 applied

<b><#selectbg_g>[bullhead_II-v5.0]</#></b>
== Kernel ==
>> Common <<
/* lazytime mount option support */
- vfs: Add lazytime mount option support
- f2fs: lazytime mount option support
- f2fs: Applied lastest dev branch patches
- ext4: add optimization for the lazytime mount option
- ext4: set lazytime on remount if MS_LAZYTIME is set by mount

/* Revert some of android-msm-bullhead-3.10-marshmallow-dr1.6 changes */
- Revert "mdss: mdp3: Validate input from userspace" (It makes battery drain.)
- Revert "ASoC: msm: audio-effects: misc fixes in h/w effects (update)" (It makes speaker sound lower.)
- Revert "ASoC: msm: audio-effects: misc fixes in h/w accelerated effect"

/* Some of fixes for sovc and dt2w */
- touchscreen: sovc: Vibrate twice when turning off the touchscreen
- touchscreen: sovc: Check touching state before queueing the work structure
- touchscreen: sovc, synaptics: Prevent race condition of touch off work
- touchscreen: dt2w: Remove uneeded check of scr_suspended

== AIO ==
/* Enable lazytime mount option for ext4 and f2fs partitions */
- ramdisk: fstab.bullhead: Enable discard option for ext4 partitions
- ramdisk: fstab.bullhead: Change noatime,nodiratime options to lazytime
- ramdisk: fstab.bullhead: Enable lazytime option for persist partition
- ramdisk: fstab.bullhead: Enable lazytime option for system and vendor
- ramdisk: fstab.bullhead: Disable barrier for vendor

== Recovery ==
- jolla-kernel_bullhead_II-v5.0 applied

<b><#selectbg_g>[bullhead_II-v4.1]</#></b>
== Kernel ==
>> Common <<
- Applied android-msm-bullhead-3.10-marshmallow-dr1.6 changes

== AIO ==
- Multirom with OTG is now working!!
- multirom: Fix OTG path + Rebuilt with updated sources
- Fix installation with OTG
- ramdisk: Update sepolicy
- A2DPChecker: Exec SU when open the main activity

== Recovery ==
- Re-built with updated sources
- jolla-kernel_bullhead_II-v4.1 applied

<b><#selectbg_g>[bullhead_II-v4.0]</#></b>
== Kernel ==
>> Common <<
- touchscreen: synaptics: Lock when resume or suspend is triggered and check suspended state
  (Perfectly fixed touchscreen issue when turning on the screen with sound on.)
- lib: bitmap: Applied Linux upstream patches
- lib: string: Applied Linux upstream patches
- Replace strnicmp with strncasecmp
- lib: rbtree: Applied Linux upstream patches
- lib: sort: Applied Linux upstream patches
- lib: strncpy_from_user: Applied Linux upstream patches
- 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: Enable CONFIG_HAVE_ARCH_BITREVERSE
- ALSA: 6fire: Convert byte_rev_table uses to bitrev8
- msm: mdss: Fix unhandled unlock when failed to turn on fb
- lib: crc32: Applied Linux upstream patches
- lib: decompress_inflate: Applied Linux upstream patches
- lib: decompress_unlzma: Applied Linux upstream patches
- Revert "Revert "gpiolib: add IRQF_ONESHOT flag for shared IRQ""
  (touchscreen issue has been fixed.)

>> M <<
- Revert "Revert "msm: mdss: trigger frame timeout when recovery is in progress
  (touchscreen issue has been fixed.)

== Recovery ==
- jolla-kernel_bullhead_II-v4.0 applied

<b><#selectbg_g>[bullhead_II-v3.1]</#></b>
== Kernel ==
>> Common <<
- arm64: Revert jump label patches and disable it
  (USB tethering not working correctly after applied jump label patches and enabled it.)
- Revert "fpc1020_tee: Do sched boost when fingerprint sensor touched"
  (Slow recognizing time is already fixed.)
- 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: Include wlan firmware files to the kernel
- qcacld-2.0: allow rps cpu map to be read from ini
- qcacld-2.0: Use CyanogenMod/android_device_nextbit_ether's config ini
- qcacld-2.0: Fix the issue of rpsRxQueueCpuMapList
- qcacld-2.0: WCNSS_qcom_cfg.ini: Correctly set rpsRxQueueCpuMapList

== Recovery ==
- jolla-kernel_bullhead_II-v3.1 applied

<b><#selectbg_g>[bullhead_II-v3.0]</#></b>
== Kernel ==
>> Common <<
- cpuidle: Back to original driver (It makes battery drain.)
- Revert "gpiolib: add IRQF_ONESHOT flag for shared IRQ"
  (It makes touchscreen driver not working properly sometimes when sovc is enabled.)
- arm64: Revert unneeded some changes
- arm64: Applied jump label changes
- wlan: Applied some patches from 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: Applied some changes from CyanogenMod/android_kernel_nextbit_msm8992

>> N <<
- Applied N Preview 4 changes

== AIO ==
- init.bullhead.rc: Properly set max_comp_streams of zram
- Revert "ramdisk: init.bullhead.rc: Enable retention idle state"

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead_II-v3.0 applied

<b><#selectbg_g>[bullhead_II-v2.3]</#></b>
== Kernel ==
>> Common <<
- Built with Linaro GCC 5.3.1
- Linux 3.10.102
- touchscreen: dt2w: Fix wrong unregister in dt2w_doubletap2wake_tmp_dump
  (Fix the issue for user who are using bluetooth device with both sovc and dt2w are enabled.)
- touchscreen, wcd9330: Also check mic state for dt2w and s2w
  (Fix the issue that makes unexpected touch work while using a phone call when dt2w or s2w is enabled.)
- touchscreen: synaptics: Cancel delayed touch_off_work when screen turned on
  (Fix the issue that touchscreen not working sometimes after screen turned on.)
- arp: Ignore request when gateway update attempt detected from other hardware address
  (Prevent ARP Spoofing from fake request ARP packets.)
- sched: Set sched_upmigrate_min_nice to 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
- Fix memset warnings
- 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: Applied some patches from CyanogenMod/android_kernel_nextbit_msm8992
- arm64: Applied some patches from CyanogenMod/android_kernel_nextbit_msm8992
- lpm, cpuidle, spm: Applied some patches from CyanogenMod/android_kernel_nextbit_msm8992
- qos: Disable irq notifier when qos request is removed
- net: Send only BIND and LISTEN events
- Revert "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: Back to N's default driver

== AIO ==
- multirom: Re-built with Linaro GCC 5.3.1
- f2fs-tools: Applied lastest dev branch patches and built with Linaro GCC 5.3.1
- ramdisk: init.bullhead.rc: Enable retention idle state

== Recovery ==
- Re-built with Linaro GCC 5.3.1 and cm-13.0 lastest sources
- jolla-kernel_bullhead_II-v2.3 applied

<b><#selectbg_g>[bullhead_II-v2.2]</#></b>
== Kernel ==
>> Common <<
- wlan: qcacld-2.0: Use caf driver (LA.BF64.1.2.2-05240-8x94.0)
  and applied patches from CyanogenMod/android_kernel_nextbit_msm8992
  (No more disconnection issue.)
- bullhead_defconfig: Disable SCHED_FREQ_INPUT
  (It seems this makes fingerprint recognizing time extremly slow. So disable it.)
- Revert "bullhead_defconfig: disable NF_TARGET_REJECT_SKERR"

>> M <<
- netfilter: IDLETIMER: fix lockdep warning (from N)

== Recovery ==
- jolla-kernel_bullhead_II-v2.2 applied

<b><#selectbg_g>[bullhead_II-v2.1]</#></b>
== Kernel ==
>> Common <<
- mdss: Fix wrong EXPORT_SYMBOL

>> M <<
- Revert "msm: mdss: trigger frame timeout when recovery is in progress"
(This makes timeout error sometimes when turning on the screen.)

== Recovery ==
- jolla-kernel_bullhead_II-v2.1 applied

<b><#selectbg_g>[bullhead_II-v2.0]</#></b>
== Kernel ==
- Faster and smooth performance, Increase battery life time

>> Common <<
- Linux 3.10.101
- msm_hotplug: Fix some bugs and disable by default
(In several test, we don't need hotplugging for our bullhead and recent devices.
It shows faster and smooth performance with long battery's life time without hotplugging.)
- arp: Applied lastest Linux Kernel master's branch changes
- arp_project applied (ARP Spoofing Attack Protecting Project. Will update continuously.)
- arp_project: Ignore reply when request not proceeded or sip is differ with requested tip
- kcal: Add yellow screen fix option
- f2fs: Applied lastest stable branch's changes
- sched: Applied default values in kernel side
- bullhead_defconfig: Add missed conservative governor
- sound: Use franco's sound control driver
- mdss: fb: enable backlight dimmer
- fingerprint: Do sched boost when fingerprint sensor touched
- PM / devfreq: Applied some msm-3.10 changes
- others: Applied some msm-3.10 changes
- Applied some fixes from CyanogenMod/android_kernel_nextbit_msm8992

>> M <<
- Applied marshmallow-dr1.6 changes
- wlan: Applied N Preview 3's wlan driver
- sdcardfs support
- Applied some changes from N Preview 3

>> N <<
- Applied N Preview 3's changes

== AIO ==
- updater-script: Add missing init.d support when sovc_auto_off_delay value changed
- bullhead: Fix max_comp_streams not get applied
- ramdisk: init.bullhead.rc: Do not turn off/on msm_hotplug (Disabled by default)
- Add kcal_fix_yellow on/off option
- f2fs: Update f2fs-tools
- ramdisk: Add devfreq tweaks from franco

== Recovery ==
- jolla-kernel_bullhead_II-v2.0 applied

<b><#selectbg_g>[bullhead_II-v1.0]</#></b>
== Kernel ==
>> Common <<
~~~~~ Intoroduce new jolla-kernel_bullhead_II !! ~~~~~
- Rebuilt with lastest Google msm sources.
- Source cleanup.
- Greatly improved battery life and fix battery drain problems.
- Not applied Linux 3.10.y upstream patches.
  (It makes sense only apply some patches that we needed.)
- Replace UKSM to KSM.
- Applied some KSM upstream patches.
- Adjust default KSM values for save battery life.
- Correctly resume/suspend KSM
  (KSM is enabled by default. It will stop when screen turned off and working again when screen turned on.
   This can save battery life when device suspended.)
- Not applied EAS patches and use default sched with some patches.
  (Device working smoother without this and it shows better performance.
   Instead I applied scheduler and mm patches from franko kernel.)
- Replace f2fs's source to stable branch.
  (I used dev-test branch before but it shows errors and battery drain.
   No problems after changed to stable.)
- Touchscreen and display panel correctly turned off when music stopped when you using SOVC.
  (Before: Display panel remained in resume state and touchscrren not turned off coreectly in some cases.
   After: Now I fixed these issues and there is no more battery drain!!)
- Implement Auto Off Touchscreen for SOVC.
  (When you pressing the touchscreen for a long time touchscreen will turned off.
   It will prevent from wrong touchscreen working and lets you holding the device while walking.
   Default value is 4 seconds and you can change this value in aroma-installer.)
- Now, you can change the governor settings for big cores with msm_hotplug working!!
  (Finally, I figured out this annoying problem! Working well with Kernel Adiutor.
   It will turn on first of big core when you enter the cpu/governor settings in Kernel Adiutor.
   It will working normally again after 5 seconds when you exit from cpu/governor settings.)
- Remove suspend/resume works from touchscreen driver and use FB notifier for each drivers.
  (There was a huge suspend/resume works in touchscreen driver.
   Now suspend/resume works working separately in each drivers.)
- Improved suspend/resume works for Screen Off Volume Control, DoubleTap2Wake and Sweep2Wake.
- Fix race condition in cpu_up work.

== AIO ==
- ramdisk: Update sepolicy binary
- Add sovc_auto_off_delay setting option
- A2DPChecker: Check disconnected state for disable SOVC properly
- ramdisk: init.bullhead.rc: Set min frequency for big cores
- ramdisk: init.bullhead.rc: Turn off msm_thermal while changing governor settings

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead_II-v1.0 applied

<b><#selectbg_g>[bullhead-v9.1]</#></b>
== Kernel ==
>> Common <<
- Built with UBERTC gcc 7.0.0 20160416
- msm_hotplug: Remove up/down work structure and improve big core up/down
- msm_hotplug: Reduce DEFAULT_BIG_CORE_UP_DELAY
- msm_hotplug: Merge duplicated target_big calculation
- msm_hotplug: Update copyright
- Revert "msm_hotplug: Change HZ to original value"
- lowmemorykiller: adapt to vmpressure
- lowmemorykiller: avoid false adaptive LMK triggers
- lowmemorykiller: Enable adaptive lmk by default
- lowmemorykiller: Tunning
- block: Add Zen I/O scheduler
- block: Add V(R) I/O scheduler
- block: bfq: set IOPS mode by default with slice_idle set to 0
- bullhead_defconfig: Change default io-sched to bfq
- mm: ksm, uksm: Disable by default
- f2fs: check its mapping after get page (Fixed) (Fixed kernel panic correctly.)
- f2fs: Applied lastest dev-test branch patches
- touchscreen: s2w, dt2w, sovc: Change register/unregister informations to debug codes
- touchscreen: s2w, dt2w, sovc: Update copyrights, URL and versions
- Revert power_efficient workqueue changes
- lib: lz4: fixed zram with lz4 on big endian machines
- lib: lz4: cleanup unaligned access efficiency detection
- lib/xz: add comments for the intentionally missing break statements
- lib/xz: enable all filters by default in Kconfig
- Revert "net: sched: Change HZ to 1000 of watchdog time"
- net: sched: Do "* 1000 / HZ" for watchdog_timeo
- bullhead_defconfig: Change default TCP Congestion control to CUBIC
- bullhead_defconfig: Sync wlan configs with Google
- qcacld-2.0: Revert caf wlan driver changes
- qcacld-2.0: Applied N Preview 2's wlan driver
- qcacld-2.0: Fix __queue_delayed_work warning messages
- qcacld-2.0: Disable build debug version
- qcacld-2.0: Be quiet 'first packet after WOW wakeup'
- qcacld-2.0: Be quiet PM runtime messages
- qcacld-2.0: Be quiet resume messages
- power: quickwakeup: initial driver
- msm: lpm-levels: add suspend_again handler
- power: catch wake-up requests in suspend_again
- security: selinux: Remove duplicated codes
- Revert "sched, smp: Correctly deal with nested sleeps"
- Revert "smpboot: use kmemleak_not_leak for smpboot_thread_data"

== AIO ==
- Built with UBERTC gcc 7.0.0 20160416
- f2fs: Update f2fs-tools (Applied lastest dev branch changes)
  (Various tools are available: mkfs.f2fs, fsck.f2fs, dump.f2fs, defrag.f2fs, resize.f2fs, sload.f2fs)
- ramdisk: Update sepolicy binary
- multirom: Built with new cm-13.0 sources

== Recovery ==
- Built with UBERTC gcc 7.0.0 20160416
- Built with new cm-13.0 sources
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead-v9.1 applied

<b><#selectbg_g>[bullhead-v9.0]</#></b>
== Kernel ==
>> Common <<
- smpboot: use kmemleak_not_leak for smpboot_thread_data
- sched, smp: Correctly deal with nested sleeps
- touchscreen: dt2w, s2w, sovc: Change queue_work_on to queue_work
- touchscreen: s2w, dt2w, sovc: Unregister input handler when not needed
- touchscreen: s2w, dt2w, sovc: Do not call is_touch_on() every touch interrupts
- touchscreen: synaptics: Make work structure for suspend/resume for fast screen on/off
- synaptics, wcd9330: Fix some of not unregistered after music stopped
- synaptics, sovc, dt2w: Add missed register of dt2w
- f2fs: Applied dev-test branch patches
- f2fs: f2fs: Add missed put_page() in mapping checking (Fix kernel panic)
- ext4 crypto: Applied lastest crypto-3.14 branch patches from tytso
- ext4 crypto: Applied lastest patches from Google n-preview-2
- net: sched: Change HZ to 1000 of watchdog time
- wlan: qcacld-2.0: LA.BF64.1.2.2_rb4.33 from caf
- Applied Google n-preview-2 changes except qcacld-2.0 and cnss changes
- 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: Change HZ to original value
- 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: Applied Google n-preview-2 changes

== AIO ==
- sepolicy: Update binary
- Added F2FS binaries patch
- Fix progress bar

== Recovery ==
- jolla-kernel_bullhead-v9.0 applied

<b><#selectbg_g>[bullhead-v8.4]</#></b>
== Kernel ==
>> Common <<
- wlan: qcacld-2.0: Allow Runtime PM after Scan Completion
- Revert crypto changes except ARM64 CRC32 hw accelerated module
  (Fix battery drain.)
- Add sdcardfs filesystem
- Revert PM upstream changes
- msm: camera: Fix for Memory leak in actuator
- bullhead_defconfig: Change default io-sched to CFQ
- msm8992.dtsi: Adjust thermal limit
- 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: Update binaries
- sepolicy: Update binary

== Recovery ==
- TWRP version up to v3.0.2-0
- jolla-kernel_bullhead-v8.4 applied

<b><#selectbg_g>[bullhead-v8.2]</#></b>
== Kernel ==
>> Common <<
- Built with UBERTC gcc 6.0.0 20160401
- Revert "bcl, msm8992.dtsi: Remove all of cpu related codes (cpufreq, cpumask)"
- Revert "power: bcl: Remove hotplug and freq-control"
- power: bcl: Re-evaluate hotplug for unexpected cpu online

== AIO ==
- Built with UBERTC gcc 6.0.0 20160401
- multirom: Lockscreen Settings on 2nd roms are now available
- sepolicy: Update binary

== Recovery ==
- Built with UBERTC gcc 6.0.0 20160401
- Fix duplicated main screen after decrypted
- themes_multirom: Add Reboot Option
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead-v8.2 applied

<b><#selectbg_g>[bullhead-v8.1]</#></b>
== Kernel ==
>> Common <<
- wlan: qcacld-2.0: Get LA.BF64.1.2.2_rb4.30 from CAF
- msm_hotplug: Remove big core down delay parameter
- msm_hotplug: Do apply_down_lock for big cores
- msm_hotplug: Fix cpu down of big cores
- msm_hotplug: Remove input handler
- msm_hotplug: Make 2 of little cores always on
- msm_hotplug: Fix msm_hotplug_suspend() when max_cpus_online_susp is lager than 1
- msm_thermal: Go to disable mode when device suspended
- msm8992.dtsi: Adjust temp limit
- f2fs: Applies lastes f2fs-stable and dev-test patches
- Revert "sovc, synaptics, mdss: Turn off panel after music stopped when suspended"
  (This has no effect and can't boot to recovery or charging mode.)
- 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: Update binary

== Recovery ==
- TWRP version up to v3.0.1-0
- f2fs-tools: Applied dev branch patches
- jolla-kernel_bullhead-v8.1 applied

<b><#selectbg_g>[bullhead-v8.0]</#></b>
== Kernel ==
>> Common <<
- bcl, msm8992.dtsi: Remove all of cpu related codes (cpufreq, cpumask)
- sovc, synaptics, mdss: Turn off panel after music stopped when suspended
- msm_thermal: Fix to all functions working correctly
- wlan: qcacld-2.0: Sync some codes with n-preview
- crypto: crc32 - Add ARM64 CRC32 hw accelerated module
- crypto: arm64: Applied some patches from Linux 4.5
- f2fs: Applied lastest f2fs-stable linux-4.1.y branch patches
- S*** up cpu cacpcity!! (Spammy kernel logs)

>> M <<
- camera: Fix video recording issue

== AIO ==
- Fix installation issue with SOVC off
- Add Multi ROM Manager
- sepolicy: Update binary
- sepolicy: fix NFC selinux denial
- multirom: Re-built with lastest cm-13.0 sources

== Recovery ==
- Re-built with lastest cm-13.0 sources

<b><#selectbg_g>[bullhead-v7.4]</#></b>
== Kernel ==
- msm_thermal, msm8992.dts: Improve thermal control

== AIO ==
- updater-script: Extract missed 'init.superuser.rc'
- mkbootimg: Fix init.d and SOVC off issue with some of roms

== Recovery ==
- jolla-kernel_bullhead-v7.4 applied

<b><#selectbg_g>[bullhead-v7.3]</#></b>
== Kernel ==
- cpufreq: add despair governor
- cpufreq: add bioshock governor
- cpufreq: despair: Remove unsused cpufreq_notify_utilization

== AIO ==
- Add multirom_hack.sh (Fix installation in 2nd roms)

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead-v7.3 applied

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

== AIO ==
- SOVC On/Off support

== Recovery ==
- jolla-kernel_bullhead-v7.2 applied

<b><#selectbg_g>[bullhead-v7.1]</#></b>
== Kernel ==
- ASoC: Fix can't play mp3 files in some of roms like Dirty Unicorns
- camera: Fix torch tile not working in MHC19J and 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

== Recovery ==
- Applied lastest TWRP patches from omni android-6.0
- jolla-kernel_bullhead-v7.1 applied

<b><#selectbg_g>[bullhead-v7.0]</#></b>
== Kernel ==
- Linux 3.10.100
- Applied Android M and Android N recent patches from Google
- msm_hotplug, fingerprint: Fix related with fingerprint
- block: add SIOPLUS I/O scheduler
- sovc, wcd9330: Increase touch off delay time
- sovc: Decrease touch degree for volume control
- sovc: Increase re-exec delay for track control

== AIO ==
- Android N support (jolla-kernel_bullhead-v7.0N)
- multirom: MHC19J support
- A2DPChecker: Increase PLAYING_CHECK_DELAY

== Recovery ==
- MHC19J support
- jolla-kernel_bullhead-v7.0 applied

<b><#selectbg_g>[bullhead-v6.2]</#></b>
== Kernel ==
- Applied recent EAS patches from Google

== Recovery ==
- jolla-kernel_bullhead-v6.2 applied

<b><#selectbg_g>[bullhead-v6.1]</#></b>
== Kernel ==
- Linux 3.10.99
- Revert "msm8992 initial overclocking" (It needs more fix for frequency tables and it makes kernel panic sometimes.)
- f2fs: Applied recent f2fs-stable patches
- f2fs: recovery missing dot dentries in root directory
- kexec: Applied upstream patches
- msm: Applies some patches for 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: Fix fingerprints problem after booting into secondary ROMs

== Recovery ==
- Get images from z31s1g's Play theme
- jolla-kernel_bullhead-v6.1 applied

<b><#selectbg_g>[bullhead-v6.0]</#></b>
== Kernel ==
- Linux 3.10.98
- Revert "bullhead_defconfig: Enable FB_MSM_MDSS_HDMI_PANEL"
- Revert "bullhead_defconfig: Enable MODULES support"
- msm_hotplug, cpu, fingerprint: Turn on all of cpus when fingerprint working
  (Fix fingerprint not working sometimes.)
- msm8992 initial overclocking

== AIO ==
- MultiROM: Fix kexec's wrong addresses (Now secondary roms are booting normally with their kernels.)
- MultiROM: Fix adbd closed issue
- MultiROM: Rebuild with recent cm-13.0 sources

== Recovery ==
- Fix adbd closed issue
- jolla-kernel_bullhead-v6.0 applied

<b><#selectbg_g>[bullhead-v6.0_beta]</#></b>
== Kernel ==
- kexec hardboot support

== AIO ==
- MultiROM Support!! (Experimental)

== Recovery ==
- MultiROM TWRP v3.0.0-0
- jolla-kernel_bullhead-v6.0_beta applied

<b><#selectbg_g>[bullhead-v5.2]</#></b>
== Kernel ==
- fs: Change fsync on/off to dynamic fsync
- msm8992.dtsi: Set default cpubw governor to bw_hwmon
- power: block IPA_WS wakelock on/off support
- cpufreq_elementalx: lower sampling_down_factor for big cluster
- sound_control: more cleanup and fixes
- Fix GCC 6 misleading-indentation warnings

== Recovery ==
- TWRP version up to v3.0.0
- jolla-kernel_bullhead-v5.2 applied

== AIO ==
- ramdisk: Add init.bullhead.rc
- ramdisk: Include modified init.bullhead.power.sh scripts to init.bullhead.rc
- Fix big cluster's governor set to performance while booting

<b><#selectbg_g>[bullhead-v5.1]</#></b>
== Kernel ==
- Applied EAS patches from Google
  (About EAS: http://www.linaro.org/blog/core-dump/energy-aware-scheduling-eas-project/)
- sovc: Turn off the touchscreen directly without turn on the display
- usb: gadget: mass_storage: added sysfs entry for cdrom to LUNs (Using Android device as USB storage or CD-Rom/DriveDroid Support)
  (About DriveDroid: https://play.google.com/store/apps/details?id=com.softwarebakery.drivedroid)

== Recovery ==
- jolla-kernel_bullhead-v5.1 applied

== AIO ==
- AIO: Add ramdisk compress type selection and init.d patch options (Already implemented in reuploaded v5.0)

<b><#selectbg_g>[bullhead-v5.0]</#></b>
== Kernel ==
- Linux 3.10.96
- mm: UKSM Support
- devfreq: Adreno idler Support
- wlan: qcacld-2.0: Get LA.BF64.1.2.9 from caf (No Wi-Fi issues/No slow Wi-Fi/No disconnection)
- sovc: Fix vibration again after removing finger from the screen
- msm_hotplug: Add new big_core_down_delay parameter
- msm_hotplug: Do not hotplugging when disabled or suspended
- msm_hotplug, cpu: Only block hotplugging for big cores when suspended
- msm_hotplug, fingerprint: Do not hotplugging when disabled
- msm_hotplug: Make it difficult to turn on big cores
- msm_hotplug: Remove 'apply_down_lock(cpu)' from big cores
- msm_hotplug: Increase DEFAULT_BIG_CORE_UP_DELAY
- msm_hotplug: Remove 'online_little' variables
- msm_hotplug: Skip if all of big cores turned on or off
- 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: Applied some of patches with workqueue warning fix
- soc: qcom: common_log: Fix a memory leak in common_log driver
- ASoC: Applied upstream patches from Cyanogenmod
- hid: Add driver for FiiO USB DAC
- cpuidle: Applied some patches
- msm: spm: Applied some patches
- msm: lpm-levels: Applied some patches
- lib: add support for LZ4-compressed kernel
- lib/lz4: Applied upstream patches
- lib/decompressors: Applied upstream patches
- bullhead_defconfig: LZ4 ramdisk/decompress support
- bullhead_defconfig: : Enable MODULES support
- bullhead_defconfig: Enable FB_MSM_MDSS_HDMI_PANEL
- PM / sleep: Applied some patches
- cpufreq: interactive: Applied some patches
- cpufreq: Applied some patches
- cpufreq: add ZZMoove big.LITTLE Edition (bLE) development version as of 09.01.2016
- cpufreq: Fallback to interactive governor
- haptic: Vibration control support by kernel control apps

== Recovery ==
- Built with lastest omni android-6.0 TWRP sources with cm-13.0 as base.
- jolla-kernel_bullhead-v5.0 applied
- f2fs-tools: Applied lastest dev branch patches
- f2fs-tools: Applied Android patches from Cyanogenmod
- Use LZ4 compressed ramdisk image

== AIO ==
- AIO: Use modified AIK scripts for mkbootimg and make LZ4 compressed ramdisk by default

<b><#selectbg_g>[bullhead-v4.3]</#></b>
== Kernel ==
- Built with UBERTC gcc-6.0.0
- Fix for GCC 6.0.0
- Revert "msm_thermal: Disable core control"
- thermal: disable thermal-engine hotplug and poll instead
- power: bcl: Remove hotplug and freq-control
- Revert "ksm: check and skip page, if it is already scanned"
  (It seems this makes random reboot. There was an kernel panic cause of NULL pointer dereference in KSM.)
- ksm: use the helper method to do the hlist_empty check
- mm: ksm: Optimize defaults
- msm: thermal: Quiet the threshold logs
- sovc: Remove 'mic detected' log
- proc: Applied some patches
- seccomp: cap SECCOMP_RET_ERRNO data to MAX_ERRNO
- proc: add a reschedule point in proc_readfd_common()
- lowmemorykiller: Applied some patches with rbtree optimization
- ion: Applied some patches
- fs: Applied some patches
- msm: camera: 8992: 8994: delete session if post event failed
- msm: camera: Handling openCamera timeout
- selinux: Improve avc logging
- KEYS: Applied some patches
- include/linux/poison.h: fix LIST_POISON{1,2} offset
- qcacld-2.0: Fix missed error check
- qcacld-2.0: Fix always return failure
- cpufreq: impulse: update to latest from @neobuddy89

== Recovery ==
- Built with UBERTC gcc-6.0.0
- Built with lastest omni android-6.0 TWRP sources with cm-13.0 as base.
- jolla-kernel_bullhead-v4.3 applied
- f2fs-tools: Applied dev branch patches

== AIO ==
- Update sepolicy binary

<b><#selectbg_g>[bullhead-v4.2]</#></b>
== Kernel ==
- msm_hotplug: Fix target_big calculation (Effective hotplugging and improve slow Wi-Fi.)
- sovc: Turn off touch screen when mic detected (Fix touchscreen working while on a call.)

== Recovery ==
- jolla-kernel_bullhead-v4.2 applied

<b><#selectbg_g>[bullhead-v4.1]</#></b>
== Kernel ==
- Built with UBERTC gcc-5.3.1
- dt2w: Disable 'dt2w_switch_tmp' when sovc is disabled
- f2fs: Applied lastest updates (for-f2fs-4.5)

== Recovery ==
- Built with UBERTC gcc-5.3.1
- Built with lastest omni android-6.0 TWRP sources with cm-13.0 as base.
- jolla-kernel_bullhead-v4.1 applied

== AIO ==
- Update AROMA Installer
- Make LED patch as option.
- Make user to choose applications.
- Make applications copy to data partition.

== jolla-kernel Updater ==
- Change minSdk version to 23.
- Request permission for external storage write.
- Fix bug of download bar always saying "Downloading".
- Remove deprecated codes. (Except main activity for navigation view.)
- Fix Lint warnings.
- Remove uneeded libraries.
- Use cz.msebera.android httpclient v4.4.1.1 library.

<b><#selectbg_g>[bullhead-v4.0]</#></b>
== Kernel ==
- Built with gcc-5.3.0
- lowmemorykiller: skip dying or exiting task
- f2fs: Applied lastest dev branch patches
- ext4 crypto: Applied lastest patches
- soc: qcom: msm_perf: Prevent perfd to change max cpu freq
- wakeup: add toggle for bluedroid_timer wakelock
- wakeup: add toggle for bluesleep wakelock
- msm: qpnp-haptic: disable vibration when vmax_mv_strong is set to min
- msm: camera: Applies some of patches
- mmc: sd: Error out on bus speed switch failure
- arm64: Applied relaxed power usage optimizing patches
- arm64: lib: memory utilities optimization
- workqueue: Applied some of patches
- sched: Applied some of patches
- mm: Applied some of patches
- qcacld: fix uninitialized variable error
- staging: qcacld-2.0: build with default options
- Revert "qcacld: make non-interruptable wait for Tlshim Rx shutdown"
- cpufreq: cpu-boost: don't boost big cluster on input touch unless it has at least 1 task running on any of its cores to save power
- cpufreq: cpu-boost: export input_boost_enable to userspace
- cpufreq: cpu-boost: don't boost over user set max freq
- cpufreq: Fix timer/workqueue corruption by protecting reading governor_enabled
- cpufreq: set policy with user_policy data
- tick: don't update idle time if cpu offline
- proc: stat: fix idle time jump
- usb: gadget: storage: Support READ_TOC for MacOS
- USB: android: Fix memory leak in mass_storage_function_init()
- USB: f_fs: change wait as freezable
- dts: mmc: remove wakeup on idle flag
- mmc: core: Use mmc_flush_cache() during mmc suspend
- tcp_cubic: Applied some of patches
- fs: Applied some of patches
- vfs: Applied some of patches
- writeback: Applied some of patches
- fs/proc: Applied some of patches
- block: Applied some of patches
- block: Make CFQ default to IOPS mode on SSDs
- cfq-iosched: fix the setting of IOPS mode on SSDs
- sched: LOAD_FREQ (4*HZ+61) avoids loadavg Moire
- msm: Fix high load average from uninterruptible waits
- soc: qcom: Applied some of patches
- mpm: Fix clk_get API issue
- rpm-smd: Applied some of patches
- Makefile: build for Cortex A57
- Makefile: use big.Little a53/a57 flag
- mdss: use an interruptible thread on edp to reduce load_average
- msm: Use interruptible wait to not affect load average
- qcom: msm-core: uninterruptible wait - you can kiss my arse goodbye
- msm: Use interruptible wait to not affect load average
- msm: mdss: if the event is interrupted 'continue' earlier
- bullhead: Fix Kconfig warnings

== Recovery ==
- jolla-kernel_bullhead-v4.0 applied

== AIO ==
- Add charging LED patch

<b><#selectbg_g>[bullhead-v3.2]</#></b>
== Kernel ==
- touchscreen: Fix dt2w or sw2w not working without sovc enabled (Fix knock-on not working issue.)
- fs: xattr simplifications
- f2fs: Applied f2fs dev branch updates
- md: Applied some of patches
- fs/buffer.c: increase the buffer-head per-CPU LRU size
- soc: qcom: smd: Applied some of patches

== Recovery ==
- jolla-kernel_bullhead-v3.2 applied

<b><#selectbg_g>[bullhead-v3.1]</#></b>
== Kernel ==
>> Increase battery life <<
- soc: qcom: msm_perf: prevent perfd to change max cpus and freqs
- soc: qcom: msm_perf: prevent perfd to change workload
- bullhead: Disable msm_performance's hotplugging

- leds-qpnp: More smooth charging LED

== Recovery ==
- jolla-kernel_bullhead-v3.1 applied

<b><#selectbg_g>[bullhead-v3.0]</#></b>
== Kernel ==
- hotplug: Add msm_hotplug driver and adaptive for big and little
- touchscreen: Add doubletap2wake and sweep2wake
- touchscreen: Temporary enable dt2w when playing music
- leds-qpnp: Smooth blinking charging LED & smooth notifier LED
- power:qpnp-charger: extended charge time from 30s to 100s when battery status is near to full
- hwrng: Avoid manual device_create_file() calls
- cpufreq: Add impulse elementalx, wheatley, impulse, conservative governors
- cpufreq: interactive: Applied some of patches
- tcp: enable sockets to use MSG_FASTOPEN by default
- mdss_fb: backlight dimmer option
- power: Disable the lge crash handler
- f2fs: Fix a system panic caused by f2fs_follow_link
- f2fs: remove unnecessary new_valid_dev() check
- f2fs: Add f2fs_kvfree from f2fs-stable repository
- random: Add /dev/frandom support
- random, random32: Applied Linux upstream patches
- zram, zsmalloc, zpool: Appiled upstream patches
- crypto: msm: Appiled some of patches
- md: Appiled some of patches
- dm verity: Appiled some of patches

== Recovery ==
- Built with lastest omni android-6.0 branch TWRP sources
- Use lastest cm-13.0 sources as base
- f2fs-tools: v1.6.0 applied
- jolla-kernel_bullhead-v3.0 applied

== AIO ==
- fstab.bullhead: Fix f2fs boot issue
- A2DPChecker: Temporary enable dt2w when playing music

<b><#selectbg_g>[bullhead-v2.0]</#></b>
== Kernel ==
- Built with UBERTC gcc 5.2.1
- Screen Off Volume Controller added
- Linux 3.10.94
- Marshmallow 6.0.1 updates applied
- Faux Sound control v3.6 added
- fsync on/off support
- exFAT support
- Disable crc check in mmc for performance.
- Add SIO and FIOPS i/o schedulers
- Change default io-sched to FIOPS
- Decrease notification vibration

== Recovery ==
- jolla-kernel_bullhead-v2.0 applied

<b><#selectbg_g>[bullhead-v1.0]</#></b>
== Kernel ==
- Fisrst release!
- Fix bullhead's shit yellow screen!
- Linux 3.10.93
- Enable TCP_CONG_ADVANCED and set 'westwood' as default
- NTFS suppport
- f2fs support
- Lastest f2fs-3.10 patches applied
- Use Android device as USB keyboard/mouse
- BFQ IO scheduler added and set as default
- mdss KCAL control support

== Recovery ==
- jolla-kernel_bullhead-v1.0 applied


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

<#selectbg_g>->></#> Thank You for choosing my jolla-kernel!! :)
