forked from rubenslte/android_kernel_samsung_msm8226
Compare commits
72
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8861784d5e | ||
|
|
c8e330b357 | ||
|
|
ce8498c8a0 | ||
|
|
b6f7302c86 | ||
|
|
78db858f9f | ||
|
|
05ce8260b3 | ||
|
|
c258a58750 | ||
|
|
60a8f7091d | ||
|
|
4ce3fc012a | ||
|
|
fa5b0a5f38 | ||
|
|
d30f6eaa41 | ||
|
|
d7eeb72d07 | ||
|
|
12d47bdb47 | ||
|
|
416b4886bd | ||
|
|
b859e5f319 | ||
|
|
745e353d70 | ||
|
|
8ee6adc28b | ||
|
|
2f29fdcdca | ||
|
|
cdd2564979 | ||
|
|
639a3bc859 | ||
|
|
abe85acc79 | ||
|
|
f6b1b144af | ||
|
|
5b51cd842f | ||
|
|
a5e8e3c1c0 | ||
|
|
4f70b49a53 | ||
|
|
2c386be01f | ||
|
|
3bd6f942c5 | ||
|
|
1278d7a787 | ||
|
|
d4d0b32d53 | ||
|
|
35b82e9fd8 | ||
|
|
b7b5bca415 | ||
|
|
ae701e79ad | ||
|
|
229dc36a9a | ||
|
|
847a6bea50 | ||
|
|
2c5b4ba69c | ||
|
|
b255afef02 | ||
|
|
f25b71209b | ||
|
|
e342bc9b81 | ||
|
|
0bb4c13ca7 | ||
|
|
1c82f2e75f | ||
|
|
dc6a6d7052 | ||
|
|
82db73dfc8 | ||
|
|
41727a565b | ||
|
|
3a382f447a | ||
|
|
8f240cf6d6 | ||
|
|
ced6fd4dd2 | ||
|
|
c74c0b28f4 | ||
|
|
f39058df68 | ||
|
|
8ab6a465fe | ||
|
|
56115624f9 | ||
|
|
c6b2d35cf6 | ||
|
|
e122ed6424 | ||
|
|
29f3f6924d | ||
|
|
21dfec1829 | ||
|
|
73bb7ae2f8 | ||
|
|
ce18281b0a | ||
|
|
ea3d33f928 | ||
|
|
73248a44a7 | ||
|
|
6db723ca40 | ||
|
|
770d94c3b5 | ||
|
|
e145060d20 | ||
|
|
3380a4e394 | ||
|
|
5783abdda7 | ||
|
|
7a72b055f2 | ||
|
|
b3a082e04c | ||
|
|
bb4a9e374f | ||
|
|
05499700fc | ||
|
|
a042d77816 | ||
|
|
287acc3239 | ||
|
|
15382c6c3f | ||
|
|
3acc8847ed | ||
|
|
fc629c45a9 |
@@ -28,14 +28,19 @@
|
||||
cell-index = <20>;
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <&msmgpio 34 0 /* sda */
|
||||
&msmgpio 36 0 /* scl */>;
|
||||
|
||||
&msmgpio 36 0 /* scl */>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
actuator0: qcom,actuator@50 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "qcom,actuator";
|
||||
cell-index = <0>;
|
||||
reg = <0x50>;
|
||||
};
|
||||
actuator1: qcom,actuator@36 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "qcom,actuator";
|
||||
cell-index = <1>;
|
||||
reg = <0x36>;
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
/* Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
&soc {
|
||||
battery {
|
||||
status = "okay";
|
||||
compatible = "samsung,sec-battery";
|
||||
battery,vendor = "SDI SDI";
|
||||
battery,charger_name = "qpnp-chg";
|
||||
battery,fuelgauge_name = "bms";
|
||||
battery,technology = <2>; /* POWER_SUPPLY_TECHNOLOGY_LION */
|
||||
|
||||
battery,chip_vendor = "QCOM";
|
||||
battery,temp_adc_type = <1>; /* SEC_BATTERY_ADC_TYPE_AP */
|
||||
|
||||
battery,polling_time = <10 30 30 30 3600>;
|
||||
|
||||
battery,adc_check_count = <5>;
|
||||
|
||||
battery,cable_check_type = <4>; /* SEC_BATTERY_CABLE_CHECK_PSY */
|
||||
battery,cable_source_type = <3>; /* SEC_BATTERY_CABLE_SOURCE_EXTERNAL */
|
||||
battery,event_waiting_time = <600>;
|
||||
battery,polling_type = <1>; /* SEC_BATTERY_MONITOR_ALARM */
|
||||
battery,monitor_initial_count = <3>;
|
||||
|
||||
battery,battery_check_type = <5>; /* SEC_BATTERY_CHECK_CHARGER */
|
||||
battery,check_count = <0>;
|
||||
battery,check_adc_max = <1440>;
|
||||
battery,check_adc_min = <0>;
|
||||
|
||||
battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */
|
||||
|
||||
battery,thermal_source = <2>; /* SEC_BATTERY_THERMAL_SOURCE_ADC */
|
||||
battery,temp_check_type = <2>; /* SEC_BATTERY_TEMP_CHECK_TEMP */
|
||||
battery,temp_check_count = <1>;
|
||||
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
|
||||
battery,full_check_type_2nd = <3>; /* SEC_BATTERY_FULLCHARGED_TIME */
|
||||
battery,full_check_count = <2>;
|
||||
battery,chg_gpio_full_check = <0>;
|
||||
battery,chg_polarity_full_check = <1>;
|
||||
|
||||
/* SEC_BATTERY_FULL_CONDITION_SOC |
|
||||
SEC_BATTERY_FULL_CONDITION_NOTIMEFULL |
|
||||
SEC_BATTERY_FULL_CONDITION_VCELL */
|
||||
battery,full_condition_type = <13>;
|
||||
battery,full_condition_soc = <95>;
|
||||
battery,full_condition_vcell = <4250>;
|
||||
|
||||
battery,recharge_check_count = <1>;
|
||||
battery,recharge_condition_type = <4>; /* SEC_BATTERY_RECHARGE_CONDITION_VCELL */
|
||||
battery,recharge_condition_soc = <98>;
|
||||
battery,recharge_condition_vcell = <4300>;
|
||||
|
||||
battery,charging_total_time = <21600>;
|
||||
battery,recharging_total_time = <5400>;
|
||||
battery,charging_reset_time = <0>;
|
||||
|
||||
charger {
|
||||
status = "disable"
|
||||
/* Charger */
|
||||
battery,charger_name = "qpnp-chg";
|
||||
battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */
|
||||
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
|
||||
|
||||
battery,input_current_limit = <1000 500 500 1000 500 1000 1000 500 500 1000 650 1000 1000 500 500 300 1000 1000 300 1000 1000 500 500>;
|
||||
battery,fast_charging_current = <1000 0 500 1000 500 1000 1000 500 0 1000 750 1000 1000 (-1) 500 300 1000 1000 300 1000 1000 0 0>;
|
||||
battery,full_check_current_1st = <170 0 170 170 170 170 170 170 0 170 170 170 170 0 170 170 170 170 170 170 170 0 0>;
|
||||
battery,full_check_current_2nd = <2400 0 2400 2400 2400 2400 2400 2400 0 2400 2400 2400 2400 0 2400 2400 2400 2400 2400 2400 2400 0 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
Regular → Executable
+26
-8
@@ -13,6 +13,7 @@
|
||||
/include/ "dsi-panel-s6e8aa0a-720p-video.dtsi"
|
||||
/include/ "msm8226-camera-sensor-mtp-s3ve-r01.dtsi"
|
||||
/include/ "msm8226-sm5502.dtsi"
|
||||
/include/ "msm8226-sec-s3ve3geur-battery-data.dtsi"
|
||||
/*/include/ "msm8226-s3ve-sensor-r01.dtsi"*/
|
||||
|
||||
&soc {
|
||||
@@ -99,9 +100,10 @@
|
||||
cell-index = <23>;
|
||||
compatible = "i2c-gpio";
|
||||
gpios = <&msmgpio 23 0 /* sda */
|
||||
&msmgpio 16 0 /* scl */
|
||||
>;
|
||||
i2c-gpio,delay-us = <2>;
|
||||
&msmgpio 16 0 /* scl */>;
|
||||
i2c-gpio,delay-us = <2>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
an30259a@30 {
|
||||
compatible = "an30259a,led";
|
||||
reg = <0x30>;
|
||||
@@ -126,6 +128,8 @@
|
||||
gpios = <&msmgpio 114 0 /* sda */
|
||||
&msmgpio 66 0 /* scl */
|
||||
>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cypress_touchkey@20 {
|
||||
compatible = "cypress,cypress-tkey";
|
||||
@@ -409,9 +413,6 @@
|
||||
qcom,pm8226@0 {
|
||||
pm8226_chg: qcom,charger {
|
||||
qcom,ext-ovp-present = <0>;
|
||||
sec,temp-high-recover-event = <470>;
|
||||
sec,temp-high-recover-normal = <470>;
|
||||
sec,temp-high-recover-lpm = <470>;
|
||||
};
|
||||
|
||||
qcom,leds@a300 {
|
||||
@@ -620,14 +621,31 @@
|
||||
};
|
||||
};
|
||||
|
||||
/ {
|
||||
mtp_batterydata: qcom,battery-data {
|
||||
qcom,rpull-up-kohm = <100>;
|
||||
qcom,vref-batt-therm = <1800000>;
|
||||
|
||||
/include/ "batterydata-palladium.dtsi"
|
||||
/include/ "batterydata-mtp-3000mah.dtsi"
|
||||
};
|
||||
};
|
||||
|
||||
&pm8226_bms {
|
||||
status = "ok"
|
||||
qcom,enable-fcc-learning;
|
||||
qcom,min-fcc-learning-soc = <20>;
|
||||
qcom,min-fcc-ocv-pc = <30>;
|
||||
qcom,min-fcc-learning-samples = <5>;
|
||||
qcom,fcc-resolution = <10>;
|
||||
qcom,battery-data = <&mtp_batterydata>;
|
||||
};
|
||||
|
||||
&pm8226_chg {
|
||||
qcom,charging-disabled;
|
||||
sec,imax-ta = <1000>;
|
||||
sec,imax-usb = <500>;
|
||||
qcom,battery-data = <&mtp_batterydata>;
|
||||
qcom,cool-bat-decidegc = <(-50)>;
|
||||
qcom,warm-bat-decidegc = <700>;
|
||||
};
|
||||
|
||||
&slim_msm {
|
||||
|
||||
@@ -1897,6 +1897,7 @@ CONFIG_INPUT_KEYRESET=y
|
||||
#
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_KEYBOARD_ABOV_TOUCH=y
|
||||
# CONFIG_KEYBOARD_ABOV_DUAL_DETECT is not set
|
||||
# CONFIG_KEYBOARD_ABOV_TOUCH_PATEK is not set
|
||||
CONFIG_INPUT_ENABLED=y
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2556,7 +2522,7 @@ CONFIG_IR_LIRC_CODEC=y
|
||||
#
|
||||
# CONFIG_MSM_CAMERA is not set
|
||||
CONFIG_MSMB_CAMERA=y
|
||||
CONFIG_MSMB_CAMERA_DEBUG=y
|
||||
# CONFIG_MSMB_CAMERA_DEBUG is not set
|
||||
CONFIG_MSM_CAMERA_SENSOR=y
|
||||
CONFIG_MSM_CPP=y
|
||||
CONFIG_MSM_CCI=y
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3159,78 +3125,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3300,20 +3194,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3321,7 +3201,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3411,7 +3290,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3663,7 +3542,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3672,7 +3550,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3779,12 +3656,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3916,7 +3793,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4080,8 +3957,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4096,14 +3973,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4118,12 +3995,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4152,7 +4028,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4181,7 +4057,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4210,7 +4086,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4229,7 +4105,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2556,7 +2522,7 @@ CONFIG_IR_LIRC_CODEC=y
|
||||
#
|
||||
# CONFIG_MSM_CAMERA is not set
|
||||
CONFIG_MSMB_CAMERA=y
|
||||
CONFIG_MSMB_CAMERA_DEBUG=y
|
||||
# CONFIG_MSMB_CAMERA_DEBUG is not set
|
||||
CONFIG_MSM_CAMERA_SENSOR=y
|
||||
CONFIG_MSM_CPP=y
|
||||
CONFIG_MSM_CCI=y
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3159,78 +3125,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3300,20 +3194,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3321,7 +3201,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3411,7 +3290,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3663,7 +3542,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3672,7 +3550,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3779,12 +3656,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3916,7 +3793,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4080,8 +3957,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4096,14 +3973,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4118,12 +3995,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4152,7 +4028,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4181,7 +4057,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4210,7 +4086,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4229,7 +4105,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1622,8 +1622,8 @@ CONFIG_QSEECOM=y
|
||||
# CONFIG_QFP_FUSE is not set
|
||||
# CONFIG_QPNP_MISC is not set
|
||||
CONFIG_SEC_MISC=y
|
||||
CONFIG_CHECK_SIMSLOT_COUNT=y
|
||||
CONFIG_CHECK_SIMSLOT_COUNT_GPIO=66
|
||||
# CONFIG_CHECK_SIMSLOT_COUNT is not set
|
||||
# CONFIG_CHECK_SIMSLOT_COUNT_GPIO is not set
|
||||
# CONFIG_BCM2079X_NFC_I2C is not set
|
||||
# CONFIG_SEC_NFC_I2C is not set
|
||||
# CONFIG_SEC_NFC is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2556,7 +2522,7 @@ CONFIG_IR_LIRC_CODEC=y
|
||||
#
|
||||
# CONFIG_MSM_CAMERA is not set
|
||||
CONFIG_MSMB_CAMERA=y
|
||||
CONFIG_MSMB_CAMERA_DEBUG=y
|
||||
# CONFIG_MSMB_CAMERA_DEBUG is not set
|
||||
CONFIG_MSM_CAMERA_SENSOR=y
|
||||
CONFIG_MSM_CPP=y
|
||||
CONFIG_MSM_CCI=y
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3159,78 +3125,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3300,20 +3194,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3321,7 +3201,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3411,7 +3290,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3663,7 +3542,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3672,7 +3550,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3779,12 +3656,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3915,7 +3792,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4079,8 +3956,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4095,14 +3972,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4117,12 +3994,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4151,7 +4027,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4180,7 +4056,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4209,7 +4085,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4228,7 +4104,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3160,78 +3126,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3301,20 +3195,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3322,7 +3202,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3412,7 +3291,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3664,7 +3543,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3673,7 +3551,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3780,12 +3657,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3918,7 +3795,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4082,8 +3959,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4098,14 +3975,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4120,12 +3997,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4154,7 +4030,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4183,7 +4059,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4212,7 +4088,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4231,7 +4107,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3160,78 +3126,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3301,20 +3195,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3322,7 +3202,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3412,7 +3291,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3664,7 +3543,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3673,7 +3551,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3780,12 +3657,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3918,7 +3795,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4082,8 +3959,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4098,14 +3975,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4120,12 +3997,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4154,7 +4030,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4183,7 +4059,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4212,7 +4088,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4231,7 +4107,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2304,9 +2270,9 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_QPNP_CHARGER is not set
|
||||
# CONFIG_QPNP_SEC_CHARGER is not set
|
||||
# CONFIG_LTC4088_CHARGER is not set
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_BATTERY_BCL is not set
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_QPNP_BMS is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3160,78 +3126,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3301,20 +3195,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3322,7 +3202,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3412,7 +3291,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3664,7 +3543,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3673,7 +3551,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3780,12 +3657,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3800,7 +3677,8 @@ CONFIG_BATTERY_SAMSUNG_DATA_FILE=""
|
||||
# CONFIG_FUELGAUGE_DUMMY is not set
|
||||
# CONFIG_FUELGAUGE_MAX17042 is not set
|
||||
# CONFIG_FUELGAUGE_MAX17048 is not set
|
||||
# CONFIG_FUELGAUGE_MAX17050 is not set
|
||||
CONFIG_FUELGAUGE_MAX17050=y
|
||||
CONFIG_FUELGAUGE_MAX17050_COULOMB_COUNTING=y
|
||||
# CONFIG_FUELGAUGE_MAX77823 is not set
|
||||
# CONFIG_CHARGER_DUMMY is not set
|
||||
# CONFIG_CHARGER_SMB328 is not set
|
||||
@@ -3918,7 +3796,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4082,8 +3960,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4098,14 +3976,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4120,12 +3998,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4154,7 +4031,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4183,7 +4060,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4212,7 +4089,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4231,7 +4108,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -92,7 +92,7 @@ CONFIG_RCU_FAST_NO_HZ=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_GENERIC_SCHED_CLOCK=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CGROUP_DEBUG=y
|
||||
# CONFIG_CGROUP_DEBUG is not set
|
||||
CONFIG_CGROUP_FREEZER=y
|
||||
# CONFIG_CGROUP_DEVICE is not set
|
||||
# CONFIG_CPUSETS is not set
|
||||
@@ -135,7 +135,7 @@ CONFIG_EXPERT=y
|
||||
CONFIG_UID16=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
@@ -159,7 +159,7 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_PERF_COUNTERS is not set
|
||||
# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLUB_DEBUG=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
CONFIG_COMPAT_BRK=y
|
||||
# CONFIG_SLAB is not set
|
||||
CONFIG_SLUB=y
|
||||
@@ -179,7 +179,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y
|
||||
CONFIG_USE_GENERIC_SMP_HELPERS=y
|
||||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_DMA_API_DEBUG=y
|
||||
# CONFIG_HAVE_DMA_API_DEBUG is not set
|
||||
CONFIG_HAVE_HW_BREAKPOINT=y
|
||||
CONFIG_HAVE_ARCH_JUMP_LABEL=y
|
||||
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
|
||||
@@ -237,18 +237,18 @@ CONFIG_BLOCK_SUPPORT_STLOG=y
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_TEST=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_ROW=y
|
||||
# CONFIG_IOSCHED_TEST is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_ROW is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
CONFIG_IOSCHED_BFQ=y
|
||||
CONFIG_CGROUP_BFQIO=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_ROW is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_BFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK is not set
|
||||
# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
|
||||
# CONFIG_INLINE_SPIN_LOCK is not set
|
||||
@@ -664,15 +664,15 @@ CONFIG_CPU_HAS_L2_PMU=y
|
||||
CONFIG_MSM_SMD=y
|
||||
# CONFIG_MSM_SMD_PKG3 is not set
|
||||
CONFIG_MSM_SMD_PKG4=y
|
||||
CONFIG_MSM_SMD_DEBUG=y
|
||||
# CONFIG_MSM_SMD_DEBUG is not set
|
||||
CONFIG_MSM_BAM_DMUX=y
|
||||
CONFIG_MSM_N_WAY_SMD=y
|
||||
CONFIG_MSM_N_WAY_SMSM=y
|
||||
CONFIG_MSM_SMP2P=y
|
||||
CONFIG_MSM_SMP2P_TEST=y
|
||||
CONFIG_MSM_RESET_MODEM=y
|
||||
CONFIG_MSM_SMD_LOGGING=y
|
||||
CONFIG_MSM_IPC_LOGGING=y
|
||||
# CONFIG_MSM_RESET_MODEM is not set
|
||||
# CONFIG_MSM_SMD_LOGGING is not set
|
||||
# CONFIG_MSM_IPC_LOGGING is not set
|
||||
CONFIG_MSM_SMD_NMEA=y
|
||||
CONFIG_MSM_SMD_TTY=y
|
||||
CONFIG_MSM_SMD_QMI=y
|
||||
@@ -722,10 +722,10 @@ CONFIG_MSM_PIL_VENUS=y
|
||||
CONFIG_MSM_PIL_PRONTO=y
|
||||
CONFIG_MSM_SCM=y
|
||||
# CONFIG_MSM_BUSPM_DEV is not set
|
||||
CONFIG_MSM_TZ_LOG=y
|
||||
CONFIG_MSM_RPM_LOG=y
|
||||
CONFIG_MSM_RPM_STATS_LOG=y
|
||||
CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG=y
|
||||
# CONFIG_MSM_TZ_LOG is not set
|
||||
# CONFIG_MSM_RPM_LOG is not set
|
||||
# CONFIG_MSM_RPM_STATS_LOG is not set
|
||||
# CONFIG_MSM_RPM_RBCPR_STATS_V2_LOG is not set
|
||||
CONFIG_MSM_DIRECT_SCLK_ACCESS=y
|
||||
CONFIG_IOMMU_API=y
|
||||
CONFIG_MSM_GPIOMUX=y
|
||||
@@ -765,7 +765,7 @@ CONFIG_MSM_L2_SPM=y
|
||||
# CONFIG_MSM_MULTIMEDIA_USE_ION is not set
|
||||
CONFIG_MSM_OCMEM=y
|
||||
CONFIG_MSM_OCMEM_LOCAL_POWER_CTRL=y
|
||||
CONFIG_MSM_OCMEM_DEBUG=y
|
||||
# CONFIG_MSM_OCMEM_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_NONSECURE is not set
|
||||
# CONFIG_MSM_OCMEM_POWER_DEBUG is not set
|
||||
# CONFIG_MSM_OCMEM_DEBUG_ALWAYS_ON is not set
|
||||
@@ -905,7 +905,7 @@ CONFIG_AEABI=y
|
||||
CONFIG_HAVE_ARCH_PFN_VALID=y
|
||||
CONFIG_HIGHMEM=y
|
||||
# CONFIG_HIGHPTE is not set
|
||||
CONFIG_HW_PERF_EVENTS=y
|
||||
# CONFIG_HW_PERF_EVENTS is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
CONFIG_FLATMEM=y
|
||||
@@ -983,8 +983,8 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
|
||||
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||
CONFIG_CPU_FREQ_GOV_INTERACTIVE=y
|
||||
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||
# CONFIG_MSM8228_USE_ACPU_FREQ_TBL_1P6 is not set
|
||||
@@ -1348,7 +1348,7 @@ CONFIG_BRIDGE_EBT_BROUTE=y
|
||||
# CONFIG_L2TP is not set
|
||||
CONFIG_STP=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_IGMP_SNOOPING=y
|
||||
# CONFIG_BRIDGE_IGMP_SNOOPING is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
@@ -1622,8 +1622,8 @@ CONFIG_QSEECOM=y
|
||||
# CONFIG_QFP_FUSE is not set
|
||||
# CONFIG_QPNP_MISC is not set
|
||||
CONFIG_SEC_MISC=y
|
||||
CONFIG_CHECK_SIMSLOT_COUNT=y
|
||||
CONFIG_CHECK_SIMSLOT_COUNT_GPIO=66
|
||||
# CONFIG_CHECK_SIMSLOT_COUNT is not set
|
||||
# CONFIG_CHECK_SIMSLOT_COUNT_GPIO is not set
|
||||
# CONFIG_BCM2079X_NFC_I2C is not set
|
||||
# CONFIG_SEC_NFC_I2C is not set
|
||||
# CONFIG_SEC_NFC is not set
|
||||
@@ -1673,43 +1673,17 @@ CONFIG_DUALWAVE=y
|
||||
CONFIG_SCSI_MOD=y
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_SCSI_DMA=y
|
||||
CONFIG_SCSI_TGT=y
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_CHR_DEV_SCH=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
CONFIG_SCSI_CONSTANTS=y
|
||||
CONFIG_SCSI_LOGGING=y
|
||||
CONFIG_SCSI_SCAN_ASYNC=y
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_ISCSI_BOOT_SYSFS is not set
|
||||
# CONFIG_SCSI_UFSHCD is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_LIBFCOE is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
# CONFIG_SCSI_OSD_INITIATOR is not set
|
||||
# CONFIG_ATA is not set
|
||||
CONFIG_MD=y
|
||||
# CONFIG_BLK_DEV_MD is not set
|
||||
@@ -1728,7 +1702,6 @@ CONFIG_DM_CRYPT=y
|
||||
# CONFIG_DM_UEVENT is not set
|
||||
# CONFIG_DM_FLAKEY is not set
|
||||
# CONFIG_DM_VERITY is not set
|
||||
# CONFIG_TARGET_CORE is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_NET_CORE=y
|
||||
# CONFIG_BONDING is not set
|
||||
@@ -1901,7 +1874,7 @@ CONFIG_INPUT_KEYBOARD=y
|
||||
# CONFIG_INPUT_ENABLED is not set
|
||||
# CONFIG_KEYBOARD_ADP5588 is not set
|
||||
# CONFIG_KEYBOARD_ADP5589 is not set
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
# CONFIG_KEYBOARD_QT1070 is not set
|
||||
# CONFIG_KEYBOARD_QT2160 is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
@@ -1936,14 +1909,7 @@ CONFIG_SENSORS_HALL=y
|
||||
# CONFIG_KEYBOARD_CYPRESS_TKEY_HL is not set
|
||||
# CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_S3 is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
CONFIG_MOUSE_PS2_ALPS=y
|
||||
CONFIG_MOUSE_PS2_LOGIPS2PP=y
|
||||
CONFIG_MOUSE_PS2_SYNAPTICS=y
|
||||
CONFIG_MOUSE_PS2_TRACKPOINT=y
|
||||
# CONFIG_MOUSE_PS2_ELANTECH is not set
|
||||
# CONFIG_MOUSE_PS2_SENTELIC is not set
|
||||
# CONFIG_MOUSE_PS2_TOUCHKIT is not set
|
||||
# CONFIG_MOUSE_PS2 is not set
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_APPLETOUCH is not set
|
||||
# CONFIG_MOUSE_BCM5974 is not set
|
||||
@@ -2062,8 +2028,8 @@ CONFIG_INPUT_GPIO=y
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_SERPORT is not set
|
||||
# CONFIG_SERIO_LIBPS2 is not set
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_SERIO_ALTERA_PS2 is not set
|
||||
# CONFIG_SERIO_PS2MULT is not set
|
||||
@@ -2103,7 +2069,7 @@ CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM is not set
|
||||
# CONFIG_SERIAL_MSM_HS is not set
|
||||
CONFIG_SERIAL_MSM_HSL=y
|
||||
CONFIG_SERIAL_MSM_HSL_CONSOLE=y
|
||||
# CONFIG_SERIAL_MSM_HSL_CONSOLE is not set
|
||||
# CONFIG_SERIAL_BCM_BT_LPM is not set
|
||||
# CONFIG_SERIAL_TIMBERDALE is not set
|
||||
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
|
||||
@@ -2229,7 +2195,7 @@ CONFIG_SLIMBUS_MSM_NGD=y
|
||||
#
|
||||
CONFIG_ARCH_REQUIRE_GPIOLIB=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
# CONFIG_DEBUG_GPIO is not set
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
|
||||
#
|
||||
@@ -2806,8 +2772,8 @@ CONFIG_RADIO_ADAPTERS=y
|
||||
#
|
||||
# Texas Instruments WL128x FM driver (ST based)
|
||||
#
|
||||
CONFIG_RADIO_IRIS=y
|
||||
CONFIG_RADIO_IRIS_TRANSPORT=y
|
||||
# CONFIG_RADIO_IRIS is not set
|
||||
# CONFIG_RADIO_IRIS_TRANSPORT is not set
|
||||
# CONFIG_JPN_DEMUX_MOD is not set
|
||||
# CONFIG_TDMB is not set
|
||||
# CONFIG_ISDBTMM is not set
|
||||
@@ -3160,78 +3126,6 @@ CONFIG_HIDRAW=y
|
||||
CONFIG_UHID=y
|
||||
CONFIG_HID_GENERIC=y
|
||||
|
||||
#
|
||||
# Special HID drivers
|
||||
#
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_ACRUX=y
|
||||
# CONFIG_HID_ACRUX_FF is not set
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
CONFIG_HID_CHICONY=y
|
||||
CONFIG_HID_PRODIKEYS=y
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DRAGONRISE=y
|
||||
# CONFIG_DRAGONRISE_FF is not set
|
||||
CONFIG_HID_EMS_FF=y
|
||||
CONFIG_HID_ELECOM=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_HOLTEK is not set
|
||||
CONFIG_HID_KEYTOUCH=y
|
||||
CONFIG_HID_KYE=y
|
||||
CONFIG_HID_UCLOGIC=y
|
||||
CONFIG_HID_WALTOP=y
|
||||
CONFIG_HID_GYRATION=y
|
||||
CONFIG_HID_TWINHAN=y
|
||||
CONFIG_HID_KENSINGTON=y
|
||||
# CONFIG_HID_KK_UPGRADE is not set
|
||||
CONFIG_HID_LCPOWER=y
|
||||
CONFIG_HID_LOGITECH=y
|
||||
CONFIG_HID_LOGITECH_DJ=y
|
||||
# CONFIG_LOGITECH_FF is not set
|
||||
# CONFIG_LOGIRUMBLEPAD2_FF is not set
|
||||
# CONFIG_LOGIG940_FF is not set
|
||||
# CONFIG_LOGIWHEELS_FF is not set
|
||||
CONFIG_HID_MAGICMOUSE=y
|
||||
CONFIG_HID_MICROSOFT=y
|
||||
CONFIG_HID_MONTEREY=y
|
||||
CONFIG_HID_MULTITOUCH=y
|
||||
CONFIG_HID_NTRIG=y
|
||||
CONFIG_HID_ORTEK=y
|
||||
CONFIG_HID_PANTHERLORD=y
|
||||
# CONFIG_PANTHERLORD_FF is not set
|
||||
CONFIG_HID_PETALYNX=y
|
||||
CONFIG_HID_PICOLCD=y
|
||||
# CONFIG_HID_PICOLCD_FB is not set
|
||||
# CONFIG_HID_PICOLCD_BACKLIGHT is not set
|
||||
# CONFIG_HID_PICOLCD_LCD is not set
|
||||
# CONFIG_HID_PICOLCD_LEDS is not set
|
||||
# CONFIG_HID_PRIMAX is not set
|
||||
CONFIG_HID_ROCCAT=y
|
||||
# CONFIG_HID_SAITEK is not set
|
||||
CONFIG_HID_SAMSUNG=y
|
||||
CONFIG_HID_SONY=y
|
||||
# CONFIG_HID_SPEEDLINK is not set
|
||||
CONFIG_HID_SUNPLUS=y
|
||||
CONFIG_HID_GREENASIA=y
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
CONFIG_HID_SMARTJOYPLUS=y
|
||||
# CONFIG_SMARTJOYPLUS_FF is not set
|
||||
# CONFIG_HID_SYNAPTICS_BT is not set
|
||||
# CONFIG_HID_TIVO is not set
|
||||
CONFIG_HID_TOPSEED=y
|
||||
CONFIG_HID_THRUSTMASTER=y
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
CONFIG_HID_WACOM=y
|
||||
CONFIG_HID_WACOM_POWER_SUPPLY=y
|
||||
# CONFIG_HID_WIIMOTE is not set
|
||||
CONFIG_HID_ZAGG=y
|
||||
CONFIG_HID_ZEROPLUS=y
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_HID_ZYDACRON=y
|
||||
# CONFIG_HID_OVR is not set
|
||||
|
||||
#
|
||||
# USB HID support
|
||||
#
|
||||
@@ -3301,20 +3195,6 @@ CONFIG_USB_CCID_BRIDGE=y
|
||||
# also be needed; see USB_STORAGE Help for more info
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_REALTEK is not set
|
||||
CONFIG_USB_STORAGE_DATAFAB=y
|
||||
CONFIG_USB_STORAGE_FREECOM=y
|
||||
CONFIG_USB_STORAGE_ISD200=y
|
||||
CONFIG_USB_STORAGE_USBAT=y
|
||||
CONFIG_USB_STORAGE_SDDR09=y
|
||||
CONFIG_USB_STORAGE_SDDR55=y
|
||||
CONFIG_USB_STORAGE_JUMPSHOT=y
|
||||
CONFIG_USB_STORAGE_ALAUDA=y
|
||||
CONFIG_USB_STORAGE_ONETOUCH=y
|
||||
CONFIG_USB_STORAGE_KARMA=y
|
||||
CONFIG_USB_STORAGE_CYPRESS_ATACB=y
|
||||
# CONFIG_USB_STORAGE_ENE_UB6250 is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
CONFIG_USB_STORAGE_DETECT=y
|
||||
|
||||
@@ -3322,7 +3202,6 @@ CONFIG_USB_STORAGE_DETECT=y
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
@@ -3412,7 +3291,7 @@ CONFIG_USB_EHSET_TEST_FIXTURE=y
|
||||
# CONFIG_USB_QCOM_KS_BRIDGE is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FILES=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_DEBUG_FS=y
|
||||
CONFIG_USB_GADGET_VBUS_DRAW=500
|
||||
CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
|
||||
@@ -3664,7 +3543,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_ASUS_OLED is not set
|
||||
# CONFIG_RTLLIB is not set
|
||||
# CONFIG_R8712U is not set
|
||||
# CONFIG_RTS5139 is not set
|
||||
# CONFIG_TRANZPORT is not set
|
||||
# CONFIG_LINE6_USB is not set
|
||||
# CONFIG_USB_SERIAL_QUATECH2 is not set
|
||||
@@ -3673,7 +3551,6 @@ CONFIG_STAGING=y
|
||||
# CONFIG_IIO is not set
|
||||
# CONFIG_INPUT_MPU6500_SELFTEST is not set
|
||||
# CONFIG_FB_SM7XX is not set
|
||||
# CONFIG_USB_ENESTORAGE is not set
|
||||
# CONFIG_BCM_WIMAX is not set
|
||||
# CONFIG_FT1000 is not set
|
||||
|
||||
@@ -3780,12 +3657,12 @@ CONFIG_PM_DEVFREQ=y
|
||||
#
|
||||
# DEVFREQ Governors
|
||||
#
|
||||
CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y
|
||||
CONFIG_DEVFREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_DEVFREQ_GOV_POWERSAVE=y
|
||||
CONFIG_DEVFREQ_GOV_USERSPACE=y
|
||||
# CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND is not set
|
||||
# CONFIG_DEVFREQ_GOV_PERFORMANCE is not set
|
||||
# CONFIG_DEVFREQ_GOV_POWERSAVE is not set
|
||||
# CONFIG_DEVFREQ_GOV_USERSPACE is not set
|
||||
CONFIG_DEVFREQ_GOV_MSM_ADRENO_TZ=y
|
||||
CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
# CONFIG_DEVFREQ_GOV_MSM_CPUFREQ is not set
|
||||
|
||||
#
|
||||
# DEVFREQ Drivers
|
||||
@@ -3916,7 +3793,7 @@ CONFIG_LOW_ORDER_SEQ_MALLOC=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_USE_FOR_EXT23=y
|
||||
CONFIG_EXT4_FS_XATTR=y
|
||||
# CONFIG_EXT4_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_EXT4_DEBUG is not set
|
||||
CONFIG_JBD2=y
|
||||
@@ -4080,8 +3957,8 @@ CONFIG_NLS_UTF8=y
|
||||
#
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_FRAME_WARN=1024
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_STRIP_ASM_SYMS is not set
|
||||
@@ -4096,14 +3973,14 @@ CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_HARDLOCKUP_DETECTOR_OTHER_CPU is not set
|
||||
# CONFIG_HARDLOCKUP_DETECTOR is not set
|
||||
# CONFIG_DETECT_HUNG_TASK is not set
|
||||
CONFIG_SCHED_DEBUG=y
|
||||
CONFIG_SYSRQ_SCHED_DEBUG=y
|
||||
CONFIG_SCHEDSTATS=y
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SYSRQ_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_SLUB_DEBUG_ON is not set
|
||||
# CONFIG_SLUB_STATS is not set
|
||||
# CONFIG_DEBUG_KMEMLEAK is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
# CONFIG_DEBUG_PREEMPT is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
@@ -4118,12 +3995,11 @@ CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
# CONFIG_DEBUG_HIGHMEM is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
CONFIG_DEBUG_MEMORY_INIT=y
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_TEST_LIST_SORT is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
@@ -4152,7 +4028,7 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
CONFIG_HAVE_C_RECORDMCOUNT=y
|
||||
CONFIG_RING_BUFFER=y
|
||||
CONFIG_EVENT_TRACING=y
|
||||
CONFIG_EVENT_POWER_TRACING_DEPRECATED=y
|
||||
# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set
|
||||
CONFIG_CONTEXT_SWITCH_TRACER=y
|
||||
CONFIG_RING_BUFFER_ALLOW_SWAP=y
|
||||
CONFIG_TRACING=y
|
||||
@@ -4181,7 +4057,7 @@ CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_TEST_KSTRTOX is not set
|
||||
# CONFIG_STRICT_DEVMEM is not set
|
||||
CONFIG_ARM_UNWIND=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_FORCE_PAGES is not set
|
||||
# CONFIG_FREE_PAGES_RDONLY is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
@@ -4210,7 +4086,7 @@ CONFIG_DEBUG_USER=y
|
||||
CONFIG_SEC_PM=y
|
||||
# CONFIG_SEC_PM_DEBUG is not set
|
||||
# CONFIG_PID_IN_CONTEXTIDR is not set
|
||||
CONFIG_DEBUG_SET_MODULE_RONX=y
|
||||
# CONFIG_DEBUG_SET_MODULE_RONX is not set
|
||||
|
||||
#
|
||||
# Samsung Rooting Restriction Feature
|
||||
@@ -4229,7 +4105,7 @@ CONFIG_SEC_BSP=y
|
||||
#
|
||||
CONFIG_KEYS=y
|
||||
# CONFIG_ENCRYPTED_KEYS is not set
|
||||
CONFIG_KEYS_DEBUG_PROC_KEYS=y
|
||||
# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
|
||||
# CONFIG_SECURITY_DMESG_RESTRICT is not set
|
||||
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
|
||||
CONFIG_SECURITY=y
|
||||
|
||||
@@ -2303,12 +2303,14 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_BATTERY_BQ27541 is not set
|
||||
# CONFIG_BATTERY_BQ28400 is not set
|
||||
# CONFIG_QPNP_CHARGER is not set
|
||||
CONFIG_QPNP_SEC_CHARGER=y
|
||||
CONFIG_NOT_USE_EXT_OVP=y
|
||||
CONFIG_BATTERY_SAMSUNG=y
|
||||
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
|
||||
CONFIG_QPNP_CHARGER=y
|
||||
# CONFIG_LTC4088_CHARGER is not set
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@@ -3796,9 +3798,6 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
#
|
||||
# CONFIG_CORESIGHT is not set
|
||||
# CONFIG_BIF is not set
|
||||
# CONFIG_BATTERY_SAMSUNG is not set
|
||||
# CONFIG_BATTERY_SAMSUNG_DATA is not set
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
# CONFIG_CHARGER_SM5414 is not set
|
||||
CONFIG_SAMSUNG_LPM_MODE=y
|
||||
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
|
||||
|
||||
@@ -2303,12 +2303,14 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_BATTERY_BQ27541 is not set
|
||||
# CONFIG_BATTERY_BQ28400 is not set
|
||||
# CONFIG_QPNP_CHARGER is not set
|
||||
CONFIG_QPNP_SEC_CHARGER=y
|
||||
CONFIG_NOT_USE_EXT_OVP=y
|
||||
CONFIG_BATTERY_SAMSUNG=y
|
||||
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
|
||||
CONFIG_QPNP_CHARGER=y
|
||||
# CONFIG_LTC4088_CHARGER is not set
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@@ -3796,9 +3798,6 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
#
|
||||
# CONFIG_CORESIGHT is not set
|
||||
# CONFIG_BIF is not set
|
||||
# CONFIG_BATTERY_SAMSUNG is not set
|
||||
# CONFIG_BATTERY_SAMSUNG_DATA is not set
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
# CONFIG_CHARGER_SM5414 is not set
|
||||
CONFIG_SAMSUNG_LPM_MODE=y
|
||||
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
|
||||
|
||||
@@ -2303,12 +2303,14 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_BATTERY_BQ27541 is not set
|
||||
# CONFIG_BATTERY_BQ28400 is not set
|
||||
# CONFIG_QPNP_CHARGER is not set
|
||||
CONFIG_QPNP_SEC_CHARGER=y
|
||||
CONFIG_NOT_USE_EXT_OVP=y
|
||||
CONFIG_BATTERY_SAMSUNG=y
|
||||
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
|
||||
CONFIG_QPNP_CHARGER=y
|
||||
# CONFIG_LTC4088_CHARGER is not set
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
@@ -3796,9 +3798,6 @@ CONFIG_DEVFREQ_GOV_MSM_CPUFREQ=y
|
||||
#
|
||||
# CONFIG_CORESIGHT is not set
|
||||
# CONFIG_BIF is not set
|
||||
# CONFIG_BATTERY_SAMSUNG is not set
|
||||
# CONFIG_BATTERY_SAMSUNG_DATA is not set
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
# CONFIG_CHARGER_SM5414 is not set
|
||||
# CONFIG_SAMSUNG_LPM_MODE is not set
|
||||
# CONFIG_SAMSUNG_BATTERY_ENG_TEST is not set
|
||||
|
||||
@@ -89,9 +89,12 @@ CONFIG_TORCH_FIX=y
|
||||
# CONFIG_IR_REMOCON_MC96 is not set
|
||||
|
||||
#Battery charging & BMS
|
||||
CONFIG_QPNP_SEC_CHARGER=y
|
||||
CONFIG_BATTERY_SAMSUNG=y
|
||||
CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
|
||||
CONFIG_QPNP_CHARGER=y
|
||||
CONFIG_BATTERY_BCL=y
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
|
||||
#Sec Thermistor
|
||||
CONFIG_SEC_THERMISTOR=y
|
||||
@@ -114,6 +117,3 @@ CONFIG_SEC_DHA_SOL_MAL=y
|
||||
# QCOM DEBUG
|
||||
CONFIG_MSM_RTB=y
|
||||
CONFIG_MSM_RTB_SEPARATE_CPUS=y
|
||||
|
||||
# DO NOT EXT OVP
|
||||
CONFIG_NOT_USE_EXT_OVP=y
|
||||
|
||||
@@ -232,6 +232,9 @@ asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
case F_OFD_GETLK:
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
case F_GETLK64:
|
||||
case F_SETLK64:
|
||||
case F_SETLKW64:
|
||||
|
||||
+128
-42
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2013-2014,2019 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
@@ -152,6 +152,20 @@ static struct restart_notifier_block restart_notifiers[] = {
|
||||
|
||||
static int init_smem_remote_spinlock(void);
|
||||
|
||||
/**
|
||||
* smem_get_toc() - Used for getting partitions TOC
|
||||
*
|
||||
* @return - Base address off partitions TOC
|
||||
*
|
||||
* Helper function to get base address of partition TOC,
|
||||
* that is present in top 4K of first smem region.
|
||||
*/
|
||||
static struct smem_toc __iomem *smem_get_toc(void)
|
||||
{
|
||||
return smem_areas[0].virt_addr +
|
||||
smem_areas[0].size - 4 * 1024;
|
||||
}
|
||||
|
||||
/**
|
||||
* smem_phys_to_virt() - Convert a physical base and offset to virtual address
|
||||
*
|
||||
@@ -295,6 +309,7 @@ static void *__smem_get_entry(unsigned id, unsigned *size,
|
||||
int use_spinlocks = spinlocks_initialized && use_rspinlock;
|
||||
void *ret = 0;
|
||||
unsigned long flags = 0;
|
||||
uint32_t e_size;
|
||||
|
||||
if (!skip_init_check && !smem_initialized_check())
|
||||
return ret;
|
||||
@@ -308,7 +323,11 @@ static void *__smem_get_entry(unsigned id, unsigned *size,
|
||||
if (toc[id].allocated) {
|
||||
phys_addr_t phys_base;
|
||||
|
||||
*size = toc[id].size;
|
||||
e_size = toc[id].size;
|
||||
if (e_size > MSM_SHARED_RAM_SIZE)
|
||||
return ret;
|
||||
*size = e_size;
|
||||
|
||||
barrier();
|
||||
|
||||
phys_base = toc[id].reserved & BASE_ADDR_MASK;
|
||||
@@ -343,12 +362,19 @@ static void *__smem_get_entry_to_proc(unsigned id,
|
||||
bool skip_init_check,
|
||||
bool use_rspinlock)
|
||||
{
|
||||
struct smem_partition_header *hdr;
|
||||
unsigned long lflags = 0;
|
||||
void *item = NULL;
|
||||
struct smem_partition_allocation_header *alloc_hdr;
|
||||
struct smem_partition_header *hdr;
|
||||
uint32_t offset_free_uncached;
|
||||
struct smem_toc __iomem *toc;
|
||||
uint32_t offset_free_cached;
|
||||
unsigned long lflags = 0;
|
||||
uint32_t partition_size;
|
||||
uint32_t partition_num;
|
||||
uint32_t padding_data;
|
||||
uint32_t padding_hdr;
|
||||
uint32_t a_hdr_size;
|
||||
uint32_t item_size;
|
||||
void *item = NULL;
|
||||
int rc;
|
||||
|
||||
SMEM_DBG("%s(%u, %u, %u, %u, %d, %d)\n", __func__, id, *size, to_proc,
|
||||
@@ -371,8 +397,10 @@ static void *__smem_get_entry_to_proc(unsigned id,
|
||||
if (flags & SMEM_ANY_HOST_FLAG || !partitions[to_proc].offset)
|
||||
return __smem_get_entry(id, size, skip_init_check,
|
||||
use_rspinlock);
|
||||
toc = smem_get_toc();
|
||||
|
||||
partition_num = partitions[to_proc].partition_num;
|
||||
partition_size = readl_relaxed(&toc->entry[partition_num].size);
|
||||
hdr = smem_areas[0].virt_addr + partitions[to_proc].offset;
|
||||
if (unlikely(!spinlocks_initialized)) {
|
||||
rc = init_smem_remote_spinlock();
|
||||
@@ -398,11 +426,20 @@ static void *__smem_get_entry_to_proc(unsigned id,
|
||||
if (flags & SMEM_ITEM_CACHED_FLAG) {
|
||||
a_hdr_size = ALIGN(sizeof(*alloc_hdr),
|
||||
partitions[to_proc].size_cacheline);
|
||||
for (alloc_hdr = (void *)(hdr) + hdr->size - a_hdr_size;
|
||||
offset_free_cached = hdr->offset_free_cached;
|
||||
if (WARN_ON(offset_free_cached > partition_size))
|
||||
return NULL;
|
||||
|
||||
for (alloc_hdr = (void *)(hdr) + partition_size - a_hdr_size;
|
||||
(void *)(alloc_hdr) > (void *)(hdr) +
|
||||
hdr->offset_free_cached;
|
||||
offset_free_cached;
|
||||
alloc_hdr = (void *)(alloc_hdr) -
|
||||
alloc_hdr->size - a_hdr_size) {
|
||||
item_size - a_hdr_size) {
|
||||
item_size = alloc_hdr->size;
|
||||
padding_data = alloc_hdr->padding_data;
|
||||
if (WARN_ON(padding_data > item_size
|
||||
|| item_size > partition_size))
|
||||
return NULL;
|
||||
if (alloc_hdr->canary != SMEM_ALLOCATION_CANARY) {
|
||||
LOG_ERR(
|
||||
"%s: SMEM corruption detected. Partition %d to %d at %p\n",
|
||||
@@ -415,20 +452,30 @@ static void *__smem_get_entry_to_proc(unsigned id,
|
||||
}
|
||||
if (alloc_hdr->smem_type == id) {
|
||||
/* 8 byte alignment to match legacy */
|
||||
*size = ALIGN(alloc_hdr->size -
|
||||
alloc_hdr->padding_data, 8);
|
||||
item = (void *)(alloc_hdr) - alloc_hdr->size;
|
||||
*size = ALIGN(item_size - padding_data, 8);
|
||||
item = (void *)(alloc_hdr) - item_size;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
offset_free_uncached = hdr->offset_free_uncached;
|
||||
if (WARN_ON(offset_free_uncached > partition_size))
|
||||
return NULL;
|
||||
|
||||
for (alloc_hdr = (void *)(hdr) + sizeof(*hdr);
|
||||
(void *)(alloc_hdr) < (void *)(hdr) +
|
||||
hdr->offset_free_uncached;
|
||||
offset_free_uncached;
|
||||
alloc_hdr = (void *)(alloc_hdr) +
|
||||
sizeof(*alloc_hdr) +
|
||||
alloc_hdr->padding_hdr +
|
||||
alloc_hdr->size) {
|
||||
padding_hdr +
|
||||
item_size) {
|
||||
padding_hdr = alloc_hdr->padding_hdr;
|
||||
padding_data = alloc_hdr->padding_data;
|
||||
item_size = alloc_hdr->size;
|
||||
if (WARN_ON(padding_hdr > partition_size
|
||||
|| item_size > partition_size
|
||||
|| padding_data > item_size))
|
||||
return NULL;
|
||||
if (alloc_hdr->canary != SMEM_ALLOCATION_CANARY) {
|
||||
LOG_ERR(
|
||||
"%s: SMEM corruption detected. Partition %d to %d at %p\n",
|
||||
@@ -441,11 +488,10 @@ static void *__smem_get_entry_to_proc(unsigned id,
|
||||
}
|
||||
if (alloc_hdr->smem_type == id) {
|
||||
/* 8 byte alignment to match legacy */
|
||||
*size = ALIGN(alloc_hdr->size -
|
||||
alloc_hdr->padding_data, 8);
|
||||
*size = ALIGN(item_size - padding_data, 8);
|
||||
item = (void *)(alloc_hdr) +
|
||||
sizeof(*alloc_hdr) +
|
||||
alloc_hdr->padding_hdr;
|
||||
padding_hdr;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -530,10 +576,17 @@ static void *alloc_item_nonsecure(unsigned id, unsigned size_in)
|
||||
void *smem_base = MSM_SHARED_RAM_BASE;
|
||||
struct smem_shared *shared = smem_base;
|
||||
struct smem_heap_entry *toc = shared->heap_toc;
|
||||
uint32_t free_offset, heap_remaining;
|
||||
void *ret = NULL;
|
||||
|
||||
if (shared->heap_info.heap_remaining >= size_in) {
|
||||
toc[id].offset = shared->heap_info.free_offset;
|
||||
heap_remaining = shared->heap_info.heap_remaining;
|
||||
free_offset = shared->heap_info.free_offset;
|
||||
if (WARN_ON(heap_remaining > MSM_SHARED_RAM_SIZE
|
||||
|| free_offset > MSM_SHARED_RAM_SIZE))
|
||||
return NULL;
|
||||
|
||||
if (heap_remaining >= size_in) {
|
||||
toc[id].offset = free_offset;
|
||||
toc[id].size = size_in;
|
||||
/*
|
||||
* wmb() is necessary to ensure the allocation data is
|
||||
@@ -545,7 +598,7 @@ static void *alloc_item_nonsecure(unsigned id, unsigned size_in)
|
||||
|
||||
shared->heap_info.free_offset += size_in;
|
||||
shared->heap_info.heap_remaining -= size_in;
|
||||
ret = smem_base + toc[id].offset;
|
||||
ret = smem_base + free_offset;
|
||||
/*
|
||||
* wmb() is necessary to ensure the heap data is consistent
|
||||
* before continuing to prevent race conditions with remote
|
||||
@@ -581,11 +634,15 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
|
||||
void *smem_base = MSM_SHARED_RAM_BASE;
|
||||
struct smem_partition_header *hdr;
|
||||
struct smem_partition_allocation_header *alloc_hdr;
|
||||
uint32_t offset_free_uncached;
|
||||
struct smem_toc __iomem *toc;
|
||||
uint32_t offset_free_cached;
|
||||
uint32_t partition_size;
|
||||
uint32_t partition_num;
|
||||
uint32_t a_hdr_size;
|
||||
uint32_t a_data_size;
|
||||
uint32_t size_cacheline;
|
||||
uint32_t free_space;
|
||||
uint32_t partition_num;
|
||||
void *ret = NULL;
|
||||
|
||||
hdr = smem_base + partitions[to_proc].offset;
|
||||
@@ -602,27 +659,36 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
|
||||
}
|
||||
|
||||
size_cacheline = partitions[to_proc].size_cacheline;
|
||||
free_space = hdr->offset_free_cached -
|
||||
hdr->offset_free_uncached;
|
||||
|
||||
toc = smem_get_toc();
|
||||
partition_size = readl_relaxed(&toc->entry[partition_num].size);
|
||||
|
||||
offset_free_cached = hdr->offset_free_cached;
|
||||
offset_free_uncached = hdr->offset_free_uncached;
|
||||
if (WARN_ON(offset_free_uncached > offset_free_cached
|
||||
|| offset_free_cached > partition_size))
|
||||
return NULL;
|
||||
|
||||
free_space = offset_free_cached - offset_free_uncached;
|
||||
|
||||
if (flags & SMEM_ITEM_CACHED_FLAG) {
|
||||
a_hdr_size = ALIGN(sizeof(*alloc_hdr), size_cacheline);
|
||||
a_data_size = ALIGN(size_in, size_cacheline);
|
||||
if (free_space < a_hdr_size + a_data_size) {
|
||||
if (free_space < a_hdr_size + a_data_size
|
||||
|| free_space < size_in) {
|
||||
SMEM_INFO(
|
||||
"%s: id %u not enough memory %u (required %u)\n",
|
||||
__func__, id, free_space,
|
||||
a_hdr_size + a_data_size);
|
||||
"%s: id %u not enough memory %u (required %u), (size_in %u)\n",
|
||||
__func__, id, free_space,
|
||||
a_hdr_size + a_data_size, size_in);
|
||||
return ret;
|
||||
}
|
||||
alloc_hdr = (void *)(hdr) + hdr->offset_free_cached -
|
||||
a_hdr_size;
|
||||
alloc_hdr = (void *)(hdr) + offset_free_cached - a_hdr_size;
|
||||
alloc_hdr->canary = SMEM_ALLOCATION_CANARY;
|
||||
alloc_hdr->smem_type = id;
|
||||
alloc_hdr->size = a_data_size;
|
||||
alloc_hdr->padding_data = a_data_size - size_in;
|
||||
alloc_hdr->padding_hdr = a_hdr_size - sizeof(*alloc_hdr);
|
||||
hdr->offset_free_cached = hdr->offset_free_cached -
|
||||
hdr->offset_free_cached = offset_free_cached -
|
||||
a_hdr_size - a_data_size;
|
||||
ret = (void *)(alloc_hdr) - a_data_size;
|
||||
/*
|
||||
@@ -637,20 +703,21 @@ static void *alloc_item_secure(unsigned id, unsigned size_in, unsigned to_proc,
|
||||
} else {
|
||||
a_hdr_size = sizeof(*alloc_hdr);
|
||||
a_data_size = ALIGN(size_in, 8);
|
||||
if (free_space < a_hdr_size + a_data_size) {
|
||||
if (free_space < a_hdr_size + a_data_size
|
||||
|| free_space < size_in) {
|
||||
SMEM_INFO(
|
||||
"%s: id %u not enough memory %u (required %u)\n",
|
||||
__func__, id, free_space,
|
||||
a_hdr_size + a_data_size);
|
||||
"%s: id %u not enough memory %u (required %u) (size_in %u)\n",
|
||||
__func__, id, free_space,
|
||||
a_hdr_size + a_data_size, size_in);
|
||||
return ret;
|
||||
}
|
||||
alloc_hdr = (void *)(hdr) + hdr->offset_free_uncached;
|
||||
alloc_hdr = (void *)(hdr) + offset_free_uncached;
|
||||
alloc_hdr->canary = SMEM_ALLOCATION_CANARY;
|
||||
alloc_hdr->smem_type = id;
|
||||
alloc_hdr->size = a_data_size;
|
||||
alloc_hdr->padding_data = a_data_size - size_in;
|
||||
alloc_hdr->padding_hdr = a_hdr_size - sizeof(*alloc_hdr);
|
||||
hdr->offset_free_uncached = hdr->offset_free_uncached +
|
||||
hdr->offset_free_uncached = offset_free_uncached +
|
||||
a_hdr_size + a_data_size;
|
||||
ret = alloc_hdr + 1;
|
||||
}
|
||||
@@ -864,6 +931,12 @@ unsigned smem_get_free_space(unsigned to_proc)
|
||||
{
|
||||
struct smem_partition_header *hdr;
|
||||
struct smem_shared *shared;
|
||||
uint32_t offset_free_uncached;
|
||||
struct smem_toc __iomem *toc;
|
||||
uint32_t offset_free_cached;
|
||||
uint32_t heap_remaining;
|
||||
uint32_t p_size;
|
||||
uint32_t p_num;
|
||||
|
||||
if (to_proc >= NUM_SMEM_SUBSYSTEMS) {
|
||||
pr_err("%s: invalid to_proc:%d\n", __func__, to_proc);
|
||||
@@ -878,11 +951,24 @@ unsigned smem_get_free_space(unsigned to_proc)
|
||||
return UINT_MAX;
|
||||
}
|
||||
hdr = smem_areas[0].virt_addr + partitions[to_proc].offset;
|
||||
return hdr->offset_free_cached - hdr->offset_free_uncached;
|
||||
} else {
|
||||
shared = (void *)MSM_SHARED_RAM_BASE;
|
||||
return shared->heap_info.heap_remaining;
|
||||
offset_free_cached = hdr->offset_free_cached;
|
||||
offset_free_uncached = hdr->offset_free_uncached;
|
||||
|
||||
toc = smem_get_toc();
|
||||
p_num = partitions[to_proc].partition_num;
|
||||
p_size = readl_relaxed(&toc->entry[p_num].size);
|
||||
if (WARN_ON(offset_free_uncached > offset_free_cached
|
||||
|| offset_free_cached > p_size))
|
||||
return -EINVAL;
|
||||
|
||||
return offset_free_cached - offset_free_uncached;
|
||||
}
|
||||
shared = (void *)MSM_SHARED_RAM_BASE;
|
||||
heap_remaining = shared->heap_info.heap_remaining;
|
||||
if (WARN_ON(heap_remaining > MSM_SHARED_RAM_SIZE))
|
||||
return -EINVAL;
|
||||
|
||||
return heap_remaining;
|
||||
}
|
||||
EXPORT_SYMBOL(smem_get_free_space);
|
||||
|
||||
@@ -1133,8 +1219,8 @@ static void smem_init_security_partition(struct smem_toc_entry *entry,
|
||||
LOG_ERR("Smem partition %d hdr magic is bad\n", num);
|
||||
BUG();
|
||||
}
|
||||
if (!hdr->size) {
|
||||
LOG_ERR("Smem partition %d size is 0\n", num);
|
||||
if (hdr->size != entry->size) {
|
||||
LOG_ERR("Smem partition %d size is invalid\n", num);
|
||||
BUG();
|
||||
}
|
||||
if (hdr->offset_free_uncached > hdr->size) {
|
||||
|
||||
@@ -487,7 +487,7 @@ SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second
|
||||
switch (call) {
|
||||
case SHMAT: {
|
||||
ulong raddr;
|
||||
err = do_shmat(first, ptr, (int)second, &raddr);
|
||||
err = do_shmat(first, ptr, (int)second, &raddr, SHMLBA);
|
||||
if (!err) {
|
||||
if (put_user(raddr,
|
||||
(ulong __user *) third))
|
||||
|
||||
@@ -44,7 +44,7 @@ asmlinkage long xtensa_shmat(int shmid, char __user *shmaddr, int shmflg)
|
||||
unsigned long ret;
|
||||
long err;
|
||||
|
||||
err = do_shmat(shmid, shmaddr, shmflg, &ret);
|
||||
err = do_shmat(shmid, shmaddr, shmflg, &ret, SHMLBA);
|
||||
if (err)
|
||||
return err;
|
||||
return (long)ret;
|
||||
|
||||
@@ -2072,8 +2072,13 @@ static int get_fuelgauge_soc(struct i2c_client *client)
|
||||
goto return_soc;
|
||||
}
|
||||
|
||||
#if defined(ANDROID_ALARM_ACTIVATED)
|
||||
current_time = alarm_get_elapsed_realtime();
|
||||
ts = ktime_to_timespec(current_time);
|
||||
#else
|
||||
current_time = ktime_get_boottime();
|
||||
ts = ktime_to_timespec(current_time);
|
||||
#endif
|
||||
|
||||
/* check fullcap range */
|
||||
fullcap_check_interval =
|
||||
@@ -2218,8 +2223,13 @@ bool sec_hal_fg_init(struct i2c_client *client)
|
||||
ktime_t current_time;
|
||||
struct timespec ts;
|
||||
|
||||
#if defined(ANDROID_ALARM_ACTIVATED)
|
||||
current_time = alarm_get_elapsed_realtime();
|
||||
ts = ktime_to_timespec(current_time);
|
||||
#else
|
||||
current_time = ktime_get_boottime();
|
||||
ts = ktime_to_timespec(current_time);
|
||||
#endif
|
||||
|
||||
board_fuelgauge_init(fuelgauge);
|
||||
|
||||
|
||||
Executable
+82
@@ -0,0 +1,82 @@
|
||||
/*
|
||||
* battery_data.h
|
||||
* Samsung Mobile Battery data Header
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2012 Samsung Electronics, Inc.
|
||||
*
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __SEC_BATTERY_DATA_H
|
||||
#define __SEC_BATTERY_DATA_H __FILE__
|
||||
|
||||
static void * samsung_battery_data;
|
||||
|
||||
#define CAPACITY_MAX 1000
|
||||
#define CAPACITY_MAX_MARGIN 50
|
||||
#define CAPACITY_MIN 0
|
||||
|
||||
static sec_bat_adc_table_data_t temp_table[] = {
|
||||
{26537, 800},
|
||||
{26849, 750},
|
||||
{27211, 700},
|
||||
{27627, 650},
|
||||
{28117, 600},
|
||||
{28713, 550},
|
||||
{29403, 500},
|
||||
{30205, 450},
|
||||
{31075, 400},
|
||||
{32026, 350},
|
||||
{33014, 300},
|
||||
{34117, 250},
|
||||
{35115, 200},
|
||||
{36121, 150},
|
||||
{37212, 100},
|
||||
{38190, 50},
|
||||
{39006, 0},
|
||||
{39813, -50},
|
||||
{40490, -100},
|
||||
{41084, -150},
|
||||
{41537, -200},
|
||||
};
|
||||
|
||||
static sec_bat_adc_table_data_t chg_temp_table[] = {
|
||||
{0, 0},
|
||||
};
|
||||
|
||||
#define TEMP_HIGH_THRESHOLD_EVENT 600
|
||||
#define TEMP_HIGH_RECOVERY_EVENT 470
|
||||
#define TEMP_LOW_THRESHOLD_EVENT (-50)
|
||||
#define TEMP_LOW_RECOVERY_EVENT 0
|
||||
#define TEMP_HIGH_THRESHOLD_NORMAL 600
|
||||
#define TEMP_HIGH_RECOVERY_NORMAL 470
|
||||
#define TEMP_LOW_THRESHOLD_NORMAL (-50)
|
||||
#define TEMP_LOW_RECOVERY_NORMAL 0
|
||||
#define TEMP_HIGH_THRESHOLD_LPM 600
|
||||
#define TEMP_HIGH_RECOVERY_LPM 470
|
||||
#define TEMP_LOW_THRESHOLD_LPM (-50)
|
||||
#define TEMP_LOW_RECOVERY_LPM 0
|
||||
|
||||
#if defined(CONFIG_BATTERY_SWELLING)
|
||||
#define BATT_SWELLING_HIGH_TEMP_BLOCK 500
|
||||
#define BATT_SWELLING_HIGH_TEMP_RECOV 450
|
||||
#define BATT_SWELLING_LOW_TEMP_BLOCK 50
|
||||
#define BATT_SWELLING_LOW_TEMP_RECOV 100
|
||||
#define BATT_SWELLING_HIGH_CHG_CURRENT 0
|
||||
#define BATT_SWELLING_LOW_CHG_CURRENT 0
|
||||
#define BATT_SWELLING_DROP_FLOAT_VOLTAGE 4200
|
||||
#define BATT_SWELLING_HIGH_RECHG_VOLTAGE 4150
|
||||
#define BATT_SWELLING_LOW_RECHG_VOLTAGE 4050
|
||||
#endif
|
||||
|
||||
#endif /* __SEC_BATTERY_DATA_H */
|
||||
@@ -1900,12 +1900,13 @@ static void sec_bat_check_changed_soc(
|
||||
dev_info(battery->dev, "%s: prev_reported_soc = %d, soc = %d\n",
|
||||
__func__, battery->prev_reported_soc, value->intval);
|
||||
}
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) // update immediately on s3ve3g devices
|
||||
/* if soc have been chaged, only change soc by 1
|
||||
* soc in increased ? (previous + 1) : (previous - 1) */
|
||||
value->intval = (value->intval > battery->prev_reported_soc) ?
|
||||
(battery->prev_reported_soc + 1) :
|
||||
(battery->prev_reported_soc - 1);
|
||||
|
||||
#endif
|
||||
if (value->intval > 100)
|
||||
value->intval = 100;
|
||||
else if (value->intval < 0)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
@@ -2201,6 +2201,7 @@ fail_alloc:
|
||||
kfree(new_entry->dci_log_mask);
|
||||
}
|
||||
kfree(new_entry);
|
||||
put_task_struct(current);
|
||||
mutex_unlock(&driver->dci_mutex);
|
||||
return DIAG_DCI_NO_REG;
|
||||
}
|
||||
|
||||
@@ -3903,6 +3903,8 @@ kgsl_mmap_memstore(struct kgsl_device *device, struct vm_area_struct *vma)
|
||||
if (vma->vm_flags & VM_WRITE)
|
||||
return -EPERM;
|
||||
|
||||
vma->vm_flags &= ~VM_MAYWRITE;
|
||||
|
||||
if (memdesc->size != vma_size) {
|
||||
KGSL_MEM_ERR(device, "memstore bad size: %d should be %d\n",
|
||||
vma_size, memdesc->size);
|
||||
|
||||
+13
-2
@@ -1170,6 +1170,17 @@ static void hid_output_field(const struct hid_device *hid,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Compute the size of a report.
|
||||
*/
|
||||
static size_t hid_compute_report_size(struct hid_report *report)
|
||||
{
|
||||
if (report->size)
|
||||
return ((report->size - 1) >> 3) + 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Create a report.
|
||||
*/
|
||||
@@ -1181,7 +1192,7 @@ void hid_output_report(struct hid_report *report, __u8 *data)
|
||||
if (report->id > 0)
|
||||
*data++ = report->id;
|
||||
|
||||
memset(data, 0, ((report->size - 1) >> 3) + 1);
|
||||
memset(data, 0, hid_compute_report_size(report));
|
||||
for (n = 0; n < report->maxfield; n++)
|
||||
hid_output_field(report->device, report->field[n], data);
|
||||
}
|
||||
@@ -1256,7 +1267,7 @@ int hid_report_raw_event(struct hid_device *hid, int type, u8 *data, int size,
|
||||
csize--;
|
||||
}
|
||||
|
||||
rsize = ((report->size - 1) >> 3) + 1;
|
||||
rsize = hid_compute_report_size(report);
|
||||
|
||||
if (rsize > HID_MAX_BUFFER_SIZE)
|
||||
rsize = HID_MAX_BUFFER_SIZE;
|
||||
|
||||
@@ -883,6 +883,10 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
|
||||
}
|
||||
|
||||
mapped:
|
||||
/* Mapping failed, bail out */
|
||||
if (!bit)
|
||||
return;
|
||||
|
||||
if (device->driver->input_mapped && device->driver->input_mapped(device,
|
||||
hidinput, field, usage, &bit, &max) < 0)
|
||||
goto ignore;
|
||||
|
||||
@@ -442,6 +442,8 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
||||
case HID_UP_BUTTON:
|
||||
code = BTN_MOUSE + ((usage->hid - 1) & HID_USAGE);
|
||||
hid_map_usage(hi, usage, bit, max, EV_KEY, code);
|
||||
if (!*bit)
|
||||
return -1;
|
||||
input_set_capability(hi->input, EV_KEY, code);
|
||||
return 1;
|
||||
|
||||
|
||||
+16
-10
@@ -813,16 +813,18 @@ static int input_default_setkeycode(struct input_dev *dev,
|
||||
}
|
||||
}
|
||||
|
||||
__clear_bit(*old_keycode, dev->keybit);
|
||||
__set_bit(ke->keycode, dev->keybit);
|
||||
|
||||
for (i = 0; i < dev->keycodemax; i++) {
|
||||
if (input_fetch_keycode(dev, i) == *old_keycode) {
|
||||
__set_bit(*old_keycode, dev->keybit);
|
||||
break; /* Setting the bit twice is useless, so break */
|
||||
if (*old_keycode <= KEY_MAX) {
|
||||
__clear_bit(*old_keycode, dev->keybit);
|
||||
for (i = 0; i < dev->keycodemax; i++) {
|
||||
if (input_fetch_keycode(dev, i) == *old_keycode) {
|
||||
__set_bit(*old_keycode, dev->keybit);
|
||||
/* Setting the bit twice is useless, so break */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
__set_bit(ke->keycode, dev->keybit);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -878,9 +880,13 @@ int input_set_keycode(struct input_dev *dev,
|
||||
* Simulate keyup event if keycode is not present
|
||||
* in the keymap anymore
|
||||
*/
|
||||
if (test_bit(EV_KEY, dev->evbit) &&
|
||||
!is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
|
||||
__test_and_clear_bit(old_keycode, dev->key)) {
|
||||
if (old_keycode > KEY_MAX) {
|
||||
dev_warn(dev->dev.parent ?: &dev->dev,
|
||||
"%s: got too big old keycode %#x\n",
|
||||
__func__, old_keycode);
|
||||
} else if (test_bit(EV_KEY, dev->evbit) &&
|
||||
!is_event_supported(old_keycode, dev->keybit, KEY_MAX) &&
|
||||
__test_and_clear_bit(old_keycode, dev->key)) {
|
||||
|
||||
input_pass_event(dev, EV_KEY, old_keycode, 0);
|
||||
if (dev->sync)
|
||||
|
||||
@@ -631,6 +631,13 @@ config KEYBOARD_W90P910
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called w90p910_keypad.
|
||||
|
||||
config KEYBOARD_ABOV_DUAL_DETECT
|
||||
bool "Abov FT16XX Touchkey Dual Detect Feature"
|
||||
depends on KEYBOARD_ABOV_TOUCH
|
||||
default n
|
||||
help
|
||||
Say Y here only for stock kernel and disable permanently
|
||||
on custom rom.
|
||||
endif
|
||||
|
||||
config SENSORS_HALL_DEBOUNCE
|
||||
|
||||
@@ -54,7 +54,10 @@
|
||||
#define ABOV_RAWDATA 0x0E
|
||||
#define ABOV_VENDORID 0x12
|
||||
#define ABOV_GLOVE 0x13
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
#define ABOV_DUAL_DETECT 0x16
|
||||
#endif
|
||||
|
||||
/* command */
|
||||
#define CMD_LED_ON 0x10
|
||||
@@ -65,7 +68,11 @@
|
||||
#define CMD_STOP_MODE 0x80
|
||||
#define CMD_GLOVE_ON 0x20
|
||||
#define CMD_GLOVE_OFF 0x10
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
#define CMD_DUAL_DETECT 0x10
|
||||
#endif
|
||||
|
||||
#define CMD_SINGLE_DETECT 0x20
|
||||
|
||||
#define ABOV_BOOT_DELAY 45
|
||||
@@ -80,10 +87,16 @@ struct device *sec_touchkey;
|
||||
#define FW_CHECKSUM_L 0xCE
|
||||
#define TK_FW_PATH_BIN "abov/abov_tk.fw"
|
||||
#define TK_FW_PATH_SDCARD "/sdcard/abov_fw.bin"
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
#define ABOV_DUAL_DETECTION_CMD_FW_VER 0x14
|
||||
#else
|
||||
#endif
|
||||
|
||||
#define FW_VERSION 0x06
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
#define ABOV_DUAL_DETECTION_CMD_FW_VER 0xFF
|
||||
#endif
|
||||
#define FW_CHECKSUM_H 0x94
|
||||
#define FW_CHECKSUM_L 0x86
|
||||
#define FW_CHECKSUM_H_REV4 0xE4
|
||||
@@ -153,8 +166,11 @@ static void abov_tk_late_resume(struct early_suspend *h);
|
||||
#ifdef CONFIG_INPUT_ENABLED
|
||||
static int abov_tk_input_open(struct input_dev *dev);
|
||||
static void abov_tk_input_close(struct input_dev *dev);
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
static void abov_tk_dual_detection_mode(struct abov_tk_info *info, int mode);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static int abov_glove_mode_enable(struct i2c_client *client, u8 cmd)
|
||||
{
|
||||
@@ -333,7 +349,9 @@ static void abov_tk_reset(struct abov_tk_info *info)
|
||||
|
||||
abov_tk_reset_for_bootmode(info);
|
||||
msleep(ABOV_RESET_DELAY);
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
abov_tk_dual_detection_mode(info, 1);
|
||||
#endif
|
||||
if (info->glovemode)
|
||||
abov_glove_mode_enable(client, CMD_GLOVE_ON);
|
||||
|
||||
@@ -1100,7 +1118,9 @@ static ssize_t touchkey_fw_update(struct device *dev,
|
||||
disable_irq(info->irq);
|
||||
info->enabled = false;
|
||||
ret = abov_flash_fw(info, false, cmd);
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
abov_tk_dual_detection_mode(info, 1);
|
||||
#endif
|
||||
if (info->glovemode)
|
||||
abov_glove_mode_enable(client, CMD_GLOVE_ON);
|
||||
info->enabled = true;
|
||||
@@ -1194,6 +1214,8 @@ static ssize_t abov_glove_mode_show(struct device *dev,
|
||||
|
||||
return sprintf(buf, "%d\n", info->glovemode);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
static void abov_tk_dual_detection_mode(struct abov_tk_info *info, int mode)
|
||||
{
|
||||
u8 cmd;
|
||||
@@ -1240,6 +1262,7 @@ static ssize_t abov_set_dual_detection_mode(struct device *dev,
|
||||
|
||||
return count;
|
||||
}
|
||||
#endif
|
||||
|
||||
static DEVICE_ATTR(touchkey_threshold, S_IRUGO, touchkey_threshold_show, NULL);
|
||||
static DEVICE_ATTR(brightness, S_IRUGO | S_IWUSR | S_IWGRP, NULL,
|
||||
@@ -1256,8 +1279,10 @@ static DEVICE_ATTR(touchkey_firm_update_status, S_IRUGO | S_IWUSR | S_IWGRP,
|
||||
touchkey_fw_update_status, NULL);
|
||||
static DEVICE_ATTR(glove_mode, S_IRUGO | S_IWUSR | S_IWGRP,
|
||||
abov_glove_mode_show, abov_glove_mode);
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
static DEVICE_ATTR(detection_mode, S_IRUGO | S_IWUSR | S_IWGRP,
|
||||
NULL, abov_set_dual_detection_mode);
|
||||
#endif
|
||||
static struct attribute *sec_touchkey_attributes[] = {
|
||||
&dev_attr_touchkey_threshold.attr,
|
||||
&dev_attr_brightness.attr,
|
||||
@@ -1270,7 +1295,9 @@ static struct attribute *sec_touchkey_attributes[] = {
|
||||
&dev_attr_touchkey_firm_update.attr,
|
||||
&dev_attr_touchkey_firm_update_status.attr,
|
||||
&dev_attr_glove_mode.attr,
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
&dev_attr_detection_mode.attr,
|
||||
#endif
|
||||
NULL,
|
||||
};
|
||||
|
||||
@@ -1559,7 +1586,9 @@ static int __devinit abov_tk_probe(struct i2c_client *client,
|
||||
"failed to firmware check (%d)\n", ret);
|
||||
goto err_reg_input_dev;
|
||||
}
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
abov_tk_dual_detection_mode(info, 1);
|
||||
#endif
|
||||
snprintf(info->phys, sizeof(info->phys),
|
||||
"%s/input0", dev_name(&client->dev));
|
||||
input_dev->name = "sec_touchkey";
|
||||
@@ -1742,7 +1771,9 @@ static int abov_tk_resume(struct device *dev)
|
||||
/* touchkey on by i2c */
|
||||
get_tk_fw_version(info, true);
|
||||
#endif
|
||||
#ifdef CONFIG_KEYBOARD_ABOV_DUAL_DETECT
|
||||
abov_tk_dual_detection_mode(info, 1);
|
||||
#endif
|
||||
info->enabled = true;
|
||||
#if defined(CONFIG_SEC_ATLANTIC_PROJECT)
|
||||
dev_notice(&info->client->dev, "%s: led_flag=%d\n", __func__,
|
||||
|
||||
+27
-75
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
@@ -315,8 +315,10 @@ enum RGB_LEDS{
|
||||
};
|
||||
|
||||
static u8 wled_debug_regs[] = {
|
||||
/* brightness registers */
|
||||
0x40, 0x41, 0x42, 0x43, 0x44, 0x45,
|
||||
/* common registers */
|
||||
0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e, 0x4f,
|
||||
0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
|
||||
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
|
||||
/* LED1 */
|
||||
0x60, 0x61, 0x62, 0x63, 0x66,
|
||||
@@ -364,6 +366,7 @@ struct pwm_config_data {
|
||||
int *old_duty_pcts;
|
||||
u8 mode;
|
||||
u8 default_mode;
|
||||
bool pwm_enabled;
|
||||
bool use_blink;
|
||||
bool blinking;
|
||||
};
|
||||
@@ -450,14 +453,10 @@ struct flash_config_data {
|
||||
bool safety_timer;
|
||||
bool torch_enable;
|
||||
bool flash_reg_get;
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
bool flash_wa_reg_get;
|
||||
#endif
|
||||
bool flash_on;
|
||||
bool torch_on;
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
struct regulator *flash_wa_reg;
|
||||
#endif
|
||||
#ifndef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
struct regulator *flash_boost_reg;
|
||||
struct regulator *torch_boost_reg;
|
||||
@@ -1173,7 +1172,6 @@ static int qpnp_flash_regulator_operate(struct qpnp_led_data *led, bool on)
|
||||
|
||||
if (!regulator_on && !led->flash_cfg->flash_on) {
|
||||
#ifndef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
for (i = 0; i < led->num_leds; i++) {
|
||||
if (led_array[i].flash_cfg->flash_reg_get) {
|
||||
if (led_array[i].flash_cfg->flash_wa_reg_get) {
|
||||
@@ -1210,55 +1208,15 @@ static int qpnp_flash_regulator_operate(struct qpnp_led_data *led, bool on)
|
||||
led->flash_cfg->flash_on = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
for (i = 0; i < led->num_leds; i++) {
|
||||
if (led_array[i].flash_cfg->flash_reg_get) {
|
||||
rc = regulator_enable(
|
||||
led_array[i].flash_cfg->flash_wa_reg);
|
||||
if (rc) {
|
||||
dev_err(&led->spmi_dev->dev,
|
||||
"Flash_wa regulator enable failed(%d)\n",
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
rc = regulator_enable(
|
||||
led_array[i].flash_cfg->\
|
||||
flash_boost_reg);
|
||||
if (rc) {
|
||||
dev_err(&led->spmi_dev->dev,
|
||||
"Regulator enable failed(%d)\n",
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
led->flash_cfg->flash_on = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
for (i = 0; i < led->num_leds; i++) {
|
||||
#ifdef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
qpnp_flash_reg_en(led, true);
|
||||
#else
|
||||
if (led_array[i].flash_cfg->flash_reg_get) {
|
||||
rc = regulator_enable(
|
||||
led_array[i].flash_cfg->\
|
||||
flash_boost_reg);
|
||||
if (rc) {
|
||||
dev_err(&led->spmi_dev->dev,
|
||||
"Regulator enable failed(%d)\n",
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
led->flash_cfg->flash_on = true;
|
||||
#ifndef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
#ifdef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
for (i = 0; i < led->num_leds; i++) {
|
||||
qpnp_flash_reg_en(led, true);
|
||||
led->flash_cfg->flash_on = true;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1287,7 +1245,6 @@ regulator_turn_off:
|
||||
"failed(%d)\n", rc);
|
||||
return rc;
|
||||
}
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
if (led_array[i].flash_cfg->flash_wa_reg_get) {
|
||||
rc = regulator_disable(
|
||||
led_array[i].flash_cfg->
|
||||
@@ -1300,7 +1257,6 @@ regulator_turn_off:
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#ifdef SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
@@ -1367,9 +1323,6 @@ regulator_turn_off:
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_SEC_MS01_PROJECT)
|
||||
extern void change_boost_control(int on);
|
||||
#endif
|
||||
static int qpnp_flash_set(struct qpnp_led_data *led)
|
||||
{
|
||||
int rc, error;
|
||||
@@ -1384,9 +1337,6 @@ static int qpnp_flash_set(struct qpnp_led_data *led)
|
||||
|
||||
/* Set led current */
|
||||
if (val > 0) {
|
||||
#if defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_SEC_MS01_PROJECT)
|
||||
change_boost_control(1);
|
||||
#endif
|
||||
if (led->flash_cfg->torch_enable) {
|
||||
if (led->flash_cfg->peripheral_subtype ==
|
||||
FLASH_SUBTYPE_DUAL) {
|
||||
@@ -1573,9 +1523,6 @@ static int qpnp_flash_set(struct qpnp_led_data *led)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
#if defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_MACH_MS01_LTE)
|
||||
change_boost_control(0);
|
||||
#endif
|
||||
rc = qpnp_led_masked_write(led,
|
||||
FLASH_LED_STROBE_CTRL(led->base),
|
||||
led->flash_cfg->trigger_flash,
|
||||
@@ -1889,15 +1836,19 @@ static int qpnp_rgb_set(struct qpnp_led_data *led)
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = pwm_enable(led->rgb_cfg->pwm_cfg->pwm_dev);
|
||||
if (rc < 0) {
|
||||
dev_err(&led->spmi_dev->dev, "pwm enable failed\n");
|
||||
return rc;
|
||||
if (led->rgb_cfg->pwm_cfg->pwm_enabled) {
|
||||
pwm_disable(led->rgb_cfg->pwm_cfg->pwm_dev);
|
||||
led->rgb_cfg->pwm_cfg->pwm_enabled = 0;
|
||||
}
|
||||
|
||||
rc = pwm_enable(led->rgb_cfg->pwm_cfg->pwm_dev);
|
||||
if (!rc)
|
||||
led->rgb_cfg->pwm_cfg->pwm_enabled = 1;
|
||||
} else {
|
||||
led->rgb_cfg->pwm_cfg->mode =
|
||||
led->rgb_cfg->pwm_cfg->default_mode;
|
||||
pwm_disable(led->rgb_cfg->pwm_cfg->pwm_dev);
|
||||
led->rgb_cfg->pwm_cfg->pwm_enabled = 0;
|
||||
rc = qpnp_led_masked_write(led,
|
||||
RGB_LED_EN_CTL(led->base),
|
||||
led->rgb_cfg->enable, RGB_LED_DISABLE);
|
||||
@@ -1937,7 +1888,10 @@ static void qpnp_led_set(struct led_classdev *led_cdev,
|
||||
#else
|
||||
led->cdev.brightness = value;
|
||||
#endif
|
||||
schedule_work(&led->work);
|
||||
if (led->in_order_command_processing)
|
||||
queue_work(led->workqueue, &led->work);
|
||||
else
|
||||
schedule_work(&led->work);
|
||||
}
|
||||
|
||||
static void __qpnp_led_work(struct qpnp_led_data *led,
|
||||
@@ -2109,7 +2063,7 @@ static void qpnp_led_turn_off(struct qpnp_led_data *led)
|
||||
static int __devinit qpnp_wled_init(struct qpnp_led_data *led)
|
||||
{
|
||||
int rc, i;
|
||||
u8 num_wled_strings;
|
||||
u8 num_wled_strings, val = 0;
|
||||
|
||||
num_wled_strings = led->wled_cfg->num_strings;
|
||||
|
||||
@@ -2181,10 +2135,10 @@ static int __devinit qpnp_wled_init(struct qpnp_led_data *led)
|
||||
|
||||
/* program current sink */
|
||||
if (led->wled_cfg->cs_out_en) {
|
||||
for (i = 0; i < led->wled_cfg->num_strings; i++)
|
||||
val |= 1 << i;
|
||||
rc = qpnp_led_masked_write(led, WLED_CURR_SINK_REG(led->base),
|
||||
WLED_CURR_SINK_MASK,
|
||||
(((1 << led->wled_cfg->num_strings) - 1)
|
||||
<< WLED_CURR_SINK_SHFT));
|
||||
WLED_CURR_SINK_MASK, (val << WLED_CURR_SINK_SHFT));
|
||||
if (rc) {
|
||||
dev_err(&led->spmi_dev->dev,
|
||||
"WLED curr sink reg write failed(%d)\n", rc);
|
||||
@@ -3354,7 +3308,6 @@ static int __devinit qpnp_get_config_flash(struct qpnp_led_data *led,
|
||||
led->flash_cfg->torch_enable =
|
||||
of_property_read_bool(node, "qcom,torch-enable");
|
||||
|
||||
#if !defined(CONFIG_MACH_S3VE3G_EUR) && !defined(CONFIG_SEC_MS01_PROJECT)
|
||||
if (of_find_property(of_get_parent(node), "flash-wa-supply",
|
||||
NULL) && (!*reg_set)) {
|
||||
led->flash_cfg->flash_wa_reg =
|
||||
@@ -3369,7 +3322,6 @@ static int __devinit qpnp_get_config_flash(struct qpnp_led_data *led,
|
||||
} else
|
||||
led->flash_cfg->flash_wa_reg_get = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (led->id == QPNP_ID_FLASH1_LED0) {
|
||||
led->flash_cfg->enable_module = FLASH_ENABLE_LED_0;
|
||||
|
||||
@@ -1346,6 +1346,11 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
|
||||
break;
|
||||
if (forward == prev)
|
||||
continue;
|
||||
if (forward->chain.next || forward->chain.prev) {
|
||||
uvc_trace(UVC_TRACE_DESCR, "Found reference to "
|
||||
"entity %d already in chain.\n", forward->id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
switch (UVC_ENTITY_TYPE(forward)) {
|
||||
case UVC_VC_EXTENSION_UNIT:
|
||||
@@ -1427,6 +1432,13 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (term->chain.next || term->chain.prev) {
|
||||
uvc_trace(UVC_TRACE_DESCR, "Found reference to "
|
||||
"entity %d already in chain.\n",
|
||||
term->id);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (uvc_trace_param & UVC_TRACE_PROBE)
|
||||
printk(" %d", term->id);
|
||||
|
||||
|
||||
@@ -1607,7 +1607,7 @@ qpnp_chg_vddmax_and_trim_set(struct qpnp_chg_chip *chip,
|
||||
voltage, trim_mv, vddmax, trim);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_BATTERY_SAMSUNG) || (defined(CONFIG_BATTERY_SAMSUNG) && defined(CONFIG_BATTERY_SWELLING))
|
||||
static int
|
||||
qpnp_chg_vddmax_get(struct qpnp_chg_chip *chip)
|
||||
{
|
||||
@@ -1622,6 +1622,7 @@ qpnp_chg_vddmax_get(struct qpnp_chg_chip *chip)
|
||||
|
||||
return QPNP_CHG_V_MIN_MV + (int)vddmax * QPNP_CHG_V_STEP_MV;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* JEITA compliance logic */
|
||||
static void
|
||||
@@ -5553,7 +5554,9 @@ static enum power_supply_property sec_qpnp_chg_props[] = {
|
||||
POWER_SUPPLY_PROP_INPUT_CURRENT_TRIM,
|
||||
POWER_SUPPLY_PROP_INPUT_CURRENT_SETTLED,
|
||||
POWER_SUPPLY_PROP_VOLTAGE_MIN,
|
||||
#if defined(CONFIG_BATTERY_SWELLING)
|
||||
POWER_SUPPLY_PROP_VOLTAGE_MAX,
|
||||
#endif
|
||||
POWER_SUPPLY_PROP_INPUT_VOLTAGE_REGULATION,
|
||||
};
|
||||
|
||||
@@ -5568,7 +5571,9 @@ sec_qpnp_chg_property_is_writeable(struct power_supply *psy,
|
||||
case POWER_SUPPLY_PROP_INPUT_CURRENT_TRIM:
|
||||
case POWER_SUPPLY_PROP_INPUT_CURRENT_SETTLED:
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MIN:
|
||||
#if defined(CONFIG_BATTERY_SWELLING)
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
|
||||
#endif
|
||||
case POWER_SUPPLY_PROP_COOL_TEMP:
|
||||
case POWER_SUPPLY_PROP_WARM_TEMP:
|
||||
case POWER_SUPPLY_PROP_CAPACITY:
|
||||
@@ -5644,9 +5649,11 @@ sec_qpnp_chg_get_property(struct power_supply *psy,
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MIN:
|
||||
val->intval = qpnp_chg_vinmin_get(chip) * 1000;
|
||||
break;
|
||||
#if defined(CONFIG_BATTERY_SWELLING)
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
|
||||
val->intval = qpnp_chg_vddmax_get(chip);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -5764,11 +5771,13 @@ sec_qpnp_chg_set_property(struct power_supply *psy,
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MIN:
|
||||
qpnp_chg_vinmin_set(chip, val->intval / 1000);
|
||||
break;
|
||||
#if defined(CONFIG_BATTERY_SWELLING)
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_MAX:
|
||||
pr_info("set cv(%dmV)",val->intval);
|
||||
qpnp_chg_vddmax_and_trim_set(chip, val->intval,
|
||||
chip->delta_vddmax_mv);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -6707,7 +6707,7 @@ enum hrtimer_restart sec_bat_polling_alarm_expired(struct hrtimer *timer)
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_SEC_MS01_PROJECT)
|
||||
#if 0 /* obsolete, we don't need this function anymore */
|
||||
static struct qpnp_chg_chip * chg_chip;
|
||||
void change_boost_control(int on)
|
||||
{
|
||||
@@ -6745,7 +6745,7 @@ qpnp_charger_probe(struct spmi_device *spmi)
|
||||
pr_err("kzalloc() failed.\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
#if defined(CONFIG_MACH_MS01_LTE)
|
||||
#if 0
|
||||
chg_chip = chip;
|
||||
#endif
|
||||
#ifdef SEC_CHARGER_CODE
|
||||
|
||||
@@ -2459,10 +2459,10 @@ static int tiocspgrp(struct tty_struct *tty, struct tty_struct *real_tty, pid_t
|
||||
if (session_of_pgrp(pgrp) != task_session(current))
|
||||
goto out_unlock;
|
||||
retval = 0;
|
||||
spin_lock_irqsave(&tty->ctrl_lock, flags);
|
||||
spin_lock_irqsave(&real_tty->ctrl_lock, flags);
|
||||
put_pid(real_tty->pgrp);
|
||||
real_tty->pgrp = get_pid(pgrp);
|
||||
spin_unlock_irqrestore(&tty->ctrl_lock, flags);
|
||||
spin_unlock_irqrestore(&real_tty->ctrl_lock, flags);
|
||||
out_unlock:
|
||||
rcu_read_unlock();
|
||||
return retval;
|
||||
|
||||
+1
-1
@@ -1463,7 +1463,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t,
|
||||
(!regset->active || regset->active(t->task, regset))) {
|
||||
int ret;
|
||||
size_t size = regset->n * regset->size;
|
||||
void *data = kmalloc(size, GFP_KERNEL);
|
||||
void *data = kzalloc(size, GFP_KERNEL);
|
||||
if (unlikely(!data))
|
||||
return 0;
|
||||
ret = regset->get(t->task, regset,
|
||||
|
||||
+7
-5
@@ -1133,10 +1133,8 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
||||
*/
|
||||
if (!for_part) {
|
||||
ret = devcgroup_inode_permission(bdev->bd_inode, perm);
|
||||
if (ret != 0) {
|
||||
bdput(bdev);
|
||||
if (ret != 0)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
restart:
|
||||
@@ -1211,8 +1209,10 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
||||
goto out_clear;
|
||||
BUG_ON(for_part);
|
||||
ret = __blkdev_get(whole, mode, 1);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
bdput(whole);
|
||||
goto out_clear;
|
||||
}
|
||||
bdev->bd_contains = whole;
|
||||
bdev_inode_switch_bdi(bdev->bd_inode,
|
||||
whole->bd_inode->i_data.backing_dev_info);
|
||||
@@ -1265,7 +1265,6 @@ static int __blkdev_get(struct block_device *bdev, fmode_t mode, int for_part)
|
||||
put_disk(disk);
|
||||
module_put(owner);
|
||||
out:
|
||||
bdput(bdev);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1351,6 +1350,9 @@ int blkdev_get(struct block_device *bdev, fmode_t mode, void *holder)
|
||||
bdput(whole);
|
||||
}
|
||||
|
||||
if (res)
|
||||
bdput(bdev);
|
||||
|
||||
return res;
|
||||
}
|
||||
EXPORT_SYMBOL(blkdev_get);
|
||||
|
||||
+30
-5
@@ -401,12 +401,28 @@ static int put_compat_flock64(struct flock *kfl, struct compat_flock64 __user *u
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned int
|
||||
convert_fcntl_cmd(unsigned int cmd)
|
||||
{
|
||||
switch (cmd) {
|
||||
case F_GETLK64:
|
||||
return F_GETLK;
|
||||
case F_SETLK64:
|
||||
return F_SETLK;
|
||||
case F_SETLKW64:
|
||||
return F_SETLKW;
|
||||
}
|
||||
|
||||
return cmd;
|
||||
}
|
||||
|
||||
asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
mm_segment_t old_fs;
|
||||
struct flock f;
|
||||
long ret;
|
||||
unsigned int conv_cmd;
|
||||
|
||||
switch (cmd) {
|
||||
case F_GETLK:
|
||||
@@ -443,16 +459,18 @@ asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
|
||||
case F_GETLK64:
|
||||
case F_SETLK64:
|
||||
case F_SETLKW64:
|
||||
case F_OFD_GETLK:
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
ret = get_compat_flock64(&f, compat_ptr(arg));
|
||||
if (ret != 0)
|
||||
break;
|
||||
old_fs = get_fs();
|
||||
set_fs(KERNEL_DS);
|
||||
ret = sys_fcntl(fd, (cmd == F_GETLK64) ? F_GETLK :
|
||||
((cmd == F_SETLK64) ? F_SETLK : F_SETLKW),
|
||||
(unsigned long)&f);
|
||||
conv_cmd = convert_fcntl_cmd(cmd);
|
||||
ret = sys_fcntl(fd, conv_cmd, (unsigned long)&f);
|
||||
set_fs(old_fs);
|
||||
if (cmd == F_GETLK64 && ret == 0) {
|
||||
if ((conv_cmd == F_GETLK || conv_cmd == F_OFD_GETLK) && ret == 0) {
|
||||
/* need to return lock information - see above for commentary */
|
||||
if (f.l_start > COMPAT_LOFF_T_MAX)
|
||||
ret = -EOVERFLOW;
|
||||
@@ -473,8 +491,15 @@ asmlinkage long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,
|
||||
asmlinkage long compat_sys_fcntl(unsigned int fd, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
if ((cmd == F_GETLK64) || (cmd == F_SETLK64) || (cmd == F_SETLKW64))
|
||||
switch (cmd) {
|
||||
case F_GETLK64:
|
||||
case F_SETLK64:
|
||||
case F_SETLKW64:
|
||||
case F_OFD_GETLK:
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
return -EINVAL;
|
||||
}
|
||||
return compat_sys_fcntl64(fd, cmd, arg);
|
||||
}
|
||||
|
||||
|
||||
+9
-4
@@ -1591,9 +1591,11 @@ static int ep_loop_check_proc(void *priv, void *cookie, int call_nests)
|
||||
* not already there, and calling reverse_path_check()
|
||||
* during ep_insert().
|
||||
*/
|
||||
if (list_empty(&epi->ffd.file->f_tfile_llink))
|
||||
list_add(&epi->ffd.file->f_tfile_llink,
|
||||
&tfile_check_list);
|
||||
if (list_empty(&epi->ffd.file->f_tfile_llink)) {
|
||||
if (get_file_rcu(epi->ffd.file))
|
||||
list_add(&epi->ffd.file->f_tfile_llink,
|
||||
&tfile_check_list);
|
||||
}
|
||||
}
|
||||
}
|
||||
mutex_unlock(&ep->mtx);
|
||||
@@ -1637,6 +1639,7 @@ static void clear_tfile_check_list(void)
|
||||
file = list_first_entry(&tfile_check_list, struct file,
|
||||
f_tfile_llink);
|
||||
list_del_init(&file->f_tfile_llink);
|
||||
fput(file);
|
||||
}
|
||||
INIT_LIST_HEAD(&tfile_check_list);
|
||||
}
|
||||
@@ -1773,8 +1776,10 @@ SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd,
|
||||
clear_tfile_check_list();
|
||||
goto error_tgt_fput;
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
get_file(tfile);
|
||||
list_add(&tfile->f_tfile_llink, &tfile_check_list);
|
||||
}
|
||||
}
|
||||
|
||||
mutex_lock_nested(&ep->mtx, 0);
|
||||
|
||||
+25
-12
@@ -380,9 +380,19 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
|
||||
case F_SETFL:
|
||||
err = setfl(fd, filp, arg);
|
||||
break;
|
||||
#if BITS_PER_LONG != 32
|
||||
/* 32-bit arches must use fcntl64() */
|
||||
case F_OFD_GETLK:
|
||||
#endif
|
||||
case F_GETLK:
|
||||
err = fcntl_getlk(filp, (struct flock __user *) arg);
|
||||
err = fcntl_getlk(filp, cmd, (struct flock __user *) arg);
|
||||
break;
|
||||
#if BITS_PER_LONG != 32
|
||||
/* 32-bit arches must use fcntl64() */
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
#endif
|
||||
/* Fallthrough */
|
||||
case F_SETLK:
|
||||
case F_SETLKW:
|
||||
err = fcntl_setlk(fd, filp, cmd, (struct flock __user *) arg);
|
||||
@@ -506,17 +516,20 @@ SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd,
|
||||
err = -EBADF;
|
||||
|
||||
switch (cmd) {
|
||||
case F_GETLK64:
|
||||
err = fcntl_getlk64(filp, (struct flock64 __user *) arg);
|
||||
break;
|
||||
case F_SETLK64:
|
||||
case F_SETLKW64:
|
||||
err = fcntl_setlk64(fd, filp, cmd,
|
||||
(struct flock64 __user *) arg);
|
||||
break;
|
||||
default:
|
||||
err = do_fcntl(fd, cmd, arg, filp);
|
||||
break;
|
||||
case F_GETLK64:
|
||||
case F_OFD_GETLK:
|
||||
err = fcntl_getlk64(filp, cmd, (struct flock64 __user *) arg);
|
||||
break;
|
||||
case F_SETLK64:
|
||||
case F_SETLKW64:
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
err = fcntl_setlk64(fd, filp, cmd,
|
||||
(struct flock64 __user *) arg);
|
||||
break;
|
||||
default:
|
||||
err = do_fcntl(fd, cmd, arg, filp);
|
||||
break;
|
||||
}
|
||||
fput(filp);
|
||||
out:
|
||||
|
||||
+1
-1
@@ -232,7 +232,7 @@ static void __fput(struct file *file)
|
||||
* in the file cleanup chain.
|
||||
*/
|
||||
eventpoll_release(file);
|
||||
locks_remove_flock(file);
|
||||
locks_remove_file(file);
|
||||
|
||||
if (unlikely(file->f_flags & FASYNC)) {
|
||||
if (file->f_op && file->f_op->fasync)
|
||||
|
||||
+65
-12
@@ -132,6 +132,7 @@
|
||||
#define IS_POSIX(fl) (fl->fl_flags & FL_POSIX)
|
||||
#define IS_FLOCK(fl) (fl->fl_flags & FL_FLOCK)
|
||||
#define IS_LEASE(fl) (fl->fl_flags & FL_LEASE)
|
||||
#define IS_OFDLCK(fl) (fl->fl_flags & FL_OFDLCK)
|
||||
|
||||
static bool lease_breaking(struct file_lock *fl)
|
||||
{
|
||||
@@ -1697,7 +1698,7 @@ EXPORT_SYMBOL_GPL(vfs_test_lock);
|
||||
|
||||
static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
|
||||
{
|
||||
flock->l_pid = fl->fl_pid;
|
||||
flock->l_pid = IS_OFDLCK(fl) ? -1 : fl->fl_pid;
|
||||
#if BITS_PER_LONG == 32
|
||||
/*
|
||||
* Make sure we can represent the posix lock via
|
||||
@@ -1719,7 +1720,7 @@ static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
|
||||
#if BITS_PER_LONG == 32
|
||||
static void posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl)
|
||||
{
|
||||
flock->l_pid = fl->fl_pid;
|
||||
flock->l_pid = IS_OFDLCK(fl) ? -1 : fl->fl_pid;
|
||||
flock->l_start = fl->fl_start;
|
||||
flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
|
||||
fl->fl_end - fl->fl_start + 1;
|
||||
@@ -1731,7 +1732,7 @@ static void posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl)
|
||||
/* Report the first existing lock that would conflict with l.
|
||||
* This implements the F_GETLK command of fcntl().
|
||||
*/
|
||||
int fcntl_getlk(struct file *filp, struct flock __user *l)
|
||||
int fcntl_getlk(struct file *filp, unsigned int cmd, struct flock __user *l)
|
||||
{
|
||||
struct file_lock file_lock;
|
||||
struct flock flock;
|
||||
@@ -1748,6 +1749,12 @@ int fcntl_getlk(struct file *filp, struct flock __user *l)
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
if (cmd == F_OFD_GETLK) {
|
||||
cmd = F_GETLK;
|
||||
file_lock.fl_flags |= FL_OFDLCK;
|
||||
file_lock.fl_owner = (fl_owner_t)filp;
|
||||
}
|
||||
|
||||
error = vfs_test_lock(filp, &file_lock);
|
||||
if (error)
|
||||
goto out;
|
||||
@@ -1867,10 +1874,26 @@ again:
|
||||
error = flock_to_posix_lock(filp, file_lock, &flock);
|
||||
if (error)
|
||||
goto out;
|
||||
if (cmd == F_SETLKW) {
|
||||
|
||||
/*
|
||||
* If the cmd is requesting file-private locks, then set the
|
||||
* FL_OFDLCK flag and override the owner.
|
||||
*/
|
||||
switch (cmd) {
|
||||
case F_OFD_SETLK:
|
||||
cmd = F_SETLK;
|
||||
file_lock->fl_flags |= FL_OFDLCK;
|
||||
file_lock->fl_owner = (fl_owner_t)filp;
|
||||
break;
|
||||
case F_OFD_SETLKW:
|
||||
cmd = F_SETLKW;
|
||||
file_lock->fl_flags |= FL_OFDLCK;
|
||||
file_lock->fl_owner = (fl_owner_t)filp;
|
||||
/* Fallthrough */
|
||||
case F_SETLKW:
|
||||
file_lock->fl_flags |= FL_SLEEP;
|
||||
}
|
||||
|
||||
|
||||
error = -EBADF;
|
||||
switch (flock.l_type) {
|
||||
case F_RDLCK:
|
||||
@@ -1916,7 +1939,7 @@ out:
|
||||
/* Report the first existing lock that would conflict with l.
|
||||
* This implements the F_GETLK command of fcntl().
|
||||
*/
|
||||
int fcntl_getlk64(struct file *filp, struct flock64 __user *l)
|
||||
int fcntl_getlk64(struct file *filp, unsigned int cmd, struct flock64 __user *l)
|
||||
{
|
||||
struct file_lock file_lock;
|
||||
struct flock64 flock;
|
||||
@@ -1933,6 +1956,12 @@ int fcntl_getlk64(struct file *filp, struct flock64 __user *l)
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
if (cmd == F_OFD_GETLK) {
|
||||
cmd = F_GETLK64;
|
||||
file_lock.fl_flags |= FL_OFDLCK;
|
||||
file_lock.fl_owner = (fl_owner_t)filp;
|
||||
}
|
||||
|
||||
error = vfs_test_lock(filp, &file_lock);
|
||||
if (error)
|
||||
goto out;
|
||||
@@ -1985,10 +2014,26 @@ again:
|
||||
error = flock64_to_posix_lock(filp, file_lock, &flock);
|
||||
if (error)
|
||||
goto out;
|
||||
if (cmd == F_SETLKW64) {
|
||||
|
||||
/*
|
||||
* If the cmd is requesting file-private locks, then set the
|
||||
* FL_OFDLCK flag and override the owner.
|
||||
*/
|
||||
switch (cmd) {
|
||||
case F_OFD_SETLK:
|
||||
cmd = F_SETLK64;
|
||||
file_lock->fl_flags |= FL_OFDLCK;
|
||||
file_lock->fl_owner = (fl_owner_t)filp;
|
||||
break;
|
||||
case F_OFD_SETLKW:
|
||||
cmd = F_SETLKW64;
|
||||
file_lock->fl_flags |= FL_OFDLCK;
|
||||
file_lock->fl_owner = (fl_owner_t)filp;
|
||||
/* Fallthrough */
|
||||
case F_SETLKW64:
|
||||
file_lock->fl_flags |= FL_SLEEP;
|
||||
}
|
||||
|
||||
|
||||
error = -EBADF;
|
||||
switch (flock.l_type) {
|
||||
case F_RDLCK:
|
||||
@@ -2064,7 +2109,7 @@ EXPORT_SYMBOL(locks_remove_posix);
|
||||
/*
|
||||
* This function is called on the last close of an open file.
|
||||
*/
|
||||
void locks_remove_flock(struct file *filp)
|
||||
void locks_remove_file(struct file *filp)
|
||||
{
|
||||
struct inode * inode = filp->f_path.dentry->d_inode;
|
||||
struct file_lock *fl;
|
||||
@@ -2073,6 +2118,8 @@ void locks_remove_flock(struct file *filp)
|
||||
if (!inode->i_flock)
|
||||
return;
|
||||
|
||||
locks_remove_posix(filp, (fl_owner_t)filp);
|
||||
|
||||
if (filp->f_op && filp->f_op->flock) {
|
||||
struct file_lock fl = {
|
||||
.fl_pid = current->tgid,
|
||||
@@ -2166,8 +2213,14 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
|
||||
|
||||
seq_printf(f, "%lld:%s ", id, pfx);
|
||||
if (IS_POSIX(fl)) {
|
||||
seq_printf(f, "%6s %s ",
|
||||
(fl->fl_flags & FL_ACCESS) ? "ACCESS" : "POSIX ",
|
||||
if (fl->fl_flags & FL_ACCESS)
|
||||
seq_printf(f, "ACCESS");
|
||||
else if (IS_OFDLCK(fl))
|
||||
seq_printf(f, "FLPVT ");
|
||||
else
|
||||
seq_printf(f, "POSIX ");
|
||||
|
||||
seq_printf(f, " %s ",
|
||||
(inode == NULL) ? "*NOINODE*" :
|
||||
mandatory_lock(inode) ? "MANDATORY" : "ADVISORY ");
|
||||
} else if (IS_FLOCK(fl)) {
|
||||
@@ -2204,7 +2257,7 @@ static void lock_get_status(struct seq_file *f, struct file_lock *fl,
|
||||
inode->i_sb->s_id, inode->i_ino);
|
||||
#else
|
||||
/* userspace relies on this representation of dev_t ;-( */
|
||||
seq_printf(f, "%d %02x:%02x:%ld ", fl_pid,
|
||||
seq_printf(f, "%d %02x:%02x:%lu ", fl_pid,
|
||||
MAJOR(inode->i_sb->s_dev),
|
||||
MINOR(inode->i_sb->s_dev), inode->i_ino);
|
||||
#endif
|
||||
|
||||
+6
-3
@@ -69,15 +69,18 @@ config SDFAT_CHECK_RO_ATTR
|
||||
|
||||
config SDFAT_ALIGNED_MPAGE_WRITE
|
||||
bool "Enable supporting aligned mpage_write"
|
||||
default y
|
||||
default y if SDFAT_FS=y
|
||||
default n if SDFAT_FS=m
|
||||
depends on SDFAT_FS
|
||||
|
||||
config SDFAT_VIRTUAL_XATTR
|
||||
bool "Virtual xattr support for sdFAT"
|
||||
default y
|
||||
default n
|
||||
depends on SDFAT_FS
|
||||
help
|
||||
To support virtual xattr.
|
||||
If you enable this feature, it supports virtual xattr.
|
||||
This feature will be deprecated because it might be the same with
|
||||
"context" mount option.
|
||||
|
||||
config SDFAT_VIRTUAL_XATTR_SELINUX_LABEL
|
||||
string "Default string for SELinux label"
|
||||
|
||||
@@ -708,7 +708,8 @@ static inline AU_INFO_T *amap_get_packing_au(AMAP_T *amap, int dest, int num_to_
|
||||
}
|
||||
}
|
||||
|
||||
if ((PACKING_HARDLIMIT) && amap->n_need_packing >= PACKING_HARDLIMIT) {
|
||||
if ((PACKING_HARDLIMIT != 0) &&
|
||||
amap->n_need_packing >= PACKING_HARDLIMIT) {
|
||||
/* Compulsory SLC flushing:
|
||||
* If there was no chance to do best-fit packing
|
||||
* and the # of AU-aligned allocation exceeds HARD threshold,
|
||||
|
||||
+22
-8
@@ -96,7 +96,6 @@ s32 bdev_check_bdi_valid(struct super_block *sb)
|
||||
fsi->prev_eio |= SDFAT_EIO_BDI;
|
||||
sdfat_log_msg(sb, KERN_ERR, "%s: block device is "
|
||||
"eliminated.(bdi:%p)", __func__, sb->s_bdi);
|
||||
sdfat_debug_warn_on(1);
|
||||
}
|
||||
return -ENXIO;
|
||||
}
|
||||
@@ -104,18 +103,13 @@ s32 bdev_check_bdi_valid(struct super_block *sb)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* Make a readahead request */
|
||||
s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
|
||||
#if IS_BUILTIN(CONFIG_SDFAT_FS)
|
||||
static void __bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
|
||||
{
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
u32 sects_per_page = (PAGE_SIZE >> sb->s_blocksize_bits);
|
||||
struct blk_plug plug;
|
||||
u64 i;
|
||||
|
||||
if (!fsi->bd_opened)
|
||||
return -EIO;
|
||||
|
||||
blk_start_plug(&plug);
|
||||
for (i = 0; i < num_secs; i++) {
|
||||
if (i && !(i & (sects_per_page - 1)))
|
||||
@@ -123,6 +117,26 @@ s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
|
||||
sb_breadahead(sb, (sector_t)(secno + i));
|
||||
}
|
||||
blk_finish_plug(&plug);
|
||||
}
|
||||
#else
|
||||
static void __bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
|
||||
{
|
||||
u64 i;
|
||||
|
||||
for (i = 0; i < num_secs; i++)
|
||||
sb_breadahead(sb, (sector_t)(secno + i));
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Make a readahead request */
|
||||
s32 bdev_readahead(struct super_block *sb, u64 secno, u64 num_secs)
|
||||
{
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
|
||||
if (!fsi->bd_opened)
|
||||
return -EIO;
|
||||
|
||||
__bdev_readahead(sb, secno, num_secs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+17
-22
@@ -158,7 +158,7 @@ static s32 __fs_set_vol_flags(struct super_block *sb, u16 new_flag, s32 always_s
|
||||
/* skip updating volume dirty flag,
|
||||
* if this volume has been mounted with read-only
|
||||
*/
|
||||
if (sb->s_flags & MS_RDONLY)
|
||||
if (sb_rdonly(sb))
|
||||
return 0;
|
||||
|
||||
if (!fsi->pbr_bh) {
|
||||
@@ -177,7 +177,8 @@ static s32 __fs_set_vol_flags(struct super_block *sb, u16 new_flag, s32 always_s
|
||||
bpb->bsx.state = new_flag & VOL_DIRTY ? FAT_VOL_DIRTY : 0x00;
|
||||
} else { /* FAT16/12 */
|
||||
pbr16_t *bpb = (pbr16_t *) fsi->pbr_bh->b_data;
|
||||
bpb->bpb.state = new_flag & VOL_DIRTY ? FAT_VOL_DIRTY : 0x00;
|
||||
bpb->bpb.f16.state = new_flag & VOL_DIRTY ?
|
||||
FAT_VOL_DIRTY : 0x00;
|
||||
}
|
||||
|
||||
if (always_sync)
|
||||
@@ -1655,7 +1656,7 @@ static bool is_exfat(pbr_t *pbr)
|
||||
|
||||
static bool is_fat32(pbr_t *pbr)
|
||||
{
|
||||
if (le16_to_cpu(pbr->bpb.f16.num_fat_sectors))
|
||||
if (le16_to_cpu(pbr->bpb.fat.num_fat_sectors))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -1668,7 +1669,7 @@ inline pbr_t *read_pbr_with_logical_sector(struct super_block *sb, struct buffer
|
||||
if (is_exfat(p_pbr))
|
||||
logical_sect = 1 << p_pbr->bsx.f64.sect_size_bits;
|
||||
else
|
||||
logical_sect = get_unaligned_le16(&p_pbr->bpb.f16.sect_size);
|
||||
logical_sect = get_unaligned_le16(&p_pbr->bpb.fat.sect_size);
|
||||
|
||||
/* is x a power of 2?
|
||||
* (x) != 0 && (((x) & ((x) - 1)) == 0)
|
||||
@@ -1780,18 +1781,6 @@ s32 fscore_mount(struct super_block *sb)
|
||||
opts->improved_allocation = 0;
|
||||
opts->defrag = 0;
|
||||
ret = mount_exfat(sb, p_pbr);
|
||||
} else if (is_fat32(p_pbr)) {
|
||||
if (opts->fs_type && opts->fs_type != FS_TYPE_VFAT) {
|
||||
sdfat_log_msg(sb, KERN_ERR,
|
||||
"not specified filesystem type "
|
||||
"(media:vfat, opts:%s)",
|
||||
FS_TYPE_STR[opts->fs_type]);
|
||||
ret = -EINVAL;
|
||||
goto free_bh;
|
||||
}
|
||||
/* set maximum file size for FAT */
|
||||
sb->s_maxbytes = 0xffffffff;
|
||||
ret = mount_fat32(sb, p_pbr);
|
||||
} else {
|
||||
if (opts->fs_type && opts->fs_type != FS_TYPE_VFAT) {
|
||||
sdfat_log_msg(sb, KERN_ERR,
|
||||
@@ -1803,9 +1792,14 @@ s32 fscore_mount(struct super_block *sb)
|
||||
}
|
||||
/* set maximum file size for FAT */
|
||||
sb->s_maxbytes = 0xffffffff;
|
||||
opts->improved_allocation = 0;
|
||||
opts->defrag = 0;
|
||||
ret = mount_fat16(sb, p_pbr);
|
||||
|
||||
if (is_fat32(p_pbr)) {
|
||||
ret = mount_fat32(sb, p_pbr);
|
||||
} else {
|
||||
opts->improved_allocation = 0;
|
||||
opts->defrag = 0;
|
||||
ret = mount_fat16(sb, p_pbr);
|
||||
}
|
||||
}
|
||||
free_bh:
|
||||
brelse(tmp_bh);
|
||||
@@ -1817,8 +1811,9 @@ free_bh:
|
||||
/* warn misaligned data data start sector must be a multiple of clu_size */
|
||||
sdfat_log_msg(sb, KERN_INFO,
|
||||
"detected volume info : %s "
|
||||
"(bps : %lu, spc : %u, data start : %llu, %s)",
|
||||
"(%04hX-%04hX, bps : %lu, spc : %u, data start : %llu, %s)",
|
||||
sdfat_get_vol_type_str(fsi->vol_type),
|
||||
(fsi->vol_id >> 16) & 0xffff, fsi->vol_id & 0xffff,
|
||||
sb->s_blocksize, fsi->sect_per_clus, fsi->data_start_sector,
|
||||
(fsi->data_start_sector & (fsi->sect_per_clus - 1)) ?
|
||||
"misaligned" : "aligned");
|
||||
@@ -2374,7 +2369,7 @@ s32 fscore_write_link(struct inode *inode, FILE_ID_T *fid, void *buffer, u64 cou
|
||||
ep2 = ep;
|
||||
}
|
||||
|
||||
fsi->fs_func->set_entry_time(ep, tm_now(SDFAT_SB(sb), &tm), TM_MODIFY);
|
||||
fsi->fs_func->set_entry_time(ep, tm_now(inode, &tm), TM_MODIFY);
|
||||
fsi->fs_func->set_entry_attr(ep, fid->attr);
|
||||
|
||||
if (modified) {
|
||||
@@ -2581,7 +2576,7 @@ s32 fscore_truncate(struct inode *inode, u64 old_size, u64 new_size)
|
||||
ep2 = ep;
|
||||
}
|
||||
|
||||
fsi->fs_func->set_entry_time(ep, tm_now(SDFAT_SB(sb), &tm), TM_MODIFY);
|
||||
fsi->fs_func->set_entry_time(ep, tm_now(inode, &tm), TM_MODIFY);
|
||||
fsi->fs_func->set_entry_attr(ep, fid->attr);
|
||||
|
||||
/*
|
||||
|
||||
+9
-1
@@ -60,7 +60,15 @@ typedef struct {
|
||||
void *__buf; // __buf should be the last member
|
||||
} ENTRY_SET_CACHE_T;
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* Inline Functions */
|
||||
/*----------------------------------------------------------------------*/
|
||||
static inline bool is_valid_clus(FS_INFO_T *fsi, u32 clus)
|
||||
{
|
||||
if (clus < CLUS_BASE || fsi->num_clusters <= clus)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
/* External Function Declarations */
|
||||
|
||||
+43
-22
@@ -220,20 +220,27 @@ static void exfat_set_entry_size(DENTRY_T *p_entry, u64 size)
|
||||
ep->size = cpu_to_le64(size);
|
||||
} /* end of exfat_set_entry_size */
|
||||
|
||||
|
||||
#define TENS_MS_PER_SEC (100)
|
||||
#define SEC_TO_TENS_MS(sec) (((sec) & 0x01) ? TENS_MS_PER_SEC : 0)
|
||||
#define TENS_MS_TO_SEC(tens_ms) (((tens_ms) / TENS_MS_PER_SEC) ? 1 : 0)
|
||||
|
||||
static void exfat_get_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
|
||||
{
|
||||
u16 t = 0x00, d = 0x21, tz = 0x00;
|
||||
u16 t = 0x00, d = 0x21, tz = 0x00, s = 0x00;
|
||||
FILE_DENTRY_T *ep = (FILE_DENTRY_T *)p_entry;
|
||||
|
||||
switch (mode) {
|
||||
case TM_CREATE:
|
||||
t = le16_to_cpu(ep->create_time);
|
||||
d = le16_to_cpu(ep->create_date);
|
||||
s = TENS_MS_TO_SEC(ep->create_time_ms);
|
||||
tz = ep->create_tz;
|
||||
break;
|
||||
case TM_MODIFY:
|
||||
t = le16_to_cpu(ep->modify_time);
|
||||
d = le16_to_cpu(ep->modify_date);
|
||||
s = TENS_MS_TO_SEC(ep->modify_time_ms);
|
||||
tz = ep->modify_tz;
|
||||
break;
|
||||
case TM_ACCESS:
|
||||
@@ -244,7 +251,7 @@ static void exfat_get_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
|
||||
}
|
||||
|
||||
tp->tz.value = tz;
|
||||
tp->sec = (t & 0x001F) << 1;
|
||||
tp->sec = ((t & 0x001F) << 1) + s;
|
||||
tp->min = (t >> 5) & 0x003F;
|
||||
tp->hour = (t >> 11);
|
||||
tp->day = (d & 0x001F);
|
||||
@@ -263,12 +270,14 @@ static void exfat_set_entry_time(DENTRY_T *p_entry, TIMESTAMP_T *tp, u8 mode)
|
||||
switch (mode) {
|
||||
case TM_CREATE:
|
||||
ep->create_time = cpu_to_le16(t);
|
||||
ep->create_time_ms = SEC_TO_TENS_MS(tp->sec);
|
||||
ep->create_date = cpu_to_le16(d);
|
||||
ep->create_tz = tp->tz.value;
|
||||
break;
|
||||
case TM_MODIFY:
|
||||
ep->modify_time = cpu_to_le16(t);
|
||||
ep->modify_date = cpu_to_le16(d);
|
||||
ep->modify_time_ms = (tp->sec & 0x1) ? TENS_MS_PER_SEC : 0;
|
||||
ep->modify_tz = tp->tz.value;
|
||||
break;
|
||||
case TM_ACCESS:
|
||||
@@ -286,12 +295,10 @@ static void __init_file_entry(struct super_block *sb, FILE_DENTRY_T *ep, u32 typ
|
||||
|
||||
exfat_set_entry_type((DENTRY_T *) ep, type);
|
||||
|
||||
tp = tm_now(SDFAT_SB(sb), &tm);
|
||||
tp = tm_now_sb(sb, &tm);
|
||||
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_CREATE);
|
||||
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_MODIFY);
|
||||
exfat_set_entry_time((DENTRY_T *) ep, tp, TM_ACCESS);
|
||||
ep->create_time_ms = 0;
|
||||
ep->modify_time_ms = 0;
|
||||
} /* end of __init_file_entry */
|
||||
|
||||
static void __init_strm_entry(STRM_DENTRY_T *ep, u8 flags, u32 start_clu, u64 size)
|
||||
@@ -1279,7 +1286,7 @@ static s32 exfat_free_cluster(struct super_block *sb, CHAIN_T *p_chain, s32 do_r
|
||||
}
|
||||
|
||||
/* check cluster validation */
|
||||
if ((p_chain->dir < 2) && (p_chain->dir >= fsi->num_clusters)) {
|
||||
if (!is_valid_clus(fsi, p_chain->dir)) {
|
||||
EMSG("%s: invalid start cluster (%u)\n", __func__, p_chain->dir);
|
||||
sdfat_debug_bug_on(1);
|
||||
return -EIO;
|
||||
@@ -1367,9 +1374,13 @@ static s32 exfat_alloc_cluster(struct super_block *sb, u32 num_alloc, CHAIN_T *p
|
||||
}
|
||||
|
||||
/* check cluster validation */
|
||||
if ((hint_clu < CLUS_BASE) && (hint_clu >= fsi->num_clusters)) {
|
||||
EMSG("%s: hint_cluster is invalid (%u)\n", __func__, hint_clu);
|
||||
ASSERT(0);
|
||||
if (!is_valid_clus(fsi, hint_clu)) {
|
||||
/* "last + 1" can be passed as hint_clu. Otherwise, bug_on */
|
||||
if (hint_clu != fsi->num_clusters) {
|
||||
EMSG("%s: hint_cluster is invalid (%u)\n",
|
||||
__func__, hint_clu);
|
||||
sdfat_debug_bug_on(1);
|
||||
}
|
||||
hint_clu = CLUS_BASE;
|
||||
if (p_chain->flags == 0x03) {
|
||||
if (exfat_chain_cont_cluster(sb, p_chain->dir, num_clusters))
|
||||
@@ -1508,43 +1519,53 @@ s32 mount_exfat(struct super_block *sb, pbr_t *p_pbr)
|
||||
pbr64_t *p_bpb = (pbr64_t *)p_pbr;
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
|
||||
if (!p_bpb->bsx.num_fats) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->sect_per_clus = 1 << p_bpb->bsx.sect_per_clus_bits;
|
||||
fsi->sect_per_clus_bits = p_bpb->bsx.sect_per_clus_bits;
|
||||
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
|
||||
fsi->cluster_size = 1 << fsi->cluster_size_bits;
|
||||
|
||||
if (!p_bpb->bsx.num_fats) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (p_bpb->bsx.num_fats >= 2) {
|
||||
sdfat_msg(sb, KERN_WARNING,
|
||||
"unsupported number of FAT structure :%u, try with 1",
|
||||
p_bpb->bsx.num_fats);
|
||||
}
|
||||
|
||||
fsi->num_FAT_sectors = le32_to_cpu(p_bpb->bsx.fat_length);
|
||||
if (!fsi->num_FAT_sectors) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus fat size");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->FAT1_start_sector = le32_to_cpu(p_bpb->bsx.fat_offset);
|
||||
if (p_bpb->bsx.num_fats == 1)
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
|
||||
else
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
|
||||
|
||||
fsi->root_start_sector = le32_to_cpu(p_bpb->bsx.clu_offset);
|
||||
fsi->data_start_sector = fsi->root_start_sector;
|
||||
|
||||
fsi->num_sectors = le64_to_cpu(p_bpb->bsx.vol_length);
|
||||
fsi->num_clusters = le32_to_cpu(p_bpb->bsx.clu_count) + 2;
|
||||
if (!fsi->num_sectors) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of total sector count");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* because the cluster index starts with 2 */
|
||||
fsi->num_clusters = le32_to_cpu(p_bpb->bsx.clu_count) + CLUS_BASE;
|
||||
|
||||
fsi->vol_type = EXFAT;
|
||||
fsi->vol_id = le32_to_cpu(p_bpb->bsx.vol_serial);
|
||||
|
||||
fsi->root_dir = le32_to_cpu(p_bpb->bsx.root_cluster);
|
||||
fsi->dentries_in_root = 0;
|
||||
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
|
||||
|
||||
fsi->vol_flag = (u32) le16_to_cpu(p_bpb->bsx.vol_flags);
|
||||
fsi->clu_srch_ptr = CLUS_BASE;
|
||||
fsi->used_clusters = (u32) ~0;
|
||||
|
||||
fsi->fs_func = &exfat_fs_func;
|
||||
fsi->vol_type = EXFAT;
|
||||
fat_ent_ops_init(sb);
|
||||
|
||||
if (p_bpb->bsx.vol_flags & VOL_DIRTY) {
|
||||
|
||||
+75
-75
@@ -176,7 +176,7 @@ static s32 fat_free_cluster(struct super_block *sb, CHAIN_T *p_chain, s32 do_rel
|
||||
}
|
||||
|
||||
/* check cluster validation */
|
||||
if ((p_chain->dir < 2) && (p_chain->dir >= fsi->num_clusters)) {
|
||||
if (!is_valid_clus(fsi, p_chain->dir)) {
|
||||
EMSG("%s: invalid start cluster (%u)\n", __func__, p_chain->dir);
|
||||
sdfat_debug_bug_on(1);
|
||||
return -EIO;
|
||||
@@ -479,7 +479,7 @@ static void __init_dos_entry(struct super_block *sb, DOS_DENTRY_T *ep, u32 type,
|
||||
ep->start_clu_hi = cpu_to_le16(CLUSTER_16(start_clu >> 16));
|
||||
ep->size = 0;
|
||||
|
||||
tp = tm_now(SDFAT_SB(sb), &tm);
|
||||
tp = tm_now_sb(sb, &tm);
|
||||
fat_set_entry_time((DENTRY_T *) ep, tp, TM_CREATE);
|
||||
fat_set_entry_time((DENTRY_T *) ep, tp, TM_MODIFY);
|
||||
ep->access_date = 0;
|
||||
@@ -1238,36 +1238,70 @@ static FS_FUNC_T amap_fat_fs_func = {
|
||||
.get_au_stat = amap_get_au_stat,
|
||||
};
|
||||
|
||||
s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
|
||||
static s32 mount_fat_common(struct super_block *sb, FS_INFO_T *fsi,
|
||||
bpb_t *p_bpb, u32 root_sects)
|
||||
{
|
||||
s32 num_root_sectors;
|
||||
bpb16_t *p_bpb = &(p_pbr->bpb.f16);
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
bool fat32 = root_sects == 0 ? true : false;
|
||||
|
||||
fsi->sect_per_clus = p_bpb->sect_per_clus;
|
||||
if (!is_power_of_2(fsi->sect_per_clus)) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus sectors per cluster %u",
|
||||
fsi->sect_per_clus);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->sect_per_clus_bits = ilog2(p_bpb->sect_per_clus);
|
||||
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
|
||||
fsi->cluster_size = 1 << fsi->cluster_size_bits;
|
||||
fsi->dentries_per_clu = 1 <<
|
||||
(fsi->cluster_size_bits - DENTRY_SIZE_BITS);
|
||||
|
||||
fsi->vol_flag = VOL_CLEAN;
|
||||
fsi->clu_srch_ptr = CLUS_BASE;
|
||||
fsi->used_clusters = (u32)~0;
|
||||
fsi->fs_func = &fat_fs_func;
|
||||
|
||||
fsi->num_FAT_sectors = le16_to_cpu(p_bpb->num_fat_sectors);
|
||||
if (fat32) {
|
||||
u32 fat32_len = le32_to_cpu(p_bpb->f32.num_fat32_sectors);
|
||||
|
||||
if (fat32_len) {
|
||||
fsi->num_FAT_sectors = fat32_len;
|
||||
} else if (fsi->num_FAT_sectors) {
|
||||
/* SPEC violation for compatibility */
|
||||
sdfat_msg(sb, KERN_WARNING,
|
||||
"no fatsz32, try with fatsz16: %u",
|
||||
fsi->num_FAT_sectors);
|
||||
}
|
||||
}
|
||||
|
||||
if (!fsi->num_FAT_sectors) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus fat size");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!p_bpb->num_fats) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
num_root_sectors = get_unaligned_le16(p_bpb->num_root_entries) << DENTRY_SIZE_BITS;
|
||||
num_root_sectors = ((num_root_sectors-1) >> sb->s_blocksize_bits) + 1;
|
||||
|
||||
fsi->sect_per_clus = p_bpb->sect_per_clus;
|
||||
fsi->sect_per_clus_bits = ilog2(p_bpb->sect_per_clus);
|
||||
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
|
||||
fsi->cluster_size = 1 << fsi->cluster_size_bits;
|
||||
|
||||
fsi->num_FAT_sectors = le16_to_cpu(p_bpb->num_fat_sectors);
|
||||
if (p_bpb->num_fats > 2) {
|
||||
sdfat_msg(sb, KERN_WARNING,
|
||||
"unsupported number of FAT structure :%u, try with 2",
|
||||
p_bpb->num_fats);
|
||||
}
|
||||
|
||||
fsi->FAT1_start_sector = le16_to_cpu(p_bpb->num_reserved);
|
||||
if (p_bpb->num_fats == 1)
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
|
||||
else
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector +
|
||||
fsi->num_FAT_sectors;
|
||||
|
||||
fsi->root_start_sector = fsi->FAT2_start_sector + fsi->num_FAT_sectors;
|
||||
fsi->data_start_sector = fsi->root_start_sector + num_root_sectors;
|
||||
fsi->data_start_sector = fsi->root_start_sector + root_sects;
|
||||
|
||||
/* SPEC violation for compatibility */
|
||||
fsi->num_sectors = get_unaligned_le16(p_bpb->num_sectors);
|
||||
if (!fsi->num_sectors)
|
||||
fsi->num_sectors = le32_to_cpu(p_bpb->num_huge_sectors);
|
||||
@@ -1277,15 +1311,20 @@ s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >> fsi->sect_per_clus_bits) + CLUS_BASE;
|
||||
/* because the cluster index starts with 2 */
|
||||
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >>
|
||||
fsi->sect_per_clus_bits) + CLUS_BASE;
|
||||
|
||||
fsi->vol_type = FAT16;
|
||||
if (fsi->num_clusters < FAT12_THRESHOLD)
|
||||
fsi->vol_type = FAT12;
|
||||
return 0;
|
||||
}
|
||||
|
||||
fsi->vol_id = get_unaligned_le32(p_bpb->vol_serial);
|
||||
s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
|
||||
{
|
||||
u32 num_root_sectors;
|
||||
bpb_t *p_bpb = &(p_pbr->bpb.fat);
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
|
||||
fsi->vol_id = get_unaligned_le32(p_bpb->f16.vol_serial);
|
||||
fsi->root_dir = 0;
|
||||
fsi->dentries_in_root = get_unaligned_le16(p_bpb->num_root_entries);
|
||||
if (!fsi->dentries_in_root) {
|
||||
@@ -1294,16 +1333,18 @@ s32 mount_fat16(struct super_block *sb, pbr_t *p_pbr)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
|
||||
num_root_sectors = fsi->dentries_in_root << DENTRY_SIZE_BITS;
|
||||
num_root_sectors = ((num_root_sectors - 1) >> sb->s_blocksize_bits) + 1;
|
||||
|
||||
fsi->vol_flag = VOL_CLEAN;
|
||||
fsi->clu_srch_ptr = 2;
|
||||
fsi->used_clusters = (u32) ~0;
|
||||
if (mount_fat_common(sb, fsi, p_bpb, num_root_sectors))
|
||||
return -EINVAL;
|
||||
|
||||
fsi->fs_func = &fat_fs_func;
|
||||
fsi->vol_type = FAT16;
|
||||
if (fsi->num_clusters < FAT12_THRESHOLD)
|
||||
fsi->vol_type = FAT12;
|
||||
fat_ent_ops_init(sb);
|
||||
|
||||
if (p_bpb->state & FAT_VOL_DIRTY) {
|
||||
if (p_bpb->f16.state & FAT_VOL_DIRTY) {
|
||||
fsi->vol_flag |= VOL_DIRTY;
|
||||
sdfat_log_msg(sb, KERN_WARNING, "Volume was not properly "
|
||||
"unmounted. Some data may be corrupt. "
|
||||
@@ -1347,67 +1388,26 @@ s32 mount_fat32(struct super_block *sb, pbr_t *p_pbr)
|
||||
pbr32_t *p_bpb = (pbr32_t *)p_pbr;
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
|
||||
if (!p_bpb->bpb.num_fats) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of FAT structure");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->sect_per_clus = p_bpb->bpb.sect_per_clus;
|
||||
fsi->sect_per_clus_bits = ilog2(p_bpb->bpb.sect_per_clus);
|
||||
fsi->cluster_size_bits = fsi->sect_per_clus_bits + sb->s_blocksize_bits;
|
||||
fsi->cluster_size = 1 << fsi->cluster_size_bits;
|
||||
|
||||
fsi->num_FAT_sectors = le32_to_cpu(p_bpb->bpb.num_fat32_sectors);
|
||||
|
||||
fsi->FAT1_start_sector = le16_to_cpu(p_bpb->bpb.num_reserved);
|
||||
if (p_bpb->bpb.num_fats == 1)
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector;
|
||||
else
|
||||
fsi->FAT2_start_sector = fsi->FAT1_start_sector + fsi->num_FAT_sectors;
|
||||
|
||||
fsi->root_start_sector = fsi->FAT2_start_sector + fsi->num_FAT_sectors;
|
||||
fsi->data_start_sector = fsi->root_start_sector;
|
||||
|
||||
/* SPEC violation for compatibility */
|
||||
fsi->num_sectors = get_unaligned_le16(p_bpb->bpb.num_sectors);
|
||||
if (!fsi->num_sectors)
|
||||
fsi->num_sectors = le32_to_cpu(p_bpb->bpb.num_huge_sectors);
|
||||
|
||||
/* 2nd check */
|
||||
if (!fsi->num_sectors) {
|
||||
sdfat_msg(sb, KERN_ERR, "bogus number of total sector count");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
fsi->num_clusters = (u32)((fsi->num_sectors - fsi->data_start_sector) >> fsi->sect_per_clus_bits) + CLUS_BASE;
|
||||
/* because the cluster index starts with 2 */
|
||||
|
||||
fsi->vol_type = FAT32;
|
||||
fsi->vol_id = get_unaligned_le32(p_bpb->bsx.vol_serial);
|
||||
|
||||
fsi->root_dir = le32_to_cpu(p_bpb->bpb.root_cluster);
|
||||
fsi->root_dir = le32_to_cpu(p_bpb->bpb.f32.root_cluster);
|
||||
fsi->dentries_in_root = 0;
|
||||
fsi->dentries_per_clu = 1 << (fsi->cluster_size_bits - DENTRY_SIZE_BITS);
|
||||
|
||||
fsi->vol_flag = VOL_CLEAN;
|
||||
fsi->clu_srch_ptr = 2;
|
||||
fsi->used_clusters = (u32) ~0;
|
||||
if (mount_fat_common(sb, fsi, &p_bpb->bpb, 0))
|
||||
return -EINVAL;
|
||||
|
||||
fsi->fs_func = &fat_fs_func;
|
||||
/* Should be initialized before calling amap_create() */
|
||||
fsi->vol_type = FAT32;
|
||||
fat_ent_ops_init(sb);
|
||||
|
||||
/* Delayed / smart allocation related init */
|
||||
fsi->reserved_clusters = 0;
|
||||
|
||||
/* Should be initialized before calling amap_create() */
|
||||
fat_ent_ops_init(sb);
|
||||
|
||||
/* AU Map Creation */
|
||||
if (SDFAT_SB(sb)->options.improved_allocation & SDFAT_ALLOC_SMART) {
|
||||
u32 hidden_sectors = le32_to_cpu(p_bpb->bpb.num_hid_sectors);
|
||||
u32 calc_hid_sect = 0;
|
||||
int ret;
|
||||
|
||||
|
||||
/* calculate hidden sector size */
|
||||
calc_hid_sect = __calc_hidden_sect(sb);
|
||||
if (calc_hid_sect != hidden_sectors) {
|
||||
|
||||
@@ -355,13 +355,6 @@ static inline bool is_reserved_clus(u32 clus)
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool is_valid_clus(FS_INFO_T *fsi, u32 clus)
|
||||
{
|
||||
if (clus < CLUS_BASE || fsi->num_clusters <= clus)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
s32 fat_ent_get(struct super_block *sb, u32 loc, u32 *content)
|
||||
{
|
||||
FS_INFO_T *fsi = &(SDFAT_SB(sb)->fsi);
|
||||
|
||||
+10
-15
@@ -55,15 +55,6 @@
|
||||
/*************************************************************************
|
||||
* FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
|
||||
*************************************************************************/
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
|
||||
#define CURRENT_TIME_SEC timespec64_trunc(current_kernel_time64(), NSEC_PER_SEC)
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||
#define CURRENT_TIME_SEC timespec_trunc(current_kernel_time(), NSEC_PER_SEC)
|
||||
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) */
|
||||
/* EMPTY */
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef CONFIG_SDFAT_UEVENT
|
||||
static struct kobject sdfat_uevent_kobj;
|
||||
|
||||
@@ -94,6 +85,10 @@ void sdfat_uevent_ro_remount(struct super_block *sb)
|
||||
char major[16], minor[16];
|
||||
char *envp[] = { major, minor, NULL };
|
||||
|
||||
/* Do not trigger uevent if a device has been ejected */
|
||||
if (fsapi_check_bdi_valid(sb))
|
||||
return;
|
||||
|
||||
snprintf(major, sizeof(major), "MAJOR=%d", MAJOR(bd_dev));
|
||||
snprintf(minor, sizeof(minor), "MINOR=%d", MINOR(bd_dev));
|
||||
|
||||
@@ -127,7 +122,7 @@ void __sdfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
|
||||
pr_err("[SDFAT](%s[%d:%d]):ERR: %pV\n",
|
||||
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev), &vaf);
|
||||
#ifdef CONFIG_SDFAT_SUPPORT_STLOG
|
||||
if (opts->errors == SDFAT_ERRORS_RO && !(sb->s_flags & MS_RDONLY)) {
|
||||
if (opts->errors == SDFAT_ERRORS_RO && !sb_rdonly(sb)) {
|
||||
ST_LOG("[SDFAT](%s[%d:%d]):ERR: %pV\n",
|
||||
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev), &vaf);
|
||||
}
|
||||
@@ -138,8 +133,8 @@ void __sdfat_fs_error(struct super_block *sb, int report, const char *fmt, ...)
|
||||
if (opts->errors == SDFAT_ERRORS_PANIC) {
|
||||
panic("[SDFAT](%s[%d:%d]): fs panic from previous error\n",
|
||||
sb->s_id, MAJOR(bd_dev), MINOR(bd_dev));
|
||||
} else if (opts->errors == SDFAT_ERRORS_RO && !(sb->s_flags & MS_RDONLY)) {
|
||||
sb->s_flags |= MS_RDONLY;
|
||||
} else if (opts->errors == SDFAT_ERRORS_RO && !sb_rdonly(sb)) {
|
||||
sb->s_flags |= SB_RDONLY;
|
||||
sdfat_statistics_set_mnt_ro();
|
||||
pr_err("[SDFAT](%s[%d:%d]): Filesystem has been set "
|
||||
"read-only\n", sb->s_id, MAJOR(bd_dev), MINOR(bd_dev));
|
||||
@@ -333,12 +328,12 @@ void sdfat_time_unix2fat(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
|
||||
tp->Year = year;
|
||||
}
|
||||
|
||||
TIMESTAMP_T *tm_now(struct sdfat_sb_info *sbi, TIMESTAMP_T *tp)
|
||||
TIMESTAMP_T *tm_now(struct inode *inode, TIMESTAMP_T *tp)
|
||||
{
|
||||
sdfat_timespec_t ts = CURRENT_TIME_SEC;
|
||||
sdfat_timespec_t ts = current_time(inode);
|
||||
DATE_TIME_T dt;
|
||||
|
||||
sdfat_time_unix2fat(sbi, &ts, &dt);
|
||||
sdfat_time_unix2fat(SDFAT_SB(inode->i_sb), &ts, &dt);
|
||||
|
||||
tp->year = dt.Year;
|
||||
tp->mon = dt.Month;
|
||||
|
||||
+134
-43
@@ -70,6 +70,9 @@
|
||||
|
||||
#ifdef CONFIG_SDFAT_ALIGNED_MPAGE_WRITE
|
||||
|
||||
#define MIN_ALIGNED_SIZE (PAGE_SIZE)
|
||||
#define MIN_ALIGNED_SIZE_MASK (MIN_ALIGNED_SIZE - 1)
|
||||
|
||||
/*************************************************************************
|
||||
* INNER FUNCTIONS FOR FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
|
||||
*************************************************************************/
|
||||
@@ -97,6 +100,14 @@ static inline void __sdfat_clean_bdev_aliases(struct block_device *bdev, sector_
|
||||
{
|
||||
unmap_underlying_metadata(bdev, block);
|
||||
}
|
||||
|
||||
static inline int wbc_to_write_flags(struct writeback_control *wbc)
|
||||
{
|
||||
if (wbc->sync_mode == WB_SYNC_ALL)
|
||||
return WRITE_SYNC;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
|
||||
@@ -236,6 +247,9 @@ static inline unsigned int __calc_size_to_align(struct super_block *sb)
|
||||
|
||||
if (aligned && (max_sectors & (aligned - 1)))
|
||||
aligned = 0;
|
||||
|
||||
if (aligned && aligned < (MIN_ALIGNED_SIZE >> SECTOR_SIZE_BITS))
|
||||
aligned = 0;
|
||||
out:
|
||||
return aligned;
|
||||
}
|
||||
@@ -248,6 +262,24 @@ struct mpage_data {
|
||||
unsigned int size_to_align;
|
||||
};
|
||||
|
||||
/*
|
||||
* After completing I/O on a page, call this routine to update the page
|
||||
* flags appropriately
|
||||
*/
|
||||
static void __page_write_endio(struct page *page, int err)
|
||||
{
|
||||
if (err) {
|
||||
struct address_space *mapping;
|
||||
|
||||
SetPageError(page);
|
||||
mapping = page_mapping(page);
|
||||
if (mapping)
|
||||
mapping_set_error(mapping, err);
|
||||
}
|
||||
__dfr_writepage_end_io(page);
|
||||
end_page_writeback(page);
|
||||
}
|
||||
|
||||
/*
|
||||
* I/O completion handler for multipage BIOs.
|
||||
*
|
||||
@@ -262,25 +294,37 @@ struct mpage_data {
|
||||
*/
|
||||
static void __mpage_write_end_io(struct bio *bio, int err)
|
||||
{
|
||||
struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1;
|
||||
struct bio_vec *bv;
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 2, 0)
|
||||
struct bvec_iter_all iter_all;
|
||||
|
||||
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
|
||||
|
||||
/* Use bio_for_each_segemnt_all() to support multi-page bvec */
|
||||
bio_for_each_segment_all(bv, bio, iter_all)
|
||||
__page_write_endio(bv->bv_page, err);
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 1, 0)
|
||||
struct bvec_iter_all iter_all;
|
||||
int i;
|
||||
|
||||
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
|
||||
|
||||
/* Use bio_for_each_segemnt_all() to support multi-page bvec */
|
||||
bio_for_each_segment_all(bv, bio, i, iter_all)
|
||||
__page_write_endio(bv->bv_page, err);
|
||||
#else
|
||||
ASSERT(bio_data_dir(bio) == WRITE); /* only write */
|
||||
bv = bio->bi_io_vec + bio->bi_vcnt - 1;
|
||||
|
||||
do {
|
||||
struct page *page = bvec->bv_page;
|
||||
struct page *page = bv->bv_page;
|
||||
|
||||
if (--bvec >= bio->bi_io_vec)
|
||||
prefetchw(&bvec->bv_page->flags);
|
||||
if (err) {
|
||||
SetPageError(page);
|
||||
if (page->mapping)
|
||||
mapping_set_error(page->mapping, err);
|
||||
}
|
||||
if (--bv >= bio->bi_io_vec)
|
||||
prefetchw(&bv->bv_page->flags);
|
||||
|
||||
__dfr_writepage_end_io(page);
|
||||
|
||||
end_page_writeback(page);
|
||||
} while (bvec >= bio->bi_io_vec);
|
||||
__page_write_endio(page, err);
|
||||
} while (bv >= bio->bi_io_vec);
|
||||
#endif
|
||||
bio_put(bio);
|
||||
}
|
||||
|
||||
@@ -312,6 +356,65 @@ mpage_alloc(struct block_device *bdev,
|
||||
return bio;
|
||||
}
|
||||
|
||||
|
||||
#if IS_BUILTIN(CONFIG_SDFAT_FS)
|
||||
#define __write_boundary_block write_boundary_block
|
||||
#define sdfat_buffer_heads_over_limit buffer_heads_over_limit
|
||||
#else
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
|
||||
/*
|
||||
* Called when we've recently written block `bblock', and it is known that
|
||||
* `bblock' was for a buffer_boundary() buffer. This means that the block at
|
||||
* `bblock + 1' is probably a dirty indirect block. Hunt it down and, if it's
|
||||
* dirty, schedule it for IO. So that indirects merge nicely with their data.
|
||||
*/
|
||||
static void __write_boundary_block(struct block_device *bdev,
|
||||
sector_t bblock, unsigned int blocksize)
|
||||
{
|
||||
struct buffer_head *bh = __find_get_block(bdev, bblock + 1, blocksize);
|
||||
|
||||
if (bh) {
|
||||
if (buffer_dirty(bh))
|
||||
ll_rw_block(REQ_OP_WRITE, 0, 1, &bh);
|
||||
put_bh(bh);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#warning "Need an alternative of write_boundary_block function"
|
||||
#define __write_boundary_block write_boundary_block
|
||||
#endif
|
||||
|
||||
#warning "sdfat could not check buffer_heads_over_limit on module. Assumed zero"
|
||||
#define sdfat_buffer_heads_over_limit (0)
|
||||
#endif
|
||||
|
||||
static void clean_buffers(struct page *page, unsigned int first_unmapped)
|
||||
{
|
||||
unsigned int buffer_counter = 0;
|
||||
struct buffer_head *bh, *head;
|
||||
|
||||
if (!page_has_buffers(page))
|
||||
return;
|
||||
head = page_buffers(page);
|
||||
bh = head;
|
||||
|
||||
do {
|
||||
if (buffer_counter++ == first_unmapped)
|
||||
break;
|
||||
clear_buffer_dirty(bh);
|
||||
bh = bh->b_this_page;
|
||||
} while (bh != head);
|
||||
|
||||
/*
|
||||
* we cannot drop the bh if the page is not uptodate or a concurrent
|
||||
* readpage would fail to serialize with the bh and it would read from
|
||||
* disk before we reach the platter.
|
||||
*/
|
||||
if (sdfat_buffer_heads_over_limit && PageUptodate(page))
|
||||
try_to_free_buffers(page);
|
||||
}
|
||||
|
||||
static int sdfat_mpage_writepage(struct page *page,
|
||||
struct writeback_control *wbc, void *data)
|
||||
{
|
||||
@@ -335,6 +438,7 @@ static int sdfat_mpage_writepage(struct page *page,
|
||||
loff_t i_size = i_size_read(inode);
|
||||
unsigned long end_index = i_size >> PAGE_SHIFT;
|
||||
int ret = 0;
|
||||
int op_flags = wbc_to_write_flags(wbc);
|
||||
|
||||
if (page_has_buffers(page)) {
|
||||
struct buffer_head *head = page_buffers(page);
|
||||
@@ -490,22 +594,25 @@ page_is_mapped:
|
||||
*/
|
||||
if (bio) {
|
||||
if (mpd->last_block_in_bio != blocks[0] - 1) {
|
||||
bio = mpage_bio_submit_write(0, bio);
|
||||
bio = mpage_bio_submit_write(op_flags, bio);
|
||||
} else if (mpd->size_to_align) {
|
||||
unsigned int mask = mpd->size_to_align - 1;
|
||||
sector_t max_end_block =
|
||||
(__sdfat_bio_sector(bio) & ~(mask)) + mask;
|
||||
|
||||
if ((__sdfat_bio_size(bio) != (1 << (mask + 1))) &&
|
||||
if ((__sdfat_bio_size(bio) & MIN_ALIGNED_SIZE_MASK) &&
|
||||
(mpd->last_block_in_bio == max_end_block)) {
|
||||
int op_nomerge = op_flags | REQ_NOMERGE;
|
||||
|
||||
MMSG("%s(inode:%p) alignment mpage_bio_submit"
|
||||
"(start:%u, len:%u aligned:%u)\n",
|
||||
"(start:%u, len:%u size:%u aligned:%u)\n",
|
||||
__func__, inode,
|
||||
(unsigned int)__sdfat_bio_sector(bio),
|
||||
(unsigned int)(mpd->last_block_in_bio -
|
||||
__sdfat_bio_sector(bio) + 1),
|
||||
(unsigned int)__sdfat_bio_size(bio),
|
||||
(unsigned int)mpd->size_to_align);
|
||||
bio = mpage_bio_submit_write(REQ_NOMERGE, bio);
|
||||
bio = mpage_bio_submit_write(op_nomerge, bio);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -525,7 +632,7 @@ alloc_new:
|
||||
*/
|
||||
length = first_unmapped << blkbits;
|
||||
if (bio_add_page(bio, page, length, 0) < length) {
|
||||
bio = mpage_bio_submit_write(0, bio);
|
||||
bio = mpage_bio_submit_write(op_flags, bio);
|
||||
goto alloc_new;
|
||||
}
|
||||
|
||||
@@ -533,26 +640,7 @@ alloc_new:
|
||||
* OK, we have our BIO, so we can now mark the buffers clean. Make
|
||||
* sure to only clean buffers which we know we'll be writing.
|
||||
*/
|
||||
if (page_has_buffers(page)) {
|
||||
struct buffer_head *head = page_buffers(page);
|
||||
struct buffer_head *bh = head;
|
||||
unsigned int buffer_counter = 0;
|
||||
|
||||
do {
|
||||
if (buffer_counter++ == first_unmapped)
|
||||
break;
|
||||
clear_buffer_dirty(bh);
|
||||
bh = bh->b_this_page;
|
||||
} while (bh != head);
|
||||
|
||||
/*
|
||||
* we cannot drop the bh if the page is not uptodate
|
||||
* or a concurrent readpage would fail to serialize with the bh
|
||||
* and it would read from disk before we reach the platter.
|
||||
*/
|
||||
if (buffer_heads_over_limit && PageUptodate(page))
|
||||
try_to_free_buffers(page);
|
||||
}
|
||||
clean_buffers(page, first_unmapped);
|
||||
|
||||
BUG_ON(PageWriteback(page));
|
||||
set_page_writeback(page);
|
||||
@@ -579,9 +667,9 @@ alloc_new:
|
||||
|
||||
unlock_page(page);
|
||||
if (boundary || (first_unmapped != blocks_per_page)) {
|
||||
bio = mpage_bio_submit_write(0, bio);
|
||||
bio = mpage_bio_submit_write(op_flags, bio);
|
||||
if (boundary_block) {
|
||||
write_boundary_block(boundary_bdev,
|
||||
__write_boundary_block(boundary_bdev,
|
||||
boundary_block, 1 << blkbits);
|
||||
}
|
||||
} else {
|
||||
@@ -592,7 +680,7 @@ alloc_new:
|
||||
|
||||
confused:
|
||||
if (bio)
|
||||
bio = mpage_bio_submit_write(0, bio);
|
||||
bio = mpage_bio_submit_write(op_flags, bio);
|
||||
|
||||
if (mpd->use_writepage) {
|
||||
ret = mapping->a_ops->writepage(page, wbc);
|
||||
@@ -625,8 +713,11 @@ int sdfat_mpage_writepages(struct address_space *mapping,
|
||||
BUG_ON(!get_block);
|
||||
blk_start_plug(&plug);
|
||||
ret = write_cache_pages(mapping, wbc, sdfat_mpage_writepage, &mpd);
|
||||
if (mpd.bio)
|
||||
mpage_bio_submit_write(0, mpd.bio);
|
||||
if (mpd.bio) {
|
||||
int op_flags = wbc_to_write_flags(wbc);
|
||||
|
||||
mpage_bio_submit_write(op_flags, mpd.bio);
|
||||
}
|
||||
blk_finish_plug(&plug);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+155
-58
@@ -190,6 +190,14 @@ static inline void __sdfat_clean_bdev_aliases(struct block_device *bdev, sector_
|
||||
{
|
||||
unmap_underlying_metadata(bdev, block);
|
||||
}
|
||||
|
||||
static inline int wbc_to_write_flags(struct writeback_control *wbc)
|
||||
{
|
||||
if (wbc->sync_mode == WB_SYNC_ALL)
|
||||
return WRITE_SYNC;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -224,9 +232,12 @@ static int setattr_prepare(struct dentry *dentry, struct iattr *attr)
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
|
||||
static inline void __sdfat_submit_bio_write(struct bio *bio)
|
||||
static inline void __sdfat_submit_bio_write(struct bio *bio,
|
||||
struct writeback_control *wbc)
|
||||
{
|
||||
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
|
||||
int write_flags = wbc_to_write_flags(wbc);
|
||||
|
||||
bio_set_op_attrs(bio, REQ_OP_WRITE, write_flags);
|
||||
submit_bio(bio);
|
||||
}
|
||||
|
||||
@@ -240,9 +251,12 @@ static inline unsigned long __sdfat_init_name_hash(const struct dentry *dentry)
|
||||
return init_name_hash(dentry);
|
||||
}
|
||||
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) */
|
||||
static inline void __sdfat_submit_bio_write(struct bio *bio)
|
||||
static inline void __sdfat_submit_bio_write(struct bio *bio,
|
||||
struct writeback_control *wbc)
|
||||
{
|
||||
submit_bio(WRITE, bio);
|
||||
int write_flags = wbc_to_write_flags(wbc);
|
||||
|
||||
submit_bio(WRITE | write_flags, bio);
|
||||
}
|
||||
|
||||
static inline unsigned int __sdfat_full_name_hash(const struct dentry *unused, const char *name, unsigned int len)
|
||||
@@ -289,6 +303,15 @@ static inline int sdfat_remount_syncfs(struct super_block *sb)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0)
|
||||
/* EMPTY */
|
||||
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) */
|
||||
static inline void truncate_inode_pages_final(struct address_space *mapping)
|
||||
{
|
||||
truncate_inode_pages(mapping, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
|
||||
static inline sector_t __sdfat_bio_sector(struct bio *bio)
|
||||
@@ -904,15 +927,6 @@ static int sdfat_file_fsync(struct file *filp, int datasync)
|
||||
/*************************************************************************
|
||||
* MORE FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
|
||||
*************************************************************************/
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 18, 0)
|
||||
#define CURRENT_TIME_SEC timespec64_trunc(current_kernel_time64(), NSEC_PER_SEC)
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
|
||||
#define CURRENT_TIME_SEC timespec_trunc(current_kernel_time(), NSEC_PER_SEC)
|
||||
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) */
|
||||
/* EMPTY */
|
||||
#endif
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 13, 0)
|
||||
static void sdfat_writepage_end_io(struct bio *bio)
|
||||
{
|
||||
@@ -2186,7 +2200,7 @@ static int sdfat_dfr_ioctl(struct inode *inode, struct file *filp,
|
||||
__lock_super(sb);
|
||||
|
||||
/* Check if FS_ERROR occurred */
|
||||
if (sb->s_flags & MS_RDONLY) {
|
||||
if (sb_rdonly(sb)) {
|
||||
dfr_err("RDONLY partition (err %d)", -EPERM);
|
||||
__unlock_super(sb);
|
||||
return -EPERM;
|
||||
@@ -2397,7 +2411,7 @@ static int __sdfat_create(struct inode *dir, struct dentry *dentry)
|
||||
|
||||
TMSG("%s entered\n", __func__);
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(dir);
|
||||
|
||||
err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_REGULAR, &fid);
|
||||
if (err)
|
||||
@@ -2560,7 +2574,7 @@ static int sdfat_unlink(struct inode *dir, struct dentry *dentry)
|
||||
|
||||
TMSG("%s entered\n", __func__);
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(dir);
|
||||
|
||||
SDFAT_I(inode)->fid.size = i_size_read(inode);
|
||||
|
||||
@@ -2609,7 +2623,7 @@ static int sdfat_symlink(struct inode *dir, struct dentry *dentry, const char *t
|
||||
|
||||
TMSG("%s entered\n", __func__);
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(dir);
|
||||
|
||||
err = fsapi_create(dir, (u8 *) dentry->d_name.name, FM_SYMLINK, &fid);
|
||||
if (err)
|
||||
@@ -2670,7 +2684,7 @@ static int __sdfat_mkdir(struct inode *dir, struct dentry *dentry)
|
||||
|
||||
TMSG("%s entered\n", __func__);
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(dir);
|
||||
|
||||
err = fsapi_mkdir(dir, (u8 *) dentry->d_name.name, &fid);
|
||||
if (err)
|
||||
@@ -2719,7 +2733,7 @@ static int sdfat_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
|
||||
TMSG("%s entered\n", __func__);
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(dir);
|
||||
|
||||
SDFAT_I(inode)->fid.size = i_size_read(inode);
|
||||
|
||||
@@ -2764,7 +2778,7 @@ static int __sdfat_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
old_inode = old_dentry->d_inode;
|
||||
new_inode = new_dentry->d_inode;
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(old_inode);
|
||||
|
||||
SDFAT_I(old_inode)->fid.size = i_size_read(old_inode);
|
||||
|
||||
@@ -2842,7 +2856,7 @@ static int sdfat_cont_expand(struct inode *inode, loff_t size)
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC;
|
||||
inode->i_ctime = inode->i_mtime = current_time(inode);
|
||||
mark_inode_dirty(inode);
|
||||
|
||||
if (!IS_SYNC(inode))
|
||||
@@ -3100,7 +3114,7 @@ static void sdfat_truncate(struct inode *inode, loff_t old_size)
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
inode->i_ctime = inode->i_mtime = CURRENT_TIME_SEC;
|
||||
inode->i_ctime = inode->i_mtime = current_time(inode);
|
||||
if (IS_DIRSYNC(inode))
|
||||
(void) sdfat_sync_inode(inode);
|
||||
else
|
||||
@@ -3528,7 +3542,8 @@ static int sdfat_readpages(struct file *file, struct address_space *mapping,
|
||||
}
|
||||
|
||||
static inline void sdfat_submit_fullpage_bio(struct block_device *bdev,
|
||||
sector_t sector, unsigned int length, struct page *page)
|
||||
sector_t sector, unsigned int length,
|
||||
struct page *page, struct writeback_control *wbc)
|
||||
{
|
||||
/* Single page bio submit */
|
||||
struct bio *bio;
|
||||
@@ -3552,7 +3567,7 @@ static inline void sdfat_submit_fullpage_bio(struct block_device *bdev,
|
||||
__sdfat_set_bio_iterate(bio, sector, length, 0, 0);
|
||||
|
||||
bio->bi_end_io = sdfat_writepage_end_io;
|
||||
__sdfat_submit_bio_write(bio);
|
||||
__sdfat_submit_bio_write(bio, wbc);
|
||||
}
|
||||
|
||||
static int sdfat_writepage(struct page *page, struct writeback_control *wbc)
|
||||
@@ -3687,7 +3702,7 @@ static int sdfat_writepage(struct page *page, struct writeback_control *wbc)
|
||||
sdfat_submit_fullpage_bio(head->b_bdev,
|
||||
head->b_blocknr << (sb->s_blocksize_bits - SECTOR_SIZE_BITS),
|
||||
nr_blocks_towrite << inode->i_blkbits,
|
||||
page);
|
||||
page, wbc);
|
||||
|
||||
unlock_page(page);
|
||||
|
||||
@@ -3752,7 +3767,7 @@ static int sdfat_check_writable(struct super_block *sb)
|
||||
if (fsapi_check_bdi_valid(sb))
|
||||
return -EIO;
|
||||
|
||||
if (sb->s_flags & MS_RDONLY)
|
||||
if (sb_rdonly(sb))
|
||||
return -EROFS;
|
||||
|
||||
return 0;
|
||||
@@ -3827,7 +3842,7 @@ static int sdfat_write_end(struct file *file, struct address_space *mapping,
|
||||
sdfat_write_failed(mapping, pos+len);
|
||||
|
||||
if (!(err < 0) && !(fid->attr & ATTR_ARCHIVE)) {
|
||||
inode->i_mtime = inode->i_ctime = CURRENT_TIME_SEC;
|
||||
inode->i_mtime = inode->i_ctime = current_time(inode);
|
||||
fid->attr |= ATTR_ARCHIVE;
|
||||
mark_inode_dirty(inode);
|
||||
}
|
||||
@@ -4039,7 +4054,7 @@ static struct inode *sdfat_alloc_inode(struct super_block *sb)
|
||||
return &ei->vfs_inode;
|
||||
}
|
||||
|
||||
static void sdfat_destroy_inode(struct inode *inode)
|
||||
static void sdfat_free_inode(struct inode *inode)
|
||||
{
|
||||
if (SDFAT_I(inode)->target) {
|
||||
kfree(SDFAT_I(inode)->target);
|
||||
@@ -4049,6 +4064,28 @@ static void sdfat_destroy_inode(struct inode *inode)
|
||||
kmem_cache_free(sdfat_inode_cachep, SDFAT_I(inode));
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)
|
||||
/* Use free_inode instead of destroy_inode */
|
||||
#define sdfat_destroy_inode (NULL)
|
||||
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
|
||||
static void sdfat_i_callback(struct rcu_head *head)
|
||||
{
|
||||
struct inode *inode = container_of(head, struct inode, i_rcu);
|
||||
|
||||
sdfat_free_inode(inode);
|
||||
}
|
||||
|
||||
static void sdfat_destroy_inode(struct inode *inode)
|
||||
{
|
||||
call_rcu(&inode->i_rcu, sdfat_i_callback);
|
||||
}
|
||||
#else
|
||||
static void sdfat_destroy_inode(struct inode *inode)
|
||||
{
|
||||
sdfat_free_inode(inode);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int __sdfat_write_inode(struct inode *inode, int sync)
|
||||
{
|
||||
struct super_block *sb = inode->i_sb;
|
||||
@@ -4084,7 +4121,7 @@ static int sdfat_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||
|
||||
static void sdfat_evict_inode(struct inode *inode)
|
||||
{
|
||||
truncate_inode_pages(&inode->i_data, 0);
|
||||
truncate_inode_pages_final(&inode->i_data);
|
||||
|
||||
if (!inode->i_nlink) {
|
||||
loff_t old_size = i_size_read(inode);
|
||||
@@ -4112,7 +4149,62 @@ static void sdfat_evict_inode(struct inode *inode)
|
||||
/* remove_inode_hash(inode); */
|
||||
}
|
||||
|
||||
static void sdfat_free_sb_info(struct sdfat_sb_info *sbi)
|
||||
{
|
||||
if (sbi->nls_disk) {
|
||||
unload_nls(sbi->nls_disk);
|
||||
sbi->nls_disk = NULL;
|
||||
sbi->options.codepage = sdfat_default_codepage;
|
||||
}
|
||||
if (sbi->nls_io) {
|
||||
unload_nls(sbi->nls_io);
|
||||
sbi->nls_io = NULL;
|
||||
}
|
||||
if (sbi->options.iocharset != sdfat_default_iocharset) {
|
||||
kfree(sbi->options.iocharset);
|
||||
sbi->options.iocharset = sdfat_default_iocharset;
|
||||
}
|
||||
|
||||
if (sbi->use_vmalloc) {
|
||||
vfree(sbi);
|
||||
return;
|
||||
}
|
||||
kfree(sbi);
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
|
||||
static void delayed_free(struct rcu_head *p)
|
||||
{
|
||||
struct sdfat_sb_info *sbi = container_of(p, struct sdfat_sb_info, rcu);
|
||||
|
||||
sdfat_free_sb_info(sbi);
|
||||
}
|
||||
|
||||
static void __sdfat_destroy_sb_info(struct super_block *sb)
|
||||
{
|
||||
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
|
||||
|
||||
call_rcu(&sbi->rcu, delayed_free);
|
||||
}
|
||||
#else
|
||||
static void __sdfat_destroy_sb_info(struct super_block *sb)
|
||||
{
|
||||
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
|
||||
|
||||
sdfat_free_sb_info(sbi);
|
||||
sb->s_fs_info = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void sdfat_destroy_sb_info(struct super_block *sb)
|
||||
{
|
||||
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
|
||||
|
||||
kobject_del(&sbi->sb_kobj);
|
||||
kobject_put(&sbi->sb_kobj);
|
||||
|
||||
__sdfat_destroy_sb_info(sb);
|
||||
}
|
||||
|
||||
static void sdfat_put_super(struct super_block *sb)
|
||||
{
|
||||
@@ -4129,28 +4221,7 @@ static void sdfat_put_super(struct super_block *sb)
|
||||
__free_dfr_mem_if_required(sb);
|
||||
err = fsapi_umount(sb);
|
||||
|
||||
if (sbi->nls_disk) {
|
||||
unload_nls(sbi->nls_disk);
|
||||
sbi->nls_disk = NULL;
|
||||
sbi->options.codepage = sdfat_default_codepage;
|
||||
}
|
||||
if (sbi->nls_io) {
|
||||
unload_nls(sbi->nls_io);
|
||||
sbi->nls_io = NULL;
|
||||
}
|
||||
if (sbi->options.iocharset != sdfat_default_iocharset) {
|
||||
kfree(sbi->options.iocharset);
|
||||
sbi->options.iocharset = sdfat_default_iocharset;
|
||||
}
|
||||
|
||||
sb->s_fs_info = NULL;
|
||||
|
||||
kobject_del(&sbi->sb_kobj);
|
||||
kobject_put(&sbi->sb_kobj);
|
||||
if (!sbi->use_vmalloc)
|
||||
kfree(sbi);
|
||||
else
|
||||
vfree(sbi);
|
||||
sdfat_destroy_sb_info(sb);
|
||||
|
||||
sdfat_log_msg(sb, KERN_INFO, "unmounted successfully! %s",
|
||||
err ? "(with previous I/O errors)" : "");
|
||||
@@ -4181,7 +4252,7 @@ static void sdfat_write_super(struct super_block *sb)
|
||||
/* flush delayed FAT/DIR dirty */
|
||||
__flush_delayed_meta(sb, 0);
|
||||
|
||||
if (!(sb->s_flags & MS_RDONLY))
|
||||
if (!sb_rdonly(sb))
|
||||
fsapi_sync_fs(sb, 0);
|
||||
|
||||
__unlock_super(sb);
|
||||
@@ -4309,7 +4380,8 @@ static int sdfat_statfs(struct dentry *dentry, struct kstatfs *buf)
|
||||
buf->f_bavail = info.FreeClusters;
|
||||
buf->f_fsid.val[0] = (u32)id;
|
||||
buf->f_fsid.val[1] = (u32)(id >> 32);
|
||||
buf->f_namelen = 260;
|
||||
/* Unicode utf8 255 characters */
|
||||
buf->f_namelen = MAX_NAME_LENGTH * MAX_CHARSET_SIZE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -4321,7 +4393,7 @@ static int sdfat_remount(struct super_block *sb, int *flags, char *data)
|
||||
struct sdfat_sb_info *sbi = SDFAT_SB(sb);
|
||||
FS_INFO_T *fsi = &(sbi->fsi);
|
||||
|
||||
*flags |= MS_NODIRATIME;
|
||||
*flags |= SB_NODIRATIME;
|
||||
|
||||
prev_sb_flags = sb->s_flags;
|
||||
|
||||
@@ -4330,8 +4402,8 @@ static int sdfat_remount(struct super_block *sb, int *flags, char *data)
|
||||
fsapi_set_vol_flags(sb, VOL_CLEAN, 1);
|
||||
|
||||
sdfat_log_msg(sb, KERN_INFO, "re-mounted(%s->%s), eio=0x%x, Opts: %s",
|
||||
(prev_sb_flags & MS_RDONLY) ? "ro" : "rw",
|
||||
(*flags & MS_RDONLY) ? "ro" : "rw",
|
||||
(prev_sb_flags & SB_RDONLY) ? "ro" : "rw",
|
||||
(*flags & SB_RDONLY) ? "ro" : "rw",
|
||||
fsi->prev_eio, orig_data);
|
||||
kfree(orig_data);
|
||||
return 0;
|
||||
@@ -4394,7 +4466,11 @@ static int __sdfat_show_options(struct seq_file *m, struct super_block *sb)
|
||||
|
||||
static const struct super_operations sdfat_sops = {
|
||||
.alloc_inode = sdfat_alloc_inode,
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0)
|
||||
.free_inode = sdfat_free_inode,
|
||||
#else
|
||||
.destroy_inode = sdfat_destroy_inode,
|
||||
#endif
|
||||
.write_inode = sdfat_write_inode,
|
||||
.evict_inode = sdfat_evict_inode,
|
||||
.put_super = sdfat_put_super,
|
||||
@@ -4837,7 +4913,7 @@ static int sdfat_read_root(struct inode *inode)
|
||||
FS_INFO_T *fsi = &(sbi->fsi);
|
||||
DIR_ENTRY_T info;
|
||||
|
||||
ts = CURRENT_TIME_SEC;
|
||||
ts = current_time(inode);
|
||||
|
||||
SDFAT_I(inode)->fid.dir.dir = fsi->root_dir;
|
||||
SDFAT_I(inode)->fid.dir.flags = 0x01;
|
||||
@@ -4921,11 +4997,18 @@ static int sdfat_fill_super(struct super_block *sb, void *data, int silent)
|
||||
|
||||
mutex_init(&sbi->s_vlock);
|
||||
sb->s_fs_info = sbi;
|
||||
sb->s_flags |= MS_NODIRATIME;
|
||||
sb->s_flags |= SB_NODIRATIME;
|
||||
sb->s_magic = SDFAT_SUPER_MAGIC;
|
||||
sb->s_op = &sdfat_sops;
|
||||
ratelimit_state_init(&sbi->ratelimit, DEFAULT_RATELIMIT_INTERVAL,
|
||||
DEFAULT_RATELIMIT_BURST);
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)
|
||||
sb->s_time_gran = NSEC_PER_SEC; /* the same with default */
|
||||
sb->s_time_min = SDFAT_MIN_TIMESTAMP_SECS;
|
||||
sb->s_time_max = SDFAT_MAX_TIMESTAMP_SECS;
|
||||
#endif
|
||||
|
||||
err = parse_options(sb, data, silent, &debug, &sbi->options);
|
||||
if (err) {
|
||||
sdfat_log_msg(sb, KERN_ERR, "failed to parse options");
|
||||
@@ -5072,6 +5155,13 @@ static int __init sdfat_init_inodecache(void)
|
||||
|
||||
static void sdfat_destroy_inodecache(void)
|
||||
{
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
|
||||
/*
|
||||
* Make sure all delayed rcu free inodes are flushed before we
|
||||
* destroy cache.
|
||||
*/
|
||||
rcu_barrier();
|
||||
#endif
|
||||
kmem_cache_destroy(sdfat_inode_cachep);
|
||||
}
|
||||
|
||||
@@ -5220,6 +5310,13 @@ error:
|
||||
|
||||
static void __exit exit_sdfat_fs(void)
|
||||
{
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
|
||||
/*
|
||||
* Make sure all delayed rcu free inodes are flushed before we
|
||||
* destroy cache.
|
||||
*/
|
||||
rcu_barrier();
|
||||
#endif
|
||||
sdfat_uevent_uninit();
|
||||
sdfat_statistics_uninit();
|
||||
|
||||
|
||||
+35
-1
@@ -142,6 +142,9 @@ struct sdfat_sb_info {
|
||||
struct mutex s_vlock; /* volume lock */
|
||||
int use_vmalloc;
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
|
||||
struct rcu_head rcu;
|
||||
#endif
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 7, 0)
|
||||
int s_dirt;
|
||||
struct mutex s_lock; /* superblock lock */
|
||||
@@ -215,6 +218,30 @@ typedef struct timespec64 sdfat_timespec_t;
|
||||
typedef struct timespec sdfat_timespec_t;
|
||||
#endif
|
||||
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)
|
||||
|
||||
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) */
|
||||
/*
|
||||
* sb->s_flags. Note that these mirror the equivalent MS_* flags where
|
||||
* represented in both.
|
||||
*/
|
||||
#define SB_RDONLY 1 /* Mount read-only */
|
||||
#define SB_NODIRATIME 2048 /* Do not update directory access times */
|
||||
static inline bool sb_rdonly(const struct super_block *sb)
|
||||
{
|
||||
return sb->s_flags & MS_RDONLY;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
|
||||
/* EMPTY */
|
||||
#else
|
||||
static inline sdfat_timespec_t current_time(struct inode *inode)
|
||||
{
|
||||
return CURRENT_TIME_SEC;
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
* FIXME : needs on-disk-slot in-memory data
|
||||
*/
|
||||
@@ -387,7 +414,14 @@ extern void sdfat_time_fat2unix(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
|
||||
DATE_TIME_T *tp);
|
||||
extern void sdfat_time_unix2fat(struct sdfat_sb_info *sbi, sdfat_timespec_t *ts,
|
||||
DATE_TIME_T *tp);
|
||||
extern TIMESTAMP_T *tm_now(struct sdfat_sb_info *sbi, TIMESTAMP_T *tm);
|
||||
extern TIMESTAMP_T *tm_now(struct inode *inode, TIMESTAMP_T *tm);
|
||||
static inline TIMESTAMP_T *tm_now_sb(struct super_block *sb, TIMESTAMP_T *tm)
|
||||
{
|
||||
struct inode fake_inode;
|
||||
|
||||
fake_inode.i_sb = sb;
|
||||
return tm_now(&fake_inode, tm);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SDFAT_DEBUG
|
||||
|
||||
|
||||
+32
-39
@@ -145,6 +145,13 @@
|
||||
#define CS_PBR_SECTOR 1
|
||||
#define CS_DEFAULT 2
|
||||
|
||||
/* time min/max */
|
||||
/* Jan 1 GMT 00:00:00 1980 */
|
||||
#define SDFAT_MIN_TIMESTAMP_SECS 315532800LL
|
||||
/* Dec 31 GMT 23:59:59 2107 */
|
||||
#define SDFAT_MAX_TIMESTAMP_SECS 4354819199LL
|
||||
|
||||
|
||||
/*
|
||||
* ioctl command
|
||||
*/
|
||||
@@ -179,7 +186,7 @@
|
||||
/* On-Disk Type Definitions */
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
/* FAT12/16 BIOS parameter block (64 bytes) */
|
||||
/* FAT12/16/32 BIOS parameter block (64 bytes) */
|
||||
typedef struct {
|
||||
__u8 jmp_boot[3];
|
||||
__u8 oem_name[8];
|
||||
@@ -197,41 +204,28 @@ typedef struct {
|
||||
__le32 num_hid_sectors; /* . */
|
||||
__le32 num_huge_sectors;
|
||||
|
||||
__u8 phy_drv_no;
|
||||
__u8 state; /* used by WindowsNT for mount state */
|
||||
__u8 ext_signature;
|
||||
__u8 vol_serial[4];
|
||||
__u8 vol_label[11];
|
||||
__u8 vol_type[8];
|
||||
__le16 dummy;
|
||||
} bpb16_t;
|
||||
union {
|
||||
struct {
|
||||
__u8 phy_drv_no;
|
||||
__u8 state; /* used by WinNT for mount state */
|
||||
__u8 ext_signature;
|
||||
__u8 vol_serial[4];
|
||||
__u8 vol_label[11];
|
||||
__u8 vol_type[8];
|
||||
__le16 nouse;
|
||||
} f16;
|
||||
|
||||
/* FAT32 BIOS parameter block (64 bytes) */
|
||||
typedef struct {
|
||||
__u8 jmp_boot[3];
|
||||
__u8 oem_name[8];
|
||||
|
||||
__u8 sect_size[2]; /* unaligned */
|
||||
__u8 sect_per_clus;
|
||||
__le16 num_reserved;
|
||||
__u8 num_fats;
|
||||
__u8 num_root_entries[2]; /* unaligned */
|
||||
__u8 num_sectors[2]; /* unaligned */
|
||||
__u8 media_type;
|
||||
__le16 num_fat_sectors; /* zero */
|
||||
__le16 sectors_in_track;
|
||||
__le16 num_heads;
|
||||
__le32 num_hid_sectors; /* . */
|
||||
__le32 num_huge_sectors;
|
||||
|
||||
__le32 num_fat32_sectors;
|
||||
__le16 ext_flags;
|
||||
__u8 fs_version[2];
|
||||
__le32 root_cluster; /* . */
|
||||
__le16 fsinfo_sector;
|
||||
__le16 backup_sector;
|
||||
__le16 reserved[6]; /* . */
|
||||
} bpb32_t;
|
||||
struct {
|
||||
__le32 num_fat32_sectors;
|
||||
__le16 ext_flags;
|
||||
__u8 fs_version[2];
|
||||
__le32 root_cluster; /* . */
|
||||
__le16 fsinfo_sector;
|
||||
__le16 backup_sector;
|
||||
__le16 reserved[6]; /* . */
|
||||
} f32;
|
||||
};
|
||||
} bpb_t;
|
||||
|
||||
/* FAT32 EXTEND BIOS parameter block (32 bytes) */
|
||||
typedef struct {
|
||||
@@ -273,12 +267,12 @@ typedef struct {
|
||||
|
||||
/* FAT32 PBR (64 bytes) */
|
||||
typedef struct {
|
||||
bpb16_t bpb;
|
||||
bpb_t bpb;
|
||||
} pbr16_t;
|
||||
|
||||
/* FAT32 PBR[BPB+BSX] (96 bytes) */
|
||||
typedef struct {
|
||||
bpb32_t bpb;
|
||||
bpb_t bpb;
|
||||
bsx32_t bsx;
|
||||
} pbr32_t;
|
||||
|
||||
@@ -292,8 +286,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
union {
|
||||
__u8 raw[64];
|
||||
bpb16_t f16;
|
||||
bpb32_t f32;
|
||||
bpb_t fat;
|
||||
bpb64_t f64;
|
||||
} bpb;
|
||||
union {
|
||||
|
||||
+1
-1
@@ -22,4 +22,4 @@
|
||||
/* PURPOSE : sdFAT File Manager */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#define SDFAT_VERSION "2.3.0-lineage"
|
||||
#define SDFAT_VERSION "2.4.5-lineage"
|
||||
|
||||
@@ -79,12 +79,22 @@ ssize_t __sdfat_getxattr(const char *name, void *value, size_t size)
|
||||
* FUNCTIONS WHICH HAS KERNEL VERSION DEPENDENCY
|
||||
*************************************************************************/
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)
|
||||
#if defined(CONFIG_ANDROID) && (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
|
||||
static int sdfat_xattr_get(const struct xattr_handler *handler,
|
||||
struct dentry *dentry, struct inode *inode,
|
||||
const char *name, void *buffer, size_t size,
|
||||
int flags)
|
||||
{
|
||||
return __sdfat_getxattr(name, buffer, size);
|
||||
}
|
||||
#else
|
||||
static int sdfat_xattr_get(const struct xattr_handler *handler,
|
||||
struct dentry *dentry, struct inode *inode,
|
||||
const char *name, void *buffer, size_t size)
|
||||
{
|
||||
return __sdfat_getxattr(name, buffer, size);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int sdfat_xattr_set(const struct xattr_handler *handler,
|
||||
struct dentry *dentry, struct inode *inode,
|
||||
|
||||
@@ -132,6 +132,22 @@
|
||||
#define F_GETOWN_EX 16
|
||||
#endif
|
||||
|
||||
/*
|
||||
* fd "private" POSIX locks.
|
||||
*
|
||||
* Usually POSIX locks held by a process are released on *any* close and are
|
||||
* not inherited across a fork().
|
||||
*
|
||||
* These cmd values will set locks that conflict with normal POSIX locks, but
|
||||
* are "owned" by the opened file, not the process. This means that they are
|
||||
* inherited across fork() like BSD (flock) locks, and they are only released
|
||||
* automatically when the last reference to the the open file against which
|
||||
* they were acquired is put.
|
||||
*/
|
||||
#define F_OFD_GETLK 36
|
||||
#define F_OFD_SETLK 37
|
||||
#define F_OFD_SETLKW 38
|
||||
|
||||
#define F_OWNER_TID 0
|
||||
#define F_OWNER_PID 1
|
||||
#define F_OWNER_PGRP 2
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
#ifndef __MAX17050_FUELGAUGE_H
|
||||
#define __MAX17050_FUELGAUGE_H __FILE__
|
||||
|
||||
#if defined(ANDROID_ALARM_ACTIVATED)
|
||||
#include <linux/android_alarm.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT) || \
|
||||
defined(CONFIG_MACH_LT03LGT) || defined(CONFIG_MACH_MONDRIAN)
|
||||
|
||||
+10
-6
@@ -1070,6 +1070,7 @@ struct file_handle {
|
||||
};
|
||||
|
||||
#define get_file(x) atomic_long_inc(&(x)->f_count)
|
||||
#define get_file_rcu(x) atomic_long_inc_not_zero(&(x)->f_count)
|
||||
#define fput_atomic(x) atomic_long_add_unless(&(x)->f_count, -1, 1)
|
||||
#define file_count(x) atomic_long_read(&(x)->f_count)
|
||||
|
||||
@@ -1135,6 +1136,7 @@ static inline int file_check_writeable(struct file *filp)
|
||||
#define FL_SLEEP 128 /* A blocking lock */
|
||||
#define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */
|
||||
#define FL_UNLOCK_PENDING 512 /* Lease is being broken */
|
||||
#define FL_OFDLCK 1024 /* lock is "owned" by struct file */
|
||||
|
||||
/*
|
||||
* Special return value from posix_lock_file() and vfs_lock_file() for
|
||||
@@ -1219,12 +1221,12 @@ struct file_lock {
|
||||
extern void send_sigio(struct fown_struct *fown, int fd, int band);
|
||||
|
||||
#ifdef CONFIG_FILE_LOCKING
|
||||
extern int fcntl_getlk(struct file *, struct flock __user *);
|
||||
extern int fcntl_getlk(struct file *, unsigned int, struct flock __user *);
|
||||
extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
|
||||
struct flock __user *);
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
extern int fcntl_getlk64(struct file *, struct flock64 __user *);
|
||||
extern int fcntl_getlk64(struct file *, unsigned int, struct flock64 __user *);
|
||||
extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
|
||||
struct flock64 __user *);
|
||||
#endif
|
||||
@@ -1239,7 +1241,7 @@ extern struct file_lock * locks_alloc_lock(void);
|
||||
extern void locks_copy_lock(struct file_lock *, struct file_lock *);
|
||||
extern void __locks_copy_lock(struct file_lock *, const struct file_lock *);
|
||||
extern void locks_remove_posix(struct file *, fl_owner_t);
|
||||
extern void locks_remove_flock(struct file *);
|
||||
extern void locks_remove_file(struct file *);
|
||||
extern void locks_release_private(struct file_lock *);
|
||||
extern void posix_test_lock(struct file *, struct file_lock *);
|
||||
extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
|
||||
@@ -1260,7 +1262,8 @@ extern void locks_delete_block(struct file_lock *waiter);
|
||||
extern void lock_flocks(void);
|
||||
extern void unlock_flocks(void);
|
||||
#else /* !CONFIG_FILE_LOCKING */
|
||||
static inline int fcntl_getlk(struct file *file, struct flock __user *user)
|
||||
static inline int fcntl_getlk(struct file *file, unsigned int cmd,
|
||||
struct flock __user *user)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1272,7 +1275,8 @@ static inline int fcntl_setlk(unsigned int fd, struct file *file,
|
||||
}
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
static inline int fcntl_getlk64(struct file *file, struct flock64 __user *user)
|
||||
static inline int fcntl_getlk64(struct file *file, unsigned int cmd,
|
||||
struct flock64 __user *user)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -1313,7 +1317,7 @@ static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
|
||||
return;
|
||||
}
|
||||
|
||||
static inline void locks_remove_flock(struct file *filp)
|
||||
static inline void locks_remove_file(struct file *filp)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
+29
-13
@@ -771,34 +771,49 @@ const struct hid_device_id *hid_match_id(struct hid_device *hdev,
|
||||
* @max: maximal valid usage->code to consider later (out parameter)
|
||||
* @type: input event type (EV_KEY, EV_REL, ...)
|
||||
* @c: code which corresponds to this usage and type
|
||||
*
|
||||
* The value pointed to by @bit will be set to NULL if either @type is
|
||||
* an unhandled event type, or if @c is out of range for @type. This
|
||||
* can be used as an error condition.
|
||||
*/
|
||||
static inline void hid_map_usage(struct hid_input *hidinput,
|
||||
struct hid_usage *usage, unsigned long **bit, int *max,
|
||||
__u8 type, __u16 c)
|
||||
__u8 type, unsigned int c)
|
||||
{
|
||||
struct input_dev *input = hidinput->input;
|
||||
|
||||
usage->type = type;
|
||||
usage->code = c;
|
||||
unsigned long *bmap = NULL;
|
||||
unsigned int limit = 0;
|
||||
|
||||
switch (type) {
|
||||
case EV_ABS:
|
||||
*bit = input->absbit;
|
||||
*max = ABS_MAX;
|
||||
bmap = input->absbit;
|
||||
limit = ABS_MAX;
|
||||
break;
|
||||
case EV_REL:
|
||||
*bit = input->relbit;
|
||||
*max = REL_MAX;
|
||||
bmap = input->relbit;
|
||||
limit = REL_MAX;
|
||||
break;
|
||||
case EV_KEY:
|
||||
*bit = input->keybit;
|
||||
*max = KEY_MAX;
|
||||
bmap = input->keybit;
|
||||
limit = KEY_MAX;
|
||||
break;
|
||||
case EV_LED:
|
||||
*bit = input->ledbit;
|
||||
*max = LED_MAX;
|
||||
bmap = input->ledbit;
|
||||
limit = LED_MAX;
|
||||
break;
|
||||
}
|
||||
|
||||
if (unlikely(c > limit || !bmap)) {
|
||||
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
|
||||
input->name, c, type);
|
||||
*bit = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
usage->type = type;
|
||||
usage->code = c;
|
||||
*max = limit;
|
||||
*bit = bmap;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -812,7 +827,8 @@ static inline void hid_map_usage_clear(struct hid_input *hidinput,
|
||||
__u8 type, __u16 c)
|
||||
{
|
||||
hid_map_usage(hidinput, usage, bit, max, type, c);
|
||||
clear_bit(c, *bit);
|
||||
if (*bit)
|
||||
clear_bit(usage->code, *bit);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -438,12 +438,6 @@ extern void hrtimer_run_pending(void);
|
||||
/* Bootup initialization: */
|
||||
extern void __init hrtimers_init(void);
|
||||
|
||||
#if BITS_PER_LONG < 64
|
||||
extern u64 ktime_divns(const ktime_t kt, s64 div);
|
||||
#else /* BITS_PER_LONG < 64 */
|
||||
# define ktime_divns(kt, div) (u64)((kt).tv64 / (div))
|
||||
#endif
|
||||
|
||||
/* Show pending timers: */
|
||||
extern void sysrq_timer_list_show(void);
|
||||
|
||||
|
||||
+33
-4
@@ -301,16 +301,45 @@ static inline int ktime_compare(const ktime_t cmp1, const ktime_t cmp2)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if BITS_PER_LONG < 64
|
||||
extern s64 __ktime_divns(const ktime_t kt, s64 div);
|
||||
static inline s64 ktime_divns(const ktime_t kt, s64 div)
|
||||
{
|
||||
/*
|
||||
* Negative divisors could cause an inf loop,
|
||||
* so bug out here.
|
||||
*/
|
||||
BUG_ON(div < 0);
|
||||
if (__builtin_constant_p(div) && !(div >> 32)) {
|
||||
s64 ns = kt.tv64;
|
||||
u64 tmp = ns < 0 ? -ns : ns;
|
||||
|
||||
do_div(tmp, div);
|
||||
return ns < 0 ? -tmp : tmp;
|
||||
} else {
|
||||
return __ktime_divns(kt, div);
|
||||
}
|
||||
}
|
||||
#else /* BITS_PER_LONG < 64 */
|
||||
static inline s64 ktime_divns(const ktime_t kt, s64 div)
|
||||
{
|
||||
/*
|
||||
* 32-bit implementation cannot handle negative divisors,
|
||||
* so catch them on 64bit as well.
|
||||
*/
|
||||
WARN_ON(div < 0);
|
||||
return kt.tv64 / div;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline s64 ktime_to_us(const ktime_t kt)
|
||||
{
|
||||
struct timeval tv = ktime_to_timeval(kt);
|
||||
return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec;
|
||||
return ktime_divns(kt, NSEC_PER_USEC);
|
||||
}
|
||||
|
||||
static inline s64 ktime_to_ms(const ktime_t kt)
|
||||
{
|
||||
struct timeval tv = ktime_to_timeval(kt);
|
||||
return (s64) tv.tv_sec * MSEC_PER_SEC + tv.tv_usec / USEC_PER_MSEC;
|
||||
return ktime_divns(kt, NSEC_PER_MSEC);
|
||||
}
|
||||
|
||||
static inline s64 ktime_us_delta(const ktime_t later, const ktime_t earlier)
|
||||
|
||||
@@ -382,7 +382,7 @@ struct mm_struct {
|
||||
#endif
|
||||
|
||||
/* store ref to file /proc/<pid>/exe symlink points to */
|
||||
struct file *exe_file;
|
||||
struct file __rcu *exe_file;
|
||||
unsigned long num_exe_file_vmas;
|
||||
#ifdef CONFIG_MMU_NOTIFIER
|
||||
struct mmu_notifier_mm *mmu_notifier_mm;
|
||||
|
||||
+4
-2
@@ -107,12 +107,14 @@ struct shmid_kernel /* private to the kernel */
|
||||
#define SHM_NORESERVE 010000 /* don't check for reservations */
|
||||
|
||||
#ifdef CONFIG_SYSVIPC
|
||||
long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr);
|
||||
long do_shmat(int shmid, char __user *shmaddr, int shmflg, unsigned long *addr,
|
||||
unsigned long shmlba);
|
||||
extern int is_file_shm_hugepages(struct file *file);
|
||||
extern void exit_shm(struct task_struct *task);
|
||||
#else
|
||||
static inline long do_shmat(int shmid, char __user *shmaddr,
|
||||
int shmflg, unsigned long *addr)
|
||||
int shmflg, unsigned long *addr,
|
||||
unsigned long shmlba)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
+3
-1
@@ -89,7 +89,8 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
|
||||
__u32 mark, __u8 tos, __u8 scope,
|
||||
__u8 proto, __u8 flags,
|
||||
__be32 daddr, __be32 saddr,
|
||||
__be16 dport, __be16 sport)
|
||||
__be16 dport, __be16 sport,
|
||||
kuid_t uid)
|
||||
{
|
||||
fl4->flowi4_oif = oif;
|
||||
fl4->flowi4_iif = LOOPBACK_IFINDEX;
|
||||
@@ -99,6 +100,7 @@ static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
|
||||
fl4->flowi4_proto = proto;
|
||||
fl4->flowi4_flags = flags;
|
||||
fl4->flowi4_secid = 0;
|
||||
fl4->flowi4_uid = uid;
|
||||
fl4->daddr = daddr;
|
||||
fl4->saddr = saddr;
|
||||
fl4->fl4_dport = dport;
|
||||
|
||||
@@ -169,6 +169,7 @@ struct ip_reply_arg {
|
||||
/* -1 if not needed */
|
||||
int bound_dev_if;
|
||||
u8 tos;
|
||||
kuid_t uid;
|
||||
};
|
||||
|
||||
#define IP_REPLY_ARG_NOSRCCHECK 1
|
||||
|
||||
@@ -136,10 +136,10 @@ extern void rt6_redirect(const struct in6_addr *dest,
|
||||
u8 *lladdr,
|
||||
int on_link);
|
||||
|
||||
extern void rt6_pmtu_discovery(const struct in6_addr *daddr,
|
||||
const struct in6_addr *saddr,
|
||||
struct net_device *dev,
|
||||
u32 pmtu);
|
||||
extern void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu,
|
||||
int oif, u32 mark, kuid_t uid);
|
||||
extern void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk,
|
||||
__be32 mtu);
|
||||
|
||||
struct netlink_callback;
|
||||
|
||||
|
||||
+3
-2
@@ -146,7 +146,7 @@ static inline struct rtable *ip_route_output_ports(struct net *net, struct flowi
|
||||
flowi4_init_output(fl4, oif, sk ? sk->sk_mark : 0, tos,
|
||||
RT_SCOPE_UNIVERSE, proto,
|
||||
sk ? inet_sk_flowi_flags(sk) : 0,
|
||||
daddr, saddr, dport, sport);
|
||||
daddr, saddr, dport, sport, sock_net_uid(net, sk));
|
||||
if (sk)
|
||||
security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
|
||||
return ip_route_output_flow(net, fl4, sk);
|
||||
@@ -250,7 +250,8 @@ static inline void ip_route_connect_init(struct flowi4 *fl4, __be32 dst, __be32
|
||||
flow_flags |= FLOWI_FLAG_CAN_SLEEP;
|
||||
|
||||
flowi4_init_output(fl4, oif, sk->sk_mark, tos, RT_SCOPE_UNIVERSE,
|
||||
protocol, flow_flags, dst, src, dport, sport);
|
||||
protocol, flow_flags, dst, src, dport, sport,
|
||||
sk->sk_uid);
|
||||
}
|
||||
|
||||
static inline struct rtable *ip_route_connect(struct flowi4 *fl4,
|
||||
|
||||
+176
-187
@@ -77,6 +77,7 @@
|
||||
#include <linux/atomic.h>
|
||||
#include <net/dst.h>
|
||||
#include <net/checksum.h>
|
||||
#include <net/tcp_states.h>
|
||||
|
||||
struct cgroup;
|
||||
struct cgroup_subsys;
|
||||
@@ -108,7 +109,7 @@ void mem_cgroup_sockets_destroy(struct cgroup *cgrp)
|
||||
#else
|
||||
/* Validate arguments and do nothing */
|
||||
static inline __printf(2, 3)
|
||||
void SOCK_DEBUG(struct sock *sk, const char *msg, ...)
|
||||
void SOCK_DEBUG(const struct sock *sk, const char *msg, ...)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -381,14 +382,15 @@ struct sock {
|
||||
void *sk_security;
|
||||
#endif
|
||||
__u32 sk_mark;
|
||||
kuid_t sk_uid;
|
||||
u32 sk_classid;
|
||||
struct cg_proto *sk_cgrp;
|
||||
void (*sk_state_change)(struct sock *sk);
|
||||
void (*sk_data_ready)(struct sock *sk, int bytes);
|
||||
void (*sk_write_space)(struct sock *sk);
|
||||
void (*sk_error_report)(struct sock *sk);
|
||||
int (*sk_backlog_rcv)(struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
int (*sk_backlog_rcv)(struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
void (*sk_destruct)(struct sock *sk);
|
||||
};
|
||||
|
||||
@@ -458,40 +460,40 @@ static inline struct sock *sk_nulls_next(const struct sock *sk)
|
||||
NULL;
|
||||
}
|
||||
|
||||
static inline int sk_unhashed(const struct sock *sk)
|
||||
static inline bool sk_unhashed(const struct sock *sk)
|
||||
{
|
||||
return hlist_unhashed(&sk->sk_node);
|
||||
}
|
||||
|
||||
static inline int sk_hashed(const struct sock *sk)
|
||||
static inline bool sk_hashed(const struct sock *sk)
|
||||
{
|
||||
return !sk_unhashed(sk);
|
||||
}
|
||||
|
||||
static __inline__ void sk_node_init(struct hlist_node *node)
|
||||
static inline void sk_node_init(struct hlist_node *node)
|
||||
{
|
||||
node->pprev = NULL;
|
||||
}
|
||||
|
||||
static __inline__ void sk_nulls_node_init(struct hlist_nulls_node *node)
|
||||
static inline void sk_nulls_node_init(struct hlist_nulls_node *node)
|
||||
{
|
||||
node->pprev = NULL;
|
||||
}
|
||||
|
||||
static __inline__ void __sk_del_node(struct sock *sk)
|
||||
static inline void __sk_del_node(struct sock *sk)
|
||||
{
|
||||
__hlist_del(&sk->sk_node);
|
||||
}
|
||||
|
||||
/* NB: equivalent to hlist_del_init_rcu */
|
||||
static __inline__ int __sk_del_node_init(struct sock *sk)
|
||||
static inline bool __sk_del_node_init(struct sock *sk)
|
||||
{
|
||||
if (sk_hashed(sk)) {
|
||||
__sk_del_node(sk);
|
||||
sk_node_init(&sk->sk_node);
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Grab socket reference count. This operation is valid only
|
||||
@@ -513,9 +515,9 @@ static inline void __sock_put(struct sock *sk)
|
||||
atomic_dec(&sk->sk_refcnt);
|
||||
}
|
||||
|
||||
static __inline__ int sk_del_node_init(struct sock *sk)
|
||||
static inline bool sk_del_node_init(struct sock *sk)
|
||||
{
|
||||
int rc = __sk_del_node_init(sk);
|
||||
bool rc = __sk_del_node_init(sk);
|
||||
|
||||
if (rc) {
|
||||
/* paranoid for a while -acme */
|
||||
@@ -526,18 +528,18 @@ static __inline__ int sk_del_node_init(struct sock *sk)
|
||||
}
|
||||
#define sk_del_node_init_rcu(sk) sk_del_node_init(sk)
|
||||
|
||||
static __inline__ int __sk_nulls_del_node_init_rcu(struct sock *sk)
|
||||
static inline bool __sk_nulls_del_node_init_rcu(struct sock *sk)
|
||||
{
|
||||
if (sk_hashed(sk)) {
|
||||
hlist_nulls_del_init_rcu(&sk->sk_nulls_node);
|
||||
return 1;
|
||||
return true;
|
||||
}
|
||||
return 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
static __inline__ int sk_nulls_del_node_init_rcu(struct sock *sk)
|
||||
static inline bool sk_nulls_del_node_init_rcu(struct sock *sk)
|
||||
{
|
||||
int rc = __sk_nulls_del_node_init_rcu(sk);
|
||||
bool rc = __sk_nulls_del_node_init_rcu(sk);
|
||||
|
||||
if (rc) {
|
||||
/* paranoid for a while -acme */
|
||||
@@ -547,40 +549,40 @@ static __inline__ int sk_nulls_del_node_init_rcu(struct sock *sk)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static __inline__ void __sk_add_node(struct sock *sk, struct hlist_head *list)
|
||||
static inline void __sk_add_node(struct sock *sk, struct hlist_head *list)
|
||||
{
|
||||
hlist_add_head(&sk->sk_node, list);
|
||||
}
|
||||
|
||||
static __inline__ void sk_add_node(struct sock *sk, struct hlist_head *list)
|
||||
static inline void sk_add_node(struct sock *sk, struct hlist_head *list)
|
||||
{
|
||||
sock_hold(sk);
|
||||
__sk_add_node(sk, list);
|
||||
}
|
||||
|
||||
static __inline__ void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
|
||||
static inline void sk_add_node_rcu(struct sock *sk, struct hlist_head *list)
|
||||
{
|
||||
sock_hold(sk);
|
||||
hlist_add_head_rcu(&sk->sk_node, list);
|
||||
}
|
||||
|
||||
static __inline__ void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
|
||||
static inline void __sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
|
||||
{
|
||||
hlist_nulls_add_head_rcu(&sk->sk_nulls_node, list);
|
||||
}
|
||||
|
||||
static __inline__ void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
|
||||
static inline void sk_nulls_add_node_rcu(struct sock *sk, struct hlist_nulls_head *list)
|
||||
{
|
||||
sock_hold(sk);
|
||||
__sk_nulls_add_node_rcu(sk, list);
|
||||
}
|
||||
|
||||
static __inline__ void __sk_del_bind_node(struct sock *sk)
|
||||
static inline void __sk_del_bind_node(struct sock *sk)
|
||||
{
|
||||
__hlist_del(&sk->sk_bind_node);
|
||||
}
|
||||
|
||||
static __inline__ void sk_add_bind_node(struct sock *sk,
|
||||
static inline void sk_add_bind_node(struct sock *sk,
|
||||
struct hlist_head *list)
|
||||
{
|
||||
hlist_add_head(&sk->sk_bind_node, list);
|
||||
@@ -669,7 +671,7 @@ static inline void sk_acceptq_added(struct sock *sk)
|
||||
sk->sk_ack_backlog++;
|
||||
}
|
||||
|
||||
static inline int sk_acceptq_is_full(struct sock *sk)
|
||||
static inline bool sk_acceptq_is_full(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_ack_backlog > sk->sk_max_ack_backlog;
|
||||
}
|
||||
@@ -677,19 +679,19 @@ static inline int sk_acceptq_is_full(struct sock *sk)
|
||||
/*
|
||||
* Compute minimal free write space needed to queue new packets.
|
||||
*/
|
||||
static inline int sk_stream_min_wspace(struct sock *sk)
|
||||
static inline int sk_stream_min_wspace(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_wmem_queued >> 1;
|
||||
}
|
||||
|
||||
static inline int sk_stream_wspace(struct sock *sk)
|
||||
static inline int sk_stream_wspace(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_sndbuf - sk->sk_wmem_queued;
|
||||
}
|
||||
|
||||
extern void sk_stream_write_space(struct sock *sk);
|
||||
void sk_stream_write_space(struct sock *sk);
|
||||
|
||||
static inline int sk_stream_memory_free(struct sock *sk)
|
||||
static inline bool sk_stream_memory_free(const struct sock *sk)
|
||||
{
|
||||
return sk->sk_wmem_queued < sk->sk_sndbuf;
|
||||
}
|
||||
@@ -792,13 +794,13 @@ static inline void sock_rps_reset_rxhash(struct sock *sk)
|
||||
__rc; \
|
||||
})
|
||||
|
||||
extern int sk_stream_wait_connect(struct sock *sk, long *timeo_p);
|
||||
extern int sk_stream_wait_memory(struct sock *sk, long *timeo_p);
|
||||
extern void sk_stream_wait_close(struct sock *sk, long timeo_p);
|
||||
extern int sk_stream_error(struct sock *sk, int flags, int err);
|
||||
extern void sk_stream_kill_queues(struct sock *sk);
|
||||
int sk_stream_wait_connect(struct sock *sk, long *timeo_p);
|
||||
int sk_stream_wait_memory(struct sock *sk, long *timeo_p);
|
||||
void sk_stream_wait_close(struct sock *sk, long timeo_p);
|
||||
int sk_stream_error(struct sock *sk, int flags, int err);
|
||||
void sk_stream_kill_queues(struct sock *sk);
|
||||
|
||||
extern int sk_wait_data(struct sock *sk, long *timeo);
|
||||
int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb);
|
||||
|
||||
struct request_sock_ops;
|
||||
struct timewait_sock_ops;
|
||||
@@ -823,26 +825,26 @@ static inline void sk_prot_clear_nulls(struct sock *sk, int size)
|
||||
* transport -> network interface is defined by struct inet_proto
|
||||
*/
|
||||
struct proto {
|
||||
void (*close)(struct sock *sk,
|
||||
void (*close)(struct sock *sk,
|
||||
long timeout);
|
||||
int (*connect)(struct sock *sk,
|
||||
struct sockaddr *uaddr,
|
||||
struct sockaddr *uaddr,
|
||||
int addr_len);
|
||||
int (*disconnect)(struct sock *sk, int flags);
|
||||
|
||||
struct sock * (*accept) (struct sock *sk, int flags, int *err);
|
||||
struct sock * (*accept)(struct sock *sk, int flags, int *err);
|
||||
|
||||
int (*ioctl)(struct sock *sk, int cmd,
|
||||
unsigned long arg);
|
||||
int (*init)(struct sock *sk);
|
||||
void (*destroy)(struct sock *sk);
|
||||
void (*shutdown)(struct sock *sk, int how);
|
||||
int (*setsockopt)(struct sock *sk, int level,
|
||||
int (*setsockopt)(struct sock *sk, int level,
|
||||
int optname, char __user *optval,
|
||||
unsigned int optlen);
|
||||
int (*getsockopt)(struct sock *sk, int level,
|
||||
int optname, char __user *optval,
|
||||
int __user *option);
|
||||
int (*getsockopt)(struct sock *sk, int level,
|
||||
int optname, char __user *optval,
|
||||
int __user *option);
|
||||
#ifdef CONFIG_COMPAT
|
||||
int (*compat_setsockopt)(struct sock *sk,
|
||||
int level,
|
||||
@@ -859,14 +861,14 @@ struct proto {
|
||||
struct msghdr *msg, size_t len);
|
||||
int (*recvmsg)(struct kiocb *iocb, struct sock *sk,
|
||||
struct msghdr *msg,
|
||||
size_t len, int noblock, int flags,
|
||||
int *addr_len);
|
||||
size_t len, int noblock, int flags,
|
||||
int *addr_len);
|
||||
int (*sendpage)(struct sock *sk, struct page *page,
|
||||
int offset, size_t size, int flags);
|
||||
int (*bind)(struct sock *sk,
|
||||
int (*bind)(struct sock *sk,
|
||||
struct sockaddr *uaddr, int addr_len);
|
||||
|
||||
int (*backlog_rcv) (struct sock *sk,
|
||||
int (*backlog_rcv) (struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
|
||||
/* Keeping track of sk's, looking them up, and port selection methods. */
|
||||
@@ -954,8 +956,8 @@ struct cg_proto {
|
||||
struct mem_cgroup *memcg;
|
||||
};
|
||||
|
||||
extern int proto_register(struct proto *prot, int alloc_slab);
|
||||
extern void proto_unregister(struct proto *prot);
|
||||
int proto_register(struct proto *prot, int alloc_slab);
|
||||
void proto_unregister(struct proto *prot);
|
||||
|
||||
#ifdef SOCK_REFCNT_DEBUG
|
||||
static inline void sk_refcnt_debug_inc(struct sock *sk)
|
||||
@@ -1185,10 +1187,10 @@ proto_memory_pressure(struct proto *prot)
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
/* Called with local bh disabled */
|
||||
extern void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc);
|
||||
extern int sock_prot_inuse_get(struct net *net, struct proto *proto);
|
||||
void sock_prot_inuse_add(struct net *net, struct proto *prot, int inc);
|
||||
int sock_prot_inuse_get(struct net *net, struct proto *proto);
|
||||
#else
|
||||
static void inline sock_prot_inuse_add(struct net *net, struct proto *prot,
|
||||
static inline void sock_prot_inuse_add(struct net *net, struct proto *prot,
|
||||
int inc)
|
||||
{
|
||||
}
|
||||
@@ -1262,8 +1264,8 @@ static inline struct inode *SOCK_INODE(struct socket *socket)
|
||||
/*
|
||||
* Functions for memory accounting
|
||||
*/
|
||||
extern int __sk_mem_schedule(struct sock *sk, int size, int kind);
|
||||
extern void __sk_mem_reclaim(struct sock *sk);
|
||||
int __sk_mem_schedule(struct sock *sk, int size, int kind);
|
||||
void __sk_mem_reclaim(struct sock *sk);
|
||||
|
||||
#define SK_MEM_QUANTUM ((int)PAGE_SIZE)
|
||||
#define SK_MEM_QUANTUM_SHIFT ilog2(SK_MEM_QUANTUM)
|
||||
@@ -1275,24 +1277,24 @@ static inline int sk_mem_pages(int amt)
|
||||
return (amt + SK_MEM_QUANTUM - 1) >> SK_MEM_QUANTUM_SHIFT;
|
||||
}
|
||||
|
||||
static inline int sk_has_account(struct sock *sk)
|
||||
static inline bool sk_has_account(struct sock *sk)
|
||||
{
|
||||
/* return true if protocol supports memory accounting */
|
||||
return !!sk->sk_prot->memory_allocated;
|
||||
}
|
||||
|
||||
static inline int sk_wmem_schedule(struct sock *sk, int size)
|
||||
static inline bool sk_wmem_schedule(struct sock *sk, int size)
|
||||
{
|
||||
if (!sk_has_account(sk))
|
||||
return 1;
|
||||
return true;
|
||||
return size <= sk->sk_forward_alloc ||
|
||||
__sk_mem_schedule(sk, size, SK_MEM_SEND);
|
||||
}
|
||||
|
||||
static inline int sk_rmem_schedule(struct sock *sk, int size)
|
||||
static inline bool sk_rmem_schedule(struct sock *sk, int size)
|
||||
{
|
||||
if (!sk_has_account(sk))
|
||||
return 1;
|
||||
return true;
|
||||
return size <= sk->sk_forward_alloc ||
|
||||
__sk_mem_schedule(sk, size, SK_MEM_RECV);
|
||||
}
|
||||
@@ -1357,7 +1359,7 @@ static inline void sk_wmem_free_skb(struct sock *sk, struct sk_buff *skb)
|
||||
* Mark both the sk_lock and the sk_lock.slock as a
|
||||
* per-address-family lock class.
|
||||
*/
|
||||
#define sock_lock_init_class_and_name(sk, sname, skey, name, key) \
|
||||
#define sock_lock_init_class_and_name(sk, sname, skey, name, key) \
|
||||
do { \
|
||||
sk->sk_lock.owned = 0; \
|
||||
init_waitqueue_head(&sk->sk_lock.wq); \
|
||||
@@ -1365,18 +1367,18 @@ do { \
|
||||
debug_check_no_locks_freed((void *)&(sk)->sk_lock, \
|
||||
sizeof((sk)->sk_lock)); \
|
||||
lockdep_set_class_and_name(&(sk)->sk_lock.slock, \
|
||||
(skey), (sname)); \
|
||||
(skey), (sname)); \
|
||||
lockdep_init_map(&(sk)->sk_lock.dep_map, (name), (key), 0); \
|
||||
} while (0)
|
||||
|
||||
extern void lock_sock_nested(struct sock *sk, int subclass);
|
||||
void lock_sock_nested(struct sock *sk, int subclass);
|
||||
|
||||
static inline void lock_sock(struct sock *sk)
|
||||
{
|
||||
lock_sock_nested(sk, 0);
|
||||
}
|
||||
|
||||
extern void release_sock(struct sock *sk);
|
||||
void release_sock(struct sock *sk);
|
||||
|
||||
/* BH context may only use the following locking interface. */
|
||||
#define bh_lock_sock(__sk) spin_lock(&((__sk)->sk_lock.slock))
|
||||
@@ -1385,7 +1387,7 @@ extern void release_sock(struct sock *sk);
|
||||
SINGLE_DEPTH_NESTING)
|
||||
#define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock))
|
||||
|
||||
extern bool lock_sock_fast(struct sock *sk);
|
||||
bool lock_sock_fast(struct sock *sk);
|
||||
/**
|
||||
* unlock_sock_fast - complement of lock_sock_fast
|
||||
* @sk: socket
|
||||
@@ -1403,46 +1405,35 @@ static inline void unlock_sock_fast(struct sock *sk, bool slow)
|
||||
}
|
||||
|
||||
|
||||
extern struct sock *sk_alloc(struct net *net, int family,
|
||||
gfp_t priority,
|
||||
struct proto *prot);
|
||||
extern void sk_free(struct sock *sk);
|
||||
extern void sk_release_kernel(struct sock *sk);
|
||||
extern struct sock *sk_clone_lock(const struct sock *sk,
|
||||
const gfp_t priority);
|
||||
struct sock *sk_alloc(struct net *net, int family, gfp_t priority,
|
||||
struct proto *prot);
|
||||
void sk_free(struct sock *sk);
|
||||
void sk_release_kernel(struct sock *sk);
|
||||
struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority);
|
||||
|
||||
extern struct sk_buff *sock_wmalloc(struct sock *sk,
|
||||
unsigned long size, int force,
|
||||
gfp_t priority);
|
||||
extern struct sk_buff *sock_rmalloc(struct sock *sk,
|
||||
unsigned long size, int force,
|
||||
gfp_t priority);
|
||||
extern void sock_wfree(struct sk_buff *skb);
|
||||
extern void sock_rfree(struct sk_buff *skb);
|
||||
struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force,
|
||||
gfp_t priority);
|
||||
struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force,
|
||||
gfp_t priority);
|
||||
void sock_wfree(struct sk_buff *skb);
|
||||
void sock_rfree(struct sk_buff *skb);
|
||||
|
||||
extern int sock_setsockopt(struct socket *sock, int level,
|
||||
int op, char __user *optval,
|
||||
unsigned int optlen);
|
||||
int sock_setsockopt(struct socket *sock, int level, int op,
|
||||
char __user *optval, unsigned int optlen);
|
||||
|
||||
extern int sock_getsockopt(struct socket *sock, int level,
|
||||
int op, char __user *optval,
|
||||
int __user *optlen);
|
||||
extern struct sk_buff *sock_alloc_send_skb(struct sock *sk,
|
||||
unsigned long size,
|
||||
int noblock,
|
||||
int *errcode);
|
||||
extern struct sk_buff *sock_alloc_send_pskb(struct sock *sk,
|
||||
unsigned long header_len,
|
||||
unsigned long data_len,
|
||||
int noblock,
|
||||
int *errcode);
|
||||
extern void *sock_kmalloc(struct sock *sk, int size,
|
||||
gfp_t priority);
|
||||
extern void sock_kfree_s(struct sock *sk, void *mem, int size);
|
||||
extern void sk_send_sigurg(struct sock *sk);
|
||||
int sock_getsockopt(struct socket *sock, int level, int op,
|
||||
char __user *optval, int __user *optlen);
|
||||
struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size,
|
||||
int noblock, int *errcode);
|
||||
struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_len,
|
||||
unsigned long data_len, int noblock,
|
||||
int *errcode);
|
||||
void *sock_kmalloc(struct sock *sk, int size, gfp_t priority);
|
||||
void sock_kfree_s(struct sock *sk, void *mem, int size);
|
||||
void sk_send_sigurg(struct sock *sk);
|
||||
|
||||
#ifdef CONFIG_CGROUPS
|
||||
extern void sock_update_classid(struct sock *sk);
|
||||
void sock_update_classid(struct sock *sk);
|
||||
#else
|
||||
static inline void sock_update_classid(struct sock *sk)
|
||||
{
|
||||
@@ -1453,63 +1444,51 @@ static inline void sock_update_classid(struct sock *sk)
|
||||
* Functions to fill in entries in struct proto_ops when a protocol
|
||||
* does not implement a particular function.
|
||||
*/
|
||||
extern int sock_no_bind(struct socket *,
|
||||
struct sockaddr *, int);
|
||||
extern int sock_no_connect(struct socket *,
|
||||
struct sockaddr *, int, int);
|
||||
extern int sock_no_socketpair(struct socket *,
|
||||
struct socket *);
|
||||
extern int sock_no_accept(struct socket *,
|
||||
struct socket *, int);
|
||||
extern int sock_no_getname(struct socket *,
|
||||
struct sockaddr *, int *, int);
|
||||
extern unsigned int sock_no_poll(struct file *, struct socket *,
|
||||
struct poll_table_struct *);
|
||||
extern int sock_no_ioctl(struct socket *, unsigned int,
|
||||
unsigned long);
|
||||
extern int sock_no_listen(struct socket *, int);
|
||||
extern int sock_no_shutdown(struct socket *, int);
|
||||
extern int sock_no_getsockopt(struct socket *, int , int,
|
||||
char __user *, int __user *);
|
||||
extern int sock_no_setsockopt(struct socket *, int, int,
|
||||
char __user *, unsigned int);
|
||||
extern int sock_no_sendmsg(struct kiocb *, struct socket *,
|
||||
struct msghdr *, size_t);
|
||||
extern int sock_no_recvmsg(struct kiocb *, struct socket *,
|
||||
struct msghdr *, size_t, int);
|
||||
extern int sock_no_mmap(struct file *file,
|
||||
struct socket *sock,
|
||||
struct vm_area_struct *vma);
|
||||
extern ssize_t sock_no_sendpage(struct socket *sock,
|
||||
struct page *page,
|
||||
int offset, size_t size,
|
||||
int flags);
|
||||
int sock_no_bind(struct socket *, struct sockaddr *, int);
|
||||
int sock_no_connect(struct socket *, struct sockaddr *, int, int);
|
||||
int sock_no_socketpair(struct socket *, struct socket *);
|
||||
int sock_no_accept(struct socket *, struct socket *, int);
|
||||
int sock_no_getname(struct socket *, struct sockaddr *, int *, int);
|
||||
unsigned int sock_no_poll(struct file *, struct socket *,
|
||||
struct poll_table_struct *);
|
||||
int sock_no_ioctl(struct socket *, unsigned int, unsigned long);
|
||||
int sock_no_listen(struct socket *, int);
|
||||
int sock_no_shutdown(struct socket *, int);
|
||||
int sock_no_getsockopt(struct socket *, int , int, char __user *, int __user *);
|
||||
int sock_no_setsockopt(struct socket *, int, int, char __user *, unsigned int);
|
||||
int sock_no_sendmsg(struct kiocb *, struct socket *, struct msghdr *, size_t);
|
||||
int sock_no_recvmsg(struct kiocb *, struct socket *, struct msghdr *, size_t,
|
||||
int);
|
||||
int sock_no_mmap(struct file *file, struct socket *sock,
|
||||
struct vm_area_struct *vma);
|
||||
ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset,
|
||||
size_t size, int flags);
|
||||
|
||||
/*
|
||||
* Functions to fill in entries in struct proto_ops when a protocol
|
||||
* uses the inet style.
|
||||
*/
|
||||
extern int sock_common_getsockopt(struct socket *sock, int level, int optname,
|
||||
int sock_common_getsockopt(struct socket *sock, int level, int optname,
|
||||
char __user *optval, int __user *optlen);
|
||||
extern int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
int sock_common_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size, int flags);
|
||||
extern int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
||||
int sock_common_setsockopt(struct socket *sock, int level, int optname,
|
||||
char __user *optval, unsigned int optlen);
|
||||
extern int compat_sock_common_getsockopt(struct socket *sock, int level,
|
||||
int compat_sock_common_getsockopt(struct socket *sock, int level,
|
||||
int optname, char __user *optval, int __user *optlen);
|
||||
extern int compat_sock_common_setsockopt(struct socket *sock, int level,
|
||||
int compat_sock_common_setsockopt(struct socket *sock, int level,
|
||||
int optname, char __user *optval, unsigned int optlen);
|
||||
|
||||
extern void sk_common_release(struct sock *sk);
|
||||
void sk_common_release(struct sock *sk);
|
||||
|
||||
/*
|
||||
* Default socket callbacks and setup code
|
||||
*/
|
||||
|
||||
/* Initialise core socket variables */
|
||||
extern void sock_init_data(struct socket *sock, struct sock *sk);
|
||||
|
||||
extern void sk_filter_release_rcu(struct rcu_head *rcu);
|
||||
/* Initialise core socket variables */
|
||||
void sock_init_data(struct socket *sock, struct sock *sk);
|
||||
|
||||
void sk_filter_release_rcu(struct rcu_head *rcu);
|
||||
|
||||
/**
|
||||
* sk_filter_release - release a socket filter
|
||||
@@ -1570,8 +1549,7 @@ static inline void sock_put(struct sock *sk)
|
||||
sk_free(sk);
|
||||
}
|
||||
|
||||
extern int sk_receive_skb(struct sock *sk, struct sk_buff *skb,
|
||||
const int nested);
|
||||
int sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested);
|
||||
|
||||
static inline void sk_tx_queue_set(struct sock *sk, int tx_queue)
|
||||
{
|
||||
@@ -1621,12 +1599,18 @@ static inline void sock_graft(struct sock *sk, struct socket *parent)
|
||||
sk->sk_wq = parent->wq;
|
||||
parent->sk = sk;
|
||||
sk_set_socket(sk, parent);
|
||||
sk->sk_uid = SOCK_INODE(parent)->i_uid;
|
||||
security_sock_graft(sk, parent);
|
||||
write_unlock_bh(&sk->sk_callback_lock);
|
||||
}
|
||||
|
||||
extern int sock_i_uid(struct sock *sk);
|
||||
extern unsigned long sock_i_ino(struct sock *sk);
|
||||
int sock_i_uid(struct sock *sk);
|
||||
unsigned long sock_i_ino(struct sock *sk);
|
||||
|
||||
static inline kuid_t sock_net_uid(const struct net *net, const struct sock *sk)
|
||||
{
|
||||
return sk ? sk->sk_uid : make_kuid(net->user_ns, 0);
|
||||
}
|
||||
|
||||
static inline struct dst_entry *
|
||||
__sk_dst_get(struct sock *sk)
|
||||
@@ -1648,7 +1632,7 @@ sk_dst_get(struct sock *sk)
|
||||
return dst;
|
||||
}
|
||||
|
||||
extern void sk_reset_txq(struct sock *sk);
|
||||
void sk_reset_txq(struct sock *sk);
|
||||
|
||||
static inline void dst_negative_advice(struct sock *sk)
|
||||
{
|
||||
@@ -1701,16 +1685,16 @@ sk_dst_reset(struct sock *sk)
|
||||
spin_unlock(&sk->sk_dst_lock);
|
||||
}
|
||||
|
||||
extern struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie);
|
||||
struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie);
|
||||
|
||||
extern struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie);
|
||||
struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie);
|
||||
|
||||
static inline int sk_can_gso(const struct sock *sk)
|
||||
static inline bool sk_can_gso(const struct sock *sk)
|
||||
{
|
||||
return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type);
|
||||
}
|
||||
|
||||
extern void sk_setup_caps(struct sock *sk, struct dst_entry *dst);
|
||||
void sk_setup_caps(struct sock *sk, struct dst_entry *dst);
|
||||
|
||||
static inline void sk_nocaps_add(struct sock *sk, netdev_features_t flags)
|
||||
{
|
||||
@@ -1822,7 +1806,7 @@ static inline int sk_rmem_alloc_get(const struct sock *sk)
|
||||
*
|
||||
* Returns true if socket has write or read allocations
|
||||
*/
|
||||
static inline int sk_has_allocations(const struct sock *sk)
|
||||
static inline bool sk_has_allocations(const struct sock *sk)
|
||||
{
|
||||
return sk_wmem_alloc_get(sk) || sk_rmem_alloc_get(sk);
|
||||
}
|
||||
@@ -1861,9 +1845,7 @@ static inline int sk_has_allocations(const struct sock *sk)
|
||||
*/
|
||||
static inline bool wq_has_sleeper(struct socket_wq *wq)
|
||||
{
|
||||
|
||||
/*
|
||||
* We need to be sure we are in sync with the
|
||||
/* We need to be sure we are in sync with the
|
||||
* add_wait_queue modifications to the wait queue.
|
||||
*
|
||||
* This memory barrier is paired in the sock_poll_wait.
|
||||
@@ -1885,22 +1867,21 @@ static inline void sock_poll_wait(struct file *filp,
|
||||
{
|
||||
if (!poll_does_not_wait(p) && wait_address) {
|
||||
poll_wait(filp, wait_address, p);
|
||||
/*
|
||||
* We need to be sure we are in sync with the
|
||||
/* We need to be sure we are in sync with the
|
||||
* socket flags modification.
|
||||
*
|
||||
* This memory barrier is paired in the wq_has_sleeper.
|
||||
*/
|
||||
*/
|
||||
smp_mb();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Queue a received datagram if it will fit. Stream and sequenced
|
||||
* Queue a received datagram if it will fit. Stream and sequenced
|
||||
* protocols can't normally use this as they need to fit buffers in
|
||||
* and play with them.
|
||||
*
|
||||
* Inlined as it's very short and called for pretty much every
|
||||
* Inlined as it's very short and called for pretty much every
|
||||
* packet ever received.
|
||||
*/
|
||||
|
||||
@@ -1926,19 +1907,19 @@ static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk)
|
||||
sk_mem_charge(sk, skb->truesize);
|
||||
}
|
||||
|
||||
extern void sk_reset_timer(struct sock *sk, struct timer_list* timer,
|
||||
unsigned long expires);
|
||||
void sk_reset_timer(struct sock *sk, struct timer_list *timer,
|
||||
unsigned long expires);
|
||||
|
||||
extern void sk_stop_timer(struct sock *sk, struct timer_list* timer);
|
||||
void sk_stop_timer(struct sock *sk, struct timer_list *timer);
|
||||
|
||||
extern int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
|
||||
int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
|
||||
|
||||
extern int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb);
|
||||
int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb);
|
||||
|
||||
/*
|
||||
* Recover an error report and clear atomically
|
||||
*/
|
||||
|
||||
|
||||
static inline int sock_error(struct sock *sk)
|
||||
{
|
||||
int err;
|
||||
@@ -1954,7 +1935,7 @@ static inline unsigned long sock_wspace(struct sock *sk)
|
||||
|
||||
if (!(sk->sk_shutdown & SEND_SHUTDOWN)) {
|
||||
amt = sk->sk_sndbuf - atomic_read(&sk->sk_wmem_alloc);
|
||||
if (amt < 0)
|
||||
if (amt < 0)
|
||||
amt = 0;
|
||||
}
|
||||
return amt;
|
||||
@@ -1998,7 +1979,7 @@ static inline struct page *sk_stream_alloc_page(struct sock *sk)
|
||||
/*
|
||||
* Default write policy as shown to user space via poll/select/SIGIO
|
||||
*/
|
||||
static inline int sock_writeable(const struct sock *sk)
|
||||
static inline bool sock_writeable(const struct sock *sk)
|
||||
{
|
||||
return atomic_read(&sk->sk_wmem_alloc) < (sk->sk_sndbuf >> 1);
|
||||
}
|
||||
@@ -2008,12 +1989,12 @@ static inline gfp_t gfp_any(void)
|
||||
return in_softirq() ? GFP_ATOMIC : GFP_KERNEL;
|
||||
}
|
||||
|
||||
static inline long sock_rcvtimeo(const struct sock *sk, int noblock)
|
||||
static inline long sock_rcvtimeo(const struct sock *sk, bool noblock)
|
||||
{
|
||||
return noblock ? 0 : sk->sk_rcvtimeo;
|
||||
}
|
||||
|
||||
static inline long sock_sndtimeo(const struct sock *sk, int noblock)
|
||||
static inline long sock_sndtimeo(const struct sock *sk, bool noblock)
|
||||
{
|
||||
return noblock ? 0 : sk->sk_sndtimeo;
|
||||
}
|
||||
@@ -2031,12 +2012,12 @@ static inline int sock_intr_errno(long timeo)
|
||||
return timeo == MAX_SCHEDULE_TIMEOUT ? -ERESTARTSYS : -EINTR;
|
||||
}
|
||||
|
||||
extern void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
extern void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
|
||||
static __inline__ void
|
||||
static inline void
|
||||
sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
ktime_t kt = skb->tstamp;
|
||||
@@ -2067,8 +2048,8 @@ sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *skb)
|
||||
__sock_recv_wifi_status(msg, sk, skb);
|
||||
}
|
||||
|
||||
extern void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb);
|
||||
|
||||
static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
||||
struct sk_buff *skb)
|
||||
@@ -2077,7 +2058,7 @@ static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
||||
(1UL << SOCK_RCVTSTAMP) | \
|
||||
(1UL << SOCK_TIMESTAMPING_RX_SOFTWARE) | \
|
||||
(1UL << SOCK_TIMESTAMPING_SOFTWARE) | \
|
||||
(1UL << SOCK_TIMESTAMPING_RAW_HARDWARE) | \
|
||||
(1UL << SOCK_TIMESTAMPING_RAW_HARDWARE) | \
|
||||
(1UL << SOCK_TIMESTAMPING_SYS_HARDWARE))
|
||||
|
||||
if (sk->sk_flags & FLAGS_TS_OR_DROPS)
|
||||
@@ -2091,10 +2072,9 @@ static inline void sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
||||
* @sk: socket sending this packet
|
||||
* @tx_flags: filled with instructions for time stamping
|
||||
*
|
||||
* Currently only depends on SOCK_TIMESTAMPING* flags. Returns error code if
|
||||
* parameters are invalid.
|
||||
* Currently only depends on SOCK_TIMESTAMPING* flags.
|
||||
*/
|
||||
extern int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
|
||||
void sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
|
||||
|
||||
/**
|
||||
* sk_eat_skb - Release a skb if it is no longer needed
|
||||
@@ -2106,7 +2086,7 @@ extern int sock_tx_timestamp(struct sock *sk, __u8 *tx_flags);
|
||||
* locked so that the sk_buff queue operation is ok.
|
||||
*/
|
||||
#ifdef CONFIG_NET_DMA
|
||||
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_early)
|
||||
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, bool copied_early)
|
||||
{
|
||||
__skb_unlink(skb, &sk->sk_receive_queue);
|
||||
if (!copied_early)
|
||||
@@ -2115,7 +2095,7 @@ static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_e
|
||||
__skb_queue_tail(&sk->sk_async_wait_queue, skb);
|
||||
}
|
||||
#else
|
||||
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, int copied_early)
|
||||
static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb, bool copied_early)
|
||||
{
|
||||
__skb_unlink(skb, &sk->sk_receive_queue);
|
||||
__kfree_skb(skb);
|
||||
@@ -2158,12 +2138,21 @@ static inline struct sock *skb_steal_sock(struct sk_buff *skb)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extern void sock_enable_timestamp(struct sock *sk, int flag);
|
||||
extern int sock_get_timestamp(struct sock *, struct timeval __user *);
|
||||
extern int sock_get_timestampns(struct sock *, struct timespec __user *);
|
||||
/* This helper checks if a socket is a full socket,
|
||||
* ie _not_ a timewait or request socket.
|
||||
* TODO: Check for TCPF_NEW_SYN_RECV when that starts to exist.
|
||||
*/
|
||||
static inline bool sk_fullsock(const struct sock *sk)
|
||||
{
|
||||
return (1 << sk->sk_state) & ~(TCPF_TIME_WAIT);
|
||||
}
|
||||
|
||||
/*
|
||||
* Enable debug/info messages
|
||||
void sock_enable_timestamp(struct sock *sk, int flag);
|
||||
int sock_get_timestamp(struct sock *, struct timeval __user *);
|
||||
int sock_get_timestampns(struct sock *, struct timespec __user *);
|
||||
|
||||
/*
|
||||
* Enable debug/info messages
|
||||
*/
|
||||
extern int net_msg_warn;
|
||||
#define NETDEBUG(fmt, args...) \
|
||||
@@ -2175,7 +2164,7 @@ extern int net_msg_warn;
|
||||
extern __u32 sysctl_wmem_max;
|
||||
extern __u32 sysctl_rmem_max;
|
||||
|
||||
extern void sk_init(void);
|
||||
void sk_init(void);
|
||||
|
||||
extern int sysctl_optmem_max;
|
||||
|
||||
|
||||
+6
-2
@@ -514,6 +514,10 @@ long compat_sys_msgctl(int first, int second, void __user *uptr)
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifndef COMPAT_SHMLBA
|
||||
#define COMPAT_SHMLBA SHMLBA
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_WANT_OLD_COMPAT_IPC
|
||||
long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
|
||||
void __user *uptr)
|
||||
@@ -524,7 +528,7 @@ long compat_sys_shmat(int first, int second, compat_uptr_t third, int version,
|
||||
|
||||
if (version == 1)
|
||||
return -EINVAL;
|
||||
err = do_shmat(first, uptr, second, &raddr);
|
||||
err = do_shmat(first, uptr, second, &raddr, COMPAT_SHMLBA);
|
||||
if (err < 0)
|
||||
return err;
|
||||
uaddr = compat_ptr(third);
|
||||
@@ -536,7 +540,7 @@ long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmflg)
|
||||
unsigned long ret;
|
||||
long err;
|
||||
|
||||
err = do_shmat(shmid, compat_ptr(shmaddr), shmflg, &ret);
|
||||
err = do_shmat(shmid, compat_ptr(shmaddr), shmflg, &ret, COMPAT_SHMLBA);
|
||||
if (err)
|
||||
return err;
|
||||
force_successful_syscall_return();
|
||||
|
||||
@@ -944,7 +944,8 @@ out:
|
||||
* "raddr" thing points to kernel space, and there has to be a wrapper around
|
||||
* this.
|
||||
*/
|
||||
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
|
||||
long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr,
|
||||
unsigned long shmlba)
|
||||
{
|
||||
struct shmid_kernel *shp;
|
||||
unsigned long addr;
|
||||
@@ -964,14 +965,14 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, ulong *raddr)
|
||||
if (shmid < 0)
|
||||
goto out;
|
||||
else if ((addr = (ulong)shmaddr)) {
|
||||
if (addr & (SHMLBA-1)) {
|
||||
if (addr & (shmlba - 1)) {
|
||||
/*
|
||||
* Round down to the nearest multiple of shmlba.
|
||||
* For sane do_mmap_pgoff() parameters, avoid
|
||||
* round downs that trigger nil-page and MAP_FIXED.
|
||||
*/
|
||||
if ((shmflg & SHM_RND) && addr >= SHMLBA)
|
||||
addr &= ~(SHMLBA - 1);
|
||||
if ((shmflg & SHM_RND) && addr >= shmlba)
|
||||
addr &= ~(shmlba - 1);
|
||||
else
|
||||
#ifndef __ARCH_FORCE_SHMLBA
|
||||
if (addr & ~PAGE_MASK)
|
||||
@@ -1098,7 +1099,7 @@ SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg)
|
||||
unsigned long ret;
|
||||
long err;
|
||||
|
||||
err = do_shmat(shmid, shmaddr, shmflg, &ret);
|
||||
err = do_shmat(shmid, shmaddr, shmflg, &ret, SHMLBA);
|
||||
if (err)
|
||||
return err;
|
||||
force_successful_syscall_return();
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second,
|
||||
default: {
|
||||
unsigned long raddr;
|
||||
ret = do_shmat(first, (char __user *)ptr,
|
||||
second, &raddr);
|
||||
second, &raddr, SHMLBA);
|
||||
if (ret)
|
||||
return ret;
|
||||
return put_user(raddr, (unsigned long __user *) third);
|
||||
|
||||
+37
-20
@@ -354,6 +354,9 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
|
||||
*/
|
||||
down_write_nested(&mm->mmap_sem, SINGLE_DEPTH_NESTING);
|
||||
|
||||
/* No ordering required: file already has been exposed. */
|
||||
RCU_INIT_POINTER(mm->exe_file, get_mm_exe_file(oldmm));
|
||||
|
||||
mm->locked_vm = 0;
|
||||
mm->mmap = NULL;
|
||||
mm->mmap_cache = NULL;
|
||||
@@ -484,7 +487,13 @@ static inline void mm_free_pgd(struct mm_struct *mm)
|
||||
pgd_free(mm, mm->pgd);
|
||||
}
|
||||
#else
|
||||
#define dup_mmap(mm, oldmm) (0)
|
||||
static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
|
||||
{
|
||||
down_write(&oldmm->mmap_sem);
|
||||
RCU_INIT_POINTER(mm->exe_file, get_mm_exe_file(oldmm));
|
||||
up_write(&oldmm->mmap_sem);
|
||||
return 0;
|
||||
}
|
||||
#define mm_alloc_pgd(mm) (0)
|
||||
#define mm_free_pgd(mm)
|
||||
#endif /* CONFIG_MMU */
|
||||
@@ -640,37 +649,47 @@ void removed_exe_file_vma(struct mm_struct *mm)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* set_mm_exe_file - change a reference to the mm's executable file
|
||||
*
|
||||
* This changes mm's executable file (shown as symlink /proc/[pid]/exe).
|
||||
*
|
||||
* Main users are mmput(), sys_execve() and sys_prctl(PR_SET_MM_MAP/EXE_FILE).
|
||||
* Callers prevent concurrent invocations: in mmput() nobody alive left,
|
||||
* in execve task is single-threaded, prctl holds mmap_sem exclusively.
|
||||
*/
|
||||
void set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)
|
||||
{
|
||||
struct file *old_exe_file = rcu_dereference_protected(mm->exe_file,
|
||||
!atomic_read(&mm->mm_users) || current->in_execve ||
|
||||
lockdep_is_held(&mm->mmap_sem));
|
||||
|
||||
if (new_exe_file)
|
||||
get_file(new_exe_file);
|
||||
if (mm->exe_file)
|
||||
fput(mm->exe_file);
|
||||
mm->exe_file = new_exe_file;
|
||||
rcu_assign_pointer(mm->exe_file, new_exe_file);
|
||||
if (old_exe_file)
|
||||
fput(old_exe_file);
|
||||
mm->num_exe_file_vmas = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* get_mm_exe_file - acquire a reference to the mm's executable file
|
||||
*
|
||||
* Returns %NULL if mm has no associated executable file.
|
||||
* User must release file via fput().
|
||||
*/
|
||||
struct file *get_mm_exe_file(struct mm_struct *mm)
|
||||
{
|
||||
struct file *exe_file;
|
||||
|
||||
/* We need mmap_sem to protect against races with removal of
|
||||
* VM_EXECUTABLE vmas */
|
||||
down_read(&mm->mmap_sem);
|
||||
exe_file = mm->exe_file;
|
||||
if (exe_file)
|
||||
get_file(exe_file);
|
||||
up_read(&mm->mmap_sem);
|
||||
rcu_read_lock();
|
||||
exe_file = rcu_dereference(mm->exe_file);
|
||||
if (exe_file && !get_file_rcu(exe_file))
|
||||
exe_file = NULL;
|
||||
rcu_read_unlock();
|
||||
return exe_file;
|
||||
}
|
||||
|
||||
static void dup_mm_exe_file(struct mm_struct *oldmm, struct mm_struct *newmm)
|
||||
{
|
||||
/* It's safe to write the exe_file pointer without exe_file_lock because
|
||||
* this is called during fork when the task is not yet in /proc */
|
||||
newmm->exe_file = get_mm_exe_file(oldmm);
|
||||
}
|
||||
|
||||
/**
|
||||
* get_task_mm - acquire a reference to the task's mm
|
||||
*
|
||||
@@ -837,8 +856,6 @@ struct mm_struct *dup_mm(struct task_struct *tsk)
|
||||
if (init_new_context(tsk, mm))
|
||||
goto fail_nocontext;
|
||||
|
||||
dup_mm_exe_file(oldmm, mm);
|
||||
|
||||
err = dup_mmap(mm, oldmm);
|
||||
if (err)
|
||||
goto free_pt;
|
||||
|
||||
+17
-7
@@ -323,22 +323,24 @@ EXPORT_SYMBOL_GPL(ktime_sub_ns);
|
||||
/*
|
||||
* Divide a ktime value by a nanosecond value
|
||||
*/
|
||||
u64 ktime_divns(const ktime_t kt, s64 div)
|
||||
s64 __ktime_divns(const ktime_t kt, s64 div)
|
||||
{
|
||||
u64 dclc;
|
||||
int sft = 0;
|
||||
s64 dclc;
|
||||
u64 tmp;
|
||||
|
||||
dclc = ktime_to_ns(kt);
|
||||
tmp = dclc < 0 ? -dclc : dclc;
|
||||
/* Make sure the divisor is less than 2^32: */
|
||||
while (div >> 32) {
|
||||
sft++;
|
||||
div >>= 1;
|
||||
}
|
||||
dclc >>= sft;
|
||||
do_div(dclc, (unsigned long) div);
|
||||
|
||||
return dclc;
|
||||
tmp >>= sft;
|
||||
do_div(tmp, (unsigned long) div);
|
||||
return dclc < 0 ? -tmp : tmp;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__ktime_divns);
|
||||
#endif /* BITS_PER_LONG >= 64 */
|
||||
|
||||
/*
|
||||
@@ -469,6 +471,7 @@ void destroy_hrtimer_on_stack(struct hrtimer *timer)
|
||||
{
|
||||
debug_object_free(timer, &hrtimer_debug_descr);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(destroy_hrtimer_on_stack);
|
||||
|
||||
#else
|
||||
static inline void debug_hrtimer_init(struct hrtimer *timer) { }
|
||||
@@ -661,6 +664,7 @@ static int hrtimer_reprogram(struct hrtimer *timer,
|
||||
static inline void hrtimer_init_hres(struct hrtimer_cpu_base *base)
|
||||
{
|
||||
base->expires_next.tv64 = KTIME_MAX;
|
||||
base->hang_detected = 0;
|
||||
base->hres_active = 0;
|
||||
}
|
||||
|
||||
@@ -1164,7 +1168,12 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id,
|
||||
|
||||
cpu_base = &__raw_get_cpu_var(hrtimer_bases);
|
||||
|
||||
if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS)
|
||||
/*
|
||||
* POSIX magic: Relative CLOCK_REALTIME timers are not affected by
|
||||
* clock modifications, so they needs to become CLOCK_MONOTONIC to
|
||||
* ensure POSIX compliance.
|
||||
*/
|
||||
if (clock_id == CLOCK_REALTIME && mode & HRTIMER_MODE_REL)
|
||||
clock_id = CLOCK_MONOTONIC;
|
||||
|
||||
base = hrtimer_clockid_to_base(clock_id);
|
||||
@@ -1650,6 +1659,7 @@ static void __cpuinit init_hrtimers_cpu(int cpu)
|
||||
timerqueue_init_head(&cpu_base->clock_base[i].active);
|
||||
}
|
||||
|
||||
cpu_base->active_bases = 0;
|
||||
hrtimer_init_hres(cpu_base);
|
||||
}
|
||||
|
||||
|
||||
@@ -646,6 +646,15 @@ static int alarm_timer_set(struct k_itimer *timr, int flags,
|
||||
|
||||
/* start the timer */
|
||||
timr->it.alarm.interval = timespec_to_ktime(new_setting->it_interval);
|
||||
|
||||
/*
|
||||
* Rate limit to the tick as a hot fix to prevent DOS. Will be
|
||||
* mopped up later.
|
||||
*/
|
||||
if (timr->it.alarm.interval.tv64 &&
|
||||
ktime_to_ns(timr->it.alarm.interval) < TICK_NSEC)
|
||||
timr->it.alarm.interval = ktime_set(0, TICK_NSEC);
|
||||
|
||||
exp = timespec_to_ktime(new_setting->it_value);
|
||||
/* Convert (if necessary) to absolute time */
|
||||
if (flags != TIMER_ABSTIME) {
|
||||
|
||||
+2
-3
@@ -677,9 +677,8 @@ static int raw_sendmsg(struct kiocb *iocb, struct socket *sock,
|
||||
err = memcpy_fromiovec(skb_put(skb, size), msg->msg_iov, size);
|
||||
if (err < 0)
|
||||
goto free_skb;
|
||||
err = sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
|
||||
if (err < 0)
|
||||
goto free_skb;
|
||||
|
||||
sock_tx_timestamp(sk, &skb_shinfo(skb)->tx_flags);
|
||||
|
||||
skb->dev = dev;
|
||||
skb->sk = sk;
|
||||
|
||||
+7
-3
@@ -1742,20 +1742,21 @@ static void __release_sock(struct sock *sk)
|
||||
* sk_wait_data - wait for data to arrive at sk_receive_queue
|
||||
* @sk: sock to wait on
|
||||
* @timeo: for how long
|
||||
* @skb: last skb seen on sk_receive_queue
|
||||
*
|
||||
* Now socket state including sk->sk_err is changed only under lock,
|
||||
* hence we may omit checks after joining wait queue.
|
||||
* We check receive queue before schedule() only as optimization;
|
||||
* it is very likely that release_sock() added new data.
|
||||
*/
|
||||
int sk_wait_data(struct sock *sk, long *timeo)
|
||||
int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb)
|
||||
{
|
||||
int rc;
|
||||
DEFINE_WAIT(wait);
|
||||
|
||||
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
|
||||
set_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
|
||||
rc = sk_wait_event(sk, timeo, !skb_queue_empty(&sk->sk_receive_queue));
|
||||
rc = sk_wait_event(sk, timeo, skb_peek_tail(&sk->sk_receive_queue) != skb);
|
||||
clear_bit(SOCK_ASYNC_WAITDATA, &sk->sk_socket->flags);
|
||||
finish_wait(sk_sleep(sk), &wait);
|
||||
return rc;
|
||||
@@ -2095,8 +2096,11 @@ void sock_init_data(struct socket *sock, struct sock *sk)
|
||||
sk->sk_type = sock->type;
|
||||
sk->sk_wq = sock->wq;
|
||||
sock->sk = sk;
|
||||
} else
|
||||
sk->sk_uid = SOCK_INODE(sock)->i_uid;
|
||||
} else {
|
||||
sk->sk_wq = NULL;
|
||||
sk->sk_uid = make_kuid(sock_net(sk)->user_ns, 0);
|
||||
}
|
||||
|
||||
spin_lock_init(&sk->sk_dst_lock);
|
||||
rwlock_init(&sk->sk_callback_lock);
|
||||
|
||||
@@ -68,11 +68,13 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||
|
||||
sock = (struct socket *)data;
|
||||
if (!socknlmsgsk || !sock)
|
||||
goto done;
|
||||
goto sk_null;
|
||||
|
||||
sk = sock->sk;
|
||||
if (!sk)
|
||||
goto done;
|
||||
goto sk_null;
|
||||
|
||||
sock_hold(sk);
|
||||
|
||||
skb = nlmsg_new(sizeof(struct sknlsockevmsg), GFP_KERNEL);
|
||||
if (skb == NULL)
|
||||
@@ -96,6 +98,8 @@ static int sockev_client_cb(struct notifier_block *nb,
|
||||
smsg->skflags = sk->sk_flags;
|
||||
nlmsg_notify(socknlmsgsk, skb, 0, SKNLGRP_SOCKEV, 0, GFP_KERNEL);
|
||||
done:
|
||||
sock_put(sk);
|
||||
sk_null:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -165,6 +165,8 @@ static void dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
} else
|
||||
dst_hold(dst);
|
||||
|
||||
dst->ops->update_pmtu(dst, ntohl(info));
|
||||
|
||||
if (inet_csk(sk)->icsk_pmtu_cookie > dst_mtu(dst)) {
|
||||
dccp_sync_mss(sk, dst_mtu(dst));
|
||||
} /* else let the usual retransmit timer handle it */
|
||||
|
||||
+3
-3
@@ -848,7 +848,7 @@ int dccp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
default:
|
||||
dccp_pr_debug("packet_type=%s\n",
|
||||
dccp_packet_name(dh->dccph_type));
|
||||
sk_eat_skb(sk, skb, 0);
|
||||
sk_eat_skb(sk, skb, false);
|
||||
}
|
||||
verify_sock_status:
|
||||
if (sock_flag(sk, SOCK_DONE)) {
|
||||
@@ -888,7 +888,7 @@ verify_sock_status:
|
||||
break;
|
||||
}
|
||||
|
||||
sk_wait_data(sk, &timeo);
|
||||
sk_wait_data(sk, &timeo, NULL);
|
||||
continue;
|
||||
found_ok_skb:
|
||||
if (len > skb->len)
|
||||
@@ -905,7 +905,7 @@ verify_sock_status:
|
||||
len = skb->len;
|
||||
found_fin_ok:
|
||||
if (!(flags & MSG_PEEK))
|
||||
sk_eat_skb(sk, skb, 0);
|
||||
sk_eat_skb(sk, skb, false);
|
||||
break;
|
||||
} while (1);
|
||||
out:
|
||||
|
||||
@@ -361,6 +361,7 @@ static void icmp_reply(struct icmp_bxm *icmp_param, struct sk_buff *skb)
|
||||
fl4.daddr = daddr;
|
||||
fl4.saddr = rt->rt_spec_dst;
|
||||
fl4.flowi4_mark = mark;
|
||||
fl4.flowi4_uid = sock_net_uid(net, NULL);
|
||||
fl4.flowi4_tos = RT_TOS(ip_hdr(skb)->tos);
|
||||
fl4.flowi4_proto = IPPROTO_ICMP;
|
||||
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
|
||||
@@ -392,6 +393,7 @@ static struct rtable *icmp_route_lookup(struct net *net,
|
||||
param->replyopts.opt.opt.faddr : iph->saddr);
|
||||
fl4->saddr = saddr;
|
||||
fl4->flowi4_mark = mark;
|
||||
fl4->flowi4_uid = sock_net_uid(net, NULL);
|
||||
fl4->flowi4_tos = RT_TOS(tos);
|
||||
fl4->flowi4_proto = IPPROTO_ICMP;
|
||||
fl4->fl4_icmp_type = type;
|
||||
|
||||
@@ -365,7 +365,8 @@ struct dst_entry *inet_csk_route_req(struct sock *sk,
|
||||
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
|
||||
sk->sk_protocol, inet_sk_flowi_flags(sk),
|
||||
(opt && opt->opt.srr) ? opt->opt.faddr : ireq->rmt_addr,
|
||||
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport);
|
||||
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport,
|
||||
sk->sk_uid);
|
||||
security_req_classify_flow(req, flowi4_to_flowi(fl4));
|
||||
rt = ip_route_output_flow(net, fl4, sk);
|
||||
if (IS_ERR(rt))
|
||||
@@ -398,7 +399,8 @@ struct dst_entry *inet_csk_route_child_sock(struct sock *sk,
|
||||
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE,
|
||||
sk->sk_protocol, inet_sk_flowi_flags(sk),
|
||||
(opt && opt->opt.srr) ? opt->opt.faddr : ireq->rmt_addr,
|
||||
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport);
|
||||
ireq->loc_addr, ireq->rmt_port, inet_sk(sk)->inet_sport,
|
||||
sk->sk_uid);
|
||||
security_req_classify_flow(req, flowi4_to_flowi(fl4));
|
||||
rt = ip_route_output_flow(net, fl4, sk);
|
||||
if (IS_ERR(rt))
|
||||
|
||||
@@ -1511,7 +1511,8 @@ void ip_send_reply(struct sock *sk, struct sk_buff *skb, __be32 daddr,
|
||||
RT_SCOPE_UNIVERSE, sk->sk_protocol,
|
||||
ip_reply_arg_flowi_flags(arg),
|
||||
daddr, rt->rt_spec_dst,
|
||||
tcp_hdr(skb)->source, tcp_hdr(skb)->dest);
|
||||
tcp_hdr(skb)->source, tcp_hdr(skb)->dest,
|
||||
arg->uid);
|
||||
security_skb_classify_flow(skb, flowi4_to_flowi(&fl4));
|
||||
rt = ip_route_output_key(sock_net(sk), &fl4);
|
||||
if (IS_ERR(rt))
|
||||
|
||||
+17
-7
@@ -1211,6 +1211,10 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
|
||||
struct net *net = sock_net(sk);
|
||||
struct mr_table *mrt;
|
||||
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT);
|
||||
if (mrt == NULL)
|
||||
return -ENOENT;
|
||||
@@ -1223,11 +1227,8 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
|
||||
|
||||
switch (optname) {
|
||||
case MRT_INIT:
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
|
||||
return -EOPNOTSUPP;
|
||||
if (optlen != sizeof(int))
|
||||
return -ENOPROTOOPT;
|
||||
return -EINVAL;
|
||||
|
||||
rtnl_lock();
|
||||
if (rtnl_dereference(mrt->mroute_sk)) {
|
||||
@@ -1288,9 +1289,11 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
|
||||
case MRT_ASSERT:
|
||||
{
|
||||
int v;
|
||||
if (optlen != sizeof(v))
|
||||
return -EINVAL;
|
||||
if (get_user(v, (int __user *)optval))
|
||||
return -EFAULT;
|
||||
mrt->mroute_do_assert = (v) ? 1 : 0;
|
||||
mrt->mroute_do_assert = !!v;
|
||||
return 0;
|
||||
}
|
||||
#ifdef CONFIG_IP_PIMSM
|
||||
@@ -1298,9 +1301,11 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
|
||||
{
|
||||
int v;
|
||||
|
||||
if (optlen != sizeof(v))
|
||||
return -EINVAL;
|
||||
if (get_user(v, (int __user *)optval))
|
||||
return -EFAULT;
|
||||
v = (v) ? 1 : 0;
|
||||
v = !!v;
|
||||
|
||||
rtnl_lock();
|
||||
ret = 0;
|
||||
@@ -1329,7 +1334,8 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
|
||||
} else {
|
||||
if (!ipmr_new_table(net, v))
|
||||
ret = -ENOMEM;
|
||||
raw_sk(sk)->ipmr_table = v;
|
||||
else
|
||||
raw_sk(sk)->ipmr_table = v;
|
||||
}
|
||||
rtnl_unlock();
|
||||
return ret;
|
||||
@@ -1355,6 +1361,10 @@ int ip_mroute_getsockopt(struct sock *sk, int optname, char __user *optval, int
|
||||
struct net *net = sock_net(sk);
|
||||
struct mr_table *mrt;
|
||||
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_IGMP)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mrt = ipmr_get_table(net, raw_sk(sk)->ipmr_table ? : RT_TABLE_DEFAULT);
|
||||
if (mrt == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
+4
-4
@@ -737,9 +737,8 @@ int ping_v4_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
ipc.opt = NULL;
|
||||
ipc.oif = sk->sk_bound_dev_if;
|
||||
ipc.tx_flags = 0;
|
||||
err = sock_tx_timestamp(sk, &ipc.tx_flags);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
sock_tx_timestamp(sk, &ipc.tx_flags);
|
||||
|
||||
if (msg->msg_controllen) {
|
||||
err = ip_cmsg_send(sock_net(sk), msg, &ipc);
|
||||
@@ -786,7 +785,8 @@ int ping_v4_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
flowi4_init_output(&fl4, ipc.oif, sk->sk_mark, tos,
|
||||
RT_SCOPE_UNIVERSE, sk->sk_protocol,
|
||||
inet_sk_flowi_flags(sk), faddr, saddr, 0, 0);
|
||||
inet_sk_flowi_flags(sk), faddr, saddr, 0, 0,
|
||||
sk->sk_uid);
|
||||
|
||||
security_sk_classify_flow(sk, flowi4_to_flowi(&fl4));
|
||||
rt = ip_route_output_flow(net, &fl4, sk);
|
||||
|
||||
+1
-1
@@ -594,7 +594,7 @@ static int raw_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
RT_SCOPE_UNIVERSE,
|
||||
hdrincl ? IPPROTO_RAW : sk->sk_protocol,
|
||||
inet_sk_flowi_flags(sk) | FLOWI_FLAG_CAN_SLEEP,
|
||||
daddr, saddr, 0, 0);
|
||||
daddr, saddr, 0, 0, sk->sk_uid);
|
||||
|
||||
if (!hdrincl) {
|
||||
rfv.iov = msg->msg_iov;
|
||||
|
||||
@@ -352,7 +352,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb,
|
||||
RT_CONN_FLAGS(sk), RT_SCOPE_UNIVERSE, IPPROTO_TCP,
|
||||
inet_sk_flowi_flags(sk),
|
||||
(opt && opt->srr) ? opt->faddr : ireq->rmt_addr,
|
||||
ireq->loc_addr, th->source, th->dest);
|
||||
ireq->loc_addr, th->source, th->dest, sk->sk_uid);
|
||||
security_req_classify_flow(req, flowi4_to_flowi(&fl4));
|
||||
rt = ip_route_output_key(sock_net(sk), &fl4);
|
||||
if (IS_ERR(rt)) {
|
||||
|
||||
+13
-10
@@ -675,7 +675,7 @@ ssize_t tcp_splice_read(struct socket *sock, loff_t *ppos,
|
||||
*/
|
||||
if (!skb_queue_empty(&sk->sk_receive_queue))
|
||||
break;
|
||||
sk_wait_data(sk, &timeo);
|
||||
sk_wait_data(sk, &timeo, NULL);
|
||||
if (signal_pending(current)) {
|
||||
ret = sock_intr_errno(timeo);
|
||||
break;
|
||||
@@ -1397,11 +1397,11 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,
|
||||
break;
|
||||
}
|
||||
if (tcp_hdr(skb)->fin) {
|
||||
sk_eat_skb(sk, skb, 0);
|
||||
sk_eat_skb(sk, skb, false);
|
||||
++seq;
|
||||
break;
|
||||
}
|
||||
sk_eat_skb(sk, skb, 0);
|
||||
sk_eat_skb(sk, skb, false);
|
||||
if (!desc->count)
|
||||
break;
|
||||
tp->copied_seq = seq;
|
||||
@@ -1440,8 +1440,8 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
int target; /* Read at least this many bytes */
|
||||
long timeo;
|
||||
struct task_struct *user_recv = NULL;
|
||||
int copied_early = 0;
|
||||
struct sk_buff *skb;
|
||||
bool copied_early = false;
|
||||
struct sk_buff *skb, *last;
|
||||
u32 urg_hole = 0;
|
||||
|
||||
lock_sock(sk);
|
||||
@@ -1501,7 +1501,9 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
|
||||
/* Next get a buffer. */
|
||||
|
||||
last = skb_peek_tail(&sk->sk_receive_queue);
|
||||
skb_queue_walk(&sk->sk_receive_queue, skb) {
|
||||
last = skb;
|
||||
/* Now that we have two receive queues this
|
||||
* shouldn't happen.
|
||||
*/
|
||||
@@ -1630,8 +1632,9 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
/* Do not sleep, just process backlog. */
|
||||
release_sock(sk);
|
||||
lock_sock(sk);
|
||||
} else
|
||||
sk_wait_data(sk, &timeo);
|
||||
} else {
|
||||
sk_wait_data(sk, &timeo, last);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_DMA
|
||||
tcp_service_net_dma(sk, false); /* Don't block */
|
||||
@@ -1719,7 +1722,7 @@ do_prequeue:
|
||||
dma_async_memcpy_issue_pending(tp->ucopy.dma_chan);
|
||||
|
||||
if ((offset + used) == skb->len)
|
||||
copied_early = 1;
|
||||
copied_early = true;
|
||||
|
||||
} else
|
||||
#endif
|
||||
@@ -1753,7 +1756,7 @@ skip_copy:
|
||||
goto found_fin_ok;
|
||||
if (!(flags & MSG_PEEK)) {
|
||||
sk_eat_skb(sk, skb, copied_early);
|
||||
copied_early = 0;
|
||||
copied_early = false;
|
||||
}
|
||||
continue;
|
||||
|
||||
@@ -1762,7 +1765,7 @@ skip_copy:
|
||||
++*seq;
|
||||
if (!(flags & MSG_PEEK)) {
|
||||
sk_eat_skb(sk, skb, copied_early);
|
||||
copied_early = 0;
|
||||
copied_early = false;
|
||||
}
|
||||
break;
|
||||
} while (len > 0);
|
||||
|
||||
+9
-6
@@ -628,6 +628,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
|
||||
arg.iov[0].iov_base = (unsigned char *)&rep;
|
||||
arg.iov[0].iov_len = sizeof(rep.th);
|
||||
|
||||
net = sk ? sock_net(sk) : dev_net(skb_dst(skb)->dev);
|
||||
#ifdef CONFIG_TCP_MD5SIG
|
||||
hash_location = tcp_parse_md5sig_option(th);
|
||||
if (!sk && hash_location) {
|
||||
@@ -638,7 +639,7 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
|
||||
* Incoming packet is checked with md5 hash with finding key,
|
||||
* no RST generated if md5 hash doesn't match.
|
||||
*/
|
||||
sk1 = __inet_lookup_listener(dev_net(skb_dst(skb)->dev),
|
||||
sk1 = __inet_lookup_listener(net,
|
||||
&tcp_hashinfo, ip_hdr(skb)->daddr,
|
||||
ntohs(th->source), inet_iif(skb));
|
||||
/* don't send rst if it can't find key */
|
||||
@@ -685,8 +686,8 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb)
|
||||
if (sk)
|
||||
arg.bound_dev_if = sk->sk_bound_dev_if;
|
||||
|
||||
net = dev_net(skb_dst(skb)->dev);
|
||||
arg.tos = ip_hdr(skb)->tos;
|
||||
arg.uid = sock_net_uid(net, sk && sk_fullsock(sk) ? sk : NULL);
|
||||
ip_send_reply(net->ipv4.tcp_sock, skb, ip_hdr(skb)->saddr,
|
||||
&arg, arg.iov[0].iov_len);
|
||||
|
||||
@@ -706,7 +707,8 @@ release_sk1:
|
||||
outside socket context is ugly, certainly. What can I do?
|
||||
*/
|
||||
|
||||
static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
|
||||
static void tcp_v4_send_ack(const struct sock *sk, struct sk_buff *skb,
|
||||
u32 seq, u32 ack,
|
||||
u32 win, u32 ts, int oif,
|
||||
struct tcp_md5sig_key *key,
|
||||
int reply_flags, u8 tos)
|
||||
@@ -721,7 +723,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
|
||||
];
|
||||
} rep;
|
||||
struct ip_reply_arg arg;
|
||||
struct net *net = dev_net(skb_dst(skb)->dev);
|
||||
struct net *net = sock_net(sk);
|
||||
|
||||
memset(&rep.th, 0, sizeof(struct tcphdr));
|
||||
memset(&arg, 0, sizeof(arg));
|
||||
@@ -770,6 +772,7 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
|
||||
if (oif)
|
||||
arg.bound_dev_if = oif;
|
||||
arg.tos = tos;
|
||||
arg.uid = sock_net_uid(net, sk_fullsock(sk) ? sk : NULL);
|
||||
ip_send_reply(net->ipv4.tcp_sock, skb, ip_hdr(skb)->saddr,
|
||||
&arg, arg.iov[0].iov_len);
|
||||
|
||||
@@ -781,7 +784,7 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb)
|
||||
struct inet_timewait_sock *tw = inet_twsk(sk);
|
||||
struct tcp_timewait_sock *tcptw = tcp_twsk(sk);
|
||||
|
||||
tcp_v4_send_ack(skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
|
||||
tcp_v4_send_ack(sk, skb, tcptw->tw_snd_nxt, tcptw->tw_rcv_nxt,
|
||||
tcptw->tw_rcv_wnd >> tw->tw_rcv_wscale,
|
||||
tcptw->tw_ts_recent,
|
||||
tw->tw_bound_dev_if,
|
||||
@@ -796,7 +799,7 @@ static void tcp_v4_timewait_ack(struct sock *sk, struct sk_buff *skb)
|
||||
static void tcp_v4_reqsk_send_ack(struct sock *sk, struct sk_buff *skb,
|
||||
struct request_sock *req)
|
||||
{
|
||||
tcp_v4_send_ack(skb, tcp_rsk(req)->snt_isn + 1,
|
||||
tcp_v4_send_ack(sk, skb, tcp_rsk(req)->snt_isn + 1,
|
||||
tcp_rsk(req)->rcv_isn + 1, req->rcv_wnd,
|
||||
req->ts_recent,
|
||||
0,
|
||||
|
||||
+5
-4
@@ -872,9 +872,9 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
ipc.addr = inet->inet_saddr;
|
||||
|
||||
ipc.oif = sk->sk_bound_dev_if;
|
||||
err = sock_tx_timestamp(sk, &ipc.tx_flags);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
sock_tx_timestamp(sk, &ipc.tx_flags);
|
||||
|
||||
if (msg->msg_controllen) {
|
||||
err = ip_cmsg_send(sock_net(sk), msg, &ipc);
|
||||
if (err)
|
||||
@@ -932,7 +932,8 @@ int udp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
|
||||
flowi4_init_output(fl4, ipc.oif, sk->sk_mark, tos,
|
||||
RT_SCOPE_UNIVERSE, sk->sk_protocol,
|
||||
inet_sk_flowi_flags(sk)|FLOWI_FLAG_CAN_SLEEP,
|
||||
faddr, saddr, dport, inet->inet_sport);
|
||||
faddr, saddr, dport, inet->inet_sport,
|
||||
sk->sk_uid);
|
||||
|
||||
security_sk_classify_flow(sk, flowi4_to_flowi(fl4));
|
||||
rt = ip_route_output_flow(net, fl4, sk);
|
||||
|
||||
@@ -711,6 +711,7 @@ int inet6_sk_rebuild_header(struct sock *sk)
|
||||
fl6.flowi6_mark = sk->sk_mark;
|
||||
fl6.fl6_dport = inet->inet_dport;
|
||||
fl6.fl6_sport = inet->inet_sport;
|
||||
fl6.flowi6_uid = sk->sk_uid;
|
||||
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
+2
-1
@@ -33,6 +33,7 @@
|
||||
#include <linux/pfkeyv2.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/scatterlist.h>
|
||||
#include <net/ip6_route.h>
|
||||
#include <net/icmp.h>
|
||||
#include <net/ipv6.h>
|
||||
#include <net/protocol.h>
|
||||
@@ -619,7 +620,7 @@ static void ah6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
|
||||
NETDEBUG(KERN_DEBUG "pmtu discovery on SA AH/%08x/%pI6\n",
|
||||
ntohl(ah->spi), &iph->daddr);
|
||||
|
||||
ip6_update_pmtu(skb, net, info, 0, 0, sock_net_uid(net, NULL));
|
||||
xfrm_state_put(x);
|
||||
}
|
||||
|
||||
|
||||
@@ -160,6 +160,7 @@ ipv4_connected:
|
||||
fl6.flowi6_mark = sk->sk_mark;
|
||||
fl6.fl6_dport = inet->inet_dport;
|
||||
fl6.fl6_sport = inet->inet_sport;
|
||||
fl6.flowi6_uid = sk->sk_uid;
|
||||
|
||||
if (!fl6.flowi6_oif && (addr_type&IPV6_ADDR_MULTICAST))
|
||||
fl6.flowi6_oif = np->mcast_oif;
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/random.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <net/ip6_route.h>
|
||||
#include <net/icmp.h>
|
||||
#include <net/ipv6.h>
|
||||
#include <net/protocol.h>
|
||||
@@ -440,6 +441,7 @@ static void esp6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
|
||||
return;
|
||||
printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%pI6\n",
|
||||
ntohl(esph->spi), &iph->daddr);
|
||||
ip6_update_pmtu(skb, net, info, 0, 0, sock_net_uid(net, NULL));
|
||||
xfrm_state_put(x);
|
||||
}
|
||||
|
||||
|
||||
+3
-5
@@ -466,6 +466,7 @@ void icmpv6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
|
||||
fl6.flowi6_oif = iif;
|
||||
fl6.fl6_icmp_type = type;
|
||||
fl6.fl6_icmp_code = code;
|
||||
fl6.flowi6_uid = sock_net_uid(net, NULL);
|
||||
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
|
||||
|
||||
sk = icmpv6_xmit_lock(net);
|
||||
@@ -564,6 +565,7 @@ static void icmpv6_echo_reply(struct sk_buff *skb)
|
||||
fl6.flowi6_oif = skb->dev->ifindex;
|
||||
fl6.fl6_icmp_type = ICMPV6_ECHO_REPLY;
|
||||
fl6.flowi6_mark = mark;
|
||||
fl6.flowi6_uid = sock_net_uid(net, NULL);
|
||||
security_skb_classify_flow(skb, flowi6_to_flowi(&fl6));
|
||||
|
||||
sk = icmpv6_xmit_lock(net);
|
||||
@@ -667,7 +669,6 @@ static int icmpv6_rcv(struct sk_buff *skb)
|
||||
struct net_device *dev = skb->dev;
|
||||
struct inet6_dev *idev = __in6_dev_get(dev);
|
||||
const struct in6_addr *saddr, *daddr;
|
||||
const struct ipv6hdr *orig_hdr;
|
||||
struct icmp6hdr *hdr;
|
||||
u8 type;
|
||||
|
||||
@@ -679,7 +680,7 @@ static int icmpv6_rcv(struct sk_buff *skb)
|
||||
XFRM_STATE_ICMP))
|
||||
goto drop_no_count;
|
||||
|
||||
if (!pskb_may_pull(skb, sizeof(*hdr) + sizeof(*orig_hdr)))
|
||||
if (!pskb_may_pull(skb, sizeof(*hdr) + sizeof(struct ipv6hdr)))
|
||||
goto drop_no_count;
|
||||
|
||||
nh = skb_network_offset(skb);
|
||||
@@ -741,9 +742,6 @@ static int icmpv6_rcv(struct sk_buff *skb)
|
||||
if (!pskb_may_pull(skb, sizeof(struct ipv6hdr)))
|
||||
goto discard_it;
|
||||
hdr = icmp6_hdr(skb);
|
||||
orig_hdr = (struct ipv6hdr *) (hdr + 1);
|
||||
rt6_pmtu_discovery(&orig_hdr->daddr, &orig_hdr->saddr, dev,
|
||||
ntohl(hdr->icmp6_mtu));
|
||||
|
||||
/*
|
||||
* Drop through to notify
|
||||
|
||||
@@ -74,6 +74,7 @@ struct dst_entry *inet6_csk_route_req(struct sock *sk,
|
||||
fl6.flowi6_mark = inet_rsk(req)->ir_mark;
|
||||
fl6.fl6_dport = inet_rsk(req)->rmt_port;
|
||||
fl6.fl6_sport = inet_rsk(req)->loc_port;
|
||||
fl6.flowi6_uid = sk->sk_uid;
|
||||
security_req_classify_flow(req, flowi6_to_flowi(&fl6));
|
||||
|
||||
dst = ip6_dst_lookup_flow(sk, &fl6, final_p, false);
|
||||
@@ -225,6 +226,7 @@ int inet6_csk_xmit(struct sk_buff *skb, struct flowi *fl_unused)
|
||||
fl6.flowi6_mark = sk->sk_mark;
|
||||
fl6.fl6_sport = inet->inet_sport;
|
||||
fl6.fl6_dport = inet->inet_dport;
|
||||
fl6.flowi6_uid = sk->sk_uid;
|
||||
security_sk_classify_flow(sk, flowi6_to_flowi(&fl6));
|
||||
|
||||
rcu_read_lock();
|
||||
|
||||
@@ -1321,11 +1321,8 @@ int ip6_append_data(struct sock *sk, int getfrag(void *from, char *to,
|
||||
}
|
||||
|
||||
/* For UDP, check if TX timestamp is enabled */
|
||||
if (sk->sk_type == SOCK_DGRAM) {
|
||||
err = sock_tx_timestamp(sk, &tx_flags);
|
||||
if (err)
|
||||
goto error;
|
||||
}
|
||||
if (sk->sk_type == SOCK_DGRAM)
|
||||
sock_tx_timestamp(sk, &tx_flags);
|
||||
|
||||
/*
|
||||
* Let's try using as much space as possible.
|
||||
|
||||
@@ -1027,6 +1027,8 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
memcpy(&fl6, &t->fl.u.ip6, sizeof (fl6));
|
||||
fl6.flowi6_proto = IPPROTO_IPIP;
|
||||
|
||||
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
||||
|
||||
dsfield = ipv4_get_dsfield(iph);
|
||||
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
|
||||
@@ -1078,6 +1080,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
|
||||
memcpy(&fl6, &t->fl.u.ip6, sizeof (fl6));
|
||||
fl6.flowi6_proto = IPPROTO_IPV6;
|
||||
fl6.flowi6_uid = sock_net_uid(dev_net(dev), NULL);
|
||||
|
||||
dsfield = ipv6_get_dsfield(ipv6h);
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
|
||||
|
||||
+8
-3
@@ -1588,6 +1588,10 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
|
||||
struct net *net = sock_net(sk);
|
||||
struct mr6_table *mrt;
|
||||
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
|
||||
if (mrt == NULL)
|
||||
return -ENOENT;
|
||||
@@ -1599,9 +1603,6 @@ int ip6_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, uns
|
||||
|
||||
switch (optname) {
|
||||
case MRT6_INIT:
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
|
||||
return -EOPNOTSUPP;
|
||||
if (optlen < sizeof(int))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1722,6 +1723,10 @@ int ip6_mroute_getsockopt(struct sock *sk, int optname, char __user *optval,
|
||||
struct net *net = sock_net(sk);
|
||||
struct mr6_table *mrt;
|
||||
|
||||
if (sk->sk_type != SOCK_RAW ||
|
||||
inet_sk(sk)->inet_num != IPPROTO_ICMPV6)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
mrt = ip6mr_get_table(net, raw6_sk(sk)->ip6mr_table ? : RT6_TABLE_DFLT);
|
||||
if (mrt == NULL)
|
||||
return -ENOENT;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user