Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e6dcec1 authored by Satya Durga Srinivasu Prabhala's avatar Satya Durga Srinivasu Prabhala
Browse files

Revert "arm64: Add support for app specific settings"



This reverts commit 7ab05c20 ("arm64: Add support
for app specific settings").

Feature is not applicable to msmcobalt and only applicable
to MSM8996.

CRs-Fixed: 1054373
Change-Id: I12d3a22362b965c7d302976c83ab0e757c98d3c6
Signed-off-by: default avatarSatya Durga Srinivasu Prabhala <satyap@codeaurora.org>
parent fc3f95de
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -513,20 +513,9 @@ config ARM64_64K_PAGES

endchoice

config MSM_APP_API
	bool "API support to enable / disable app settings for MSM8996"
	depends on ARCH_MSM8996 && (ENABLE_FP_SIMD_SETTINGS || MSM_APP_SETTINGS)
	help
	  Add API support to enable / disable the app settings to be used
	  at runtime. These APIs are used to enable / disable app setting
	  when specific aarch32 or aarch64 processes are running.

	  If you are not sure what to do, select 'N' here.

config ENABLE_FP_SIMD_SETTINGS
	bool "Enable FP(Floating Point) Settings for Qualcomm MSM8996"
	depends on ARCH_MSM8996
	select MSM_APP_API
	help
	  Enable FP(Floating Point) and SIMD settings for the MSM8996 during
	  the execution of the aarch32 processes and disable these settings
@@ -534,16 +523,6 @@ config ENABLE_FP_SIMD_SETTINGS

	  If you are not sure what to do, select 'N' here.

config MSM_APP_SETTINGS
	bool "Support to enable / disable app settings for MSM8996"
	depends on ARCH_MSM8996
	select MSM_APP_API
	help
	  Expose an interface used by the userspace at runtime to
	  enable / disable the app specific settings.

	  If you are not sure what to do, select 'N' here.

choice
	prompt "Virtual address space size"
	default ARM64_VA_BITS_39 if ARM64_4K_PAGES

arch/arm64/include/asm/app_api.h

deleted100644 → 0
+0 −42
Original line number Diff line number Diff line
/* Copyright (c) 2016, 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.
 */

#ifndef __ASM_APP_API_H
#define __ASM_APP_API_H

#include <linux/types.h>
#include <linux/sched.h>
#include <linux/fs.h>

#define APP_SETTING_BIT		30
#define MAX_ENTRIES		10

/*
 * APIs to set / clear the app setting bits
 * in the register.
 */
#ifdef CONFIG_MSM_APP_API
extern void set_app_setting_bit(uint32_t bit);
extern void clear_app_setting_bit(uint32_t bit);
#else
static inline void set_app_setting_bit(uint32_t bit) {}
static inline void clear_app_setting_bit(uint32_t bit) {}
#endif

#ifdef CONFIG_MSM_APP_SETTINGS
extern void switch_app_setting_bit(struct task_struct *prev,
				   struct task_struct *next);
extern void apply_app_setting_bit(struct file *file);
extern bool use_app_setting;
#endif

#endif
+4 −0
Original line number Diff line number Diff line
@@ -84,9 +84,13 @@ extern void fpsimd_load_partial_state(struct fpsimd_partial_state *state);
#ifdef CONFIG_ENABLE_FP_SIMD_SETTINGS
extern void fpsimd_disable_trap(void);
extern void fpsimd_enable_trap(void);
extern void fpsimd_settings_disable(void);
extern void fpsimd_settings_enable(void);
#else
static inline void fpsimd_disable_trap(void) {}
static inline void fpsimd_enable_trap(void) {}
static inline void fpsimd_settings_disable(void) {}
static inline void fpsimd_settings_enable(void) {}
#endif

#endif
+0 −2
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@ arm64-obj-$(CONFIG_EFI) += efi.o efi-entry.stub.o
arm64-obj-$(CONFIG_PCI)			+= pci.o
arm64-obj-$(CONFIG_ARMV8_DEPRECATED)	+= armv8_deprecated.o
arm64-obj-$(CONFIG_ACPI)		+= acpi.o
arm64-obj-$(CONFIG_MSM_APP_API)		+= app_api.o
arm64-obj-$(CONFIG_MSM_APP_SETTINGS)	+= app_setting.o

obj-y					+= $(arm64-obj-y) vdso/
obj-m					+= $(arm64-obj-m)

arch/arm64/kernel/app_api.c

deleted100644 → 0
+0 −75
Original line number Diff line number Diff line
/* Copyright (c) 2016, 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.
 */

#include <linux/bitops.h>
#include <linux/spinlock.h>
#include <linux/cpu.h>
#include <linux/export.h>

#include <asm/app_api.h>

static spinlock_t spinlock;
static DEFINE_PER_CPU(int, app_config_applied);
static unsigned long app_config_set[NR_CPUS];
static unsigned long app_config_clear[NR_CPUS];

void set_app_setting_bit(uint32_t bit)
{
	unsigned long flags;
	uint64_t reg;
	int cpu;

	spin_lock_irqsave(&spinlock, flags);
	asm volatile("mrs %0, S3_1_C15_C15_0" : "=r" (reg));
	reg = reg | BIT(bit);
	isb();
	asm volatile("msr S3_1_C15_C15_0, %0" : : "r" (reg));
	isb();
	if (bit == APP_SETTING_BIT) {
		cpu = raw_smp_processor_id();
		app_config_set[cpu]++;

		this_cpu_write(app_config_applied, 1);
	}
	spin_unlock_irqrestore(&spinlock, flags);

}
EXPORT_SYMBOL(set_app_setting_bit);

void clear_app_setting_bit(uint32_t bit)
{
	unsigned long flags;
	uint64_t reg;
	int cpu;

	spin_lock_irqsave(&spinlock, flags);
	asm volatile("mrs %0, S3_1_C15_C15_0" : "=r" (reg));
	reg = reg & ~BIT(bit);
	isb();
	asm volatile("msr S3_1_C15_C15_0, %0" : : "r" (reg));
	isb();
	if (bit == APP_SETTING_BIT) {
		cpu = raw_smp_processor_id();
		app_config_clear[cpu]++;

		this_cpu_write(app_config_applied, 0);
	}
	spin_unlock_irqrestore(&spinlock, flags);
}
EXPORT_SYMBOL(clear_app_setting_bit);

static int __init init_app_api(void)
{
	spin_lock_init(&spinlock);
	return 0;
}
early_initcall(init_app_api);
Loading