mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
Compare commits
17 Commits
a2e94e8079
...
cf6fc5eefc
Author | SHA1 | Date | |
---|---|---|---|
![]() |
cf6fc5eefc | ||
![]() |
b3d80535e2 | ||
![]() |
272aa18fea | ||
![]() |
3868f91044 | ||
![]() |
fec7bdfe7f | ||
![]() |
93f616ff87 | ||
![]() |
430fa71027 | ||
![]() |
fcc43a7e29 | ||
![]() |
eb173ce0e2 | ||
![]() |
efdaa61d73 | ||
![]() |
8ea815399c | ||
![]() |
748f897511 | ||
![]() |
de5cec220e | ||
![]() |
2c78fb287e | ||
![]() |
dff6f36878 | ||
![]() |
5b9e07551f | ||
![]() |
d26a9f4f0a |
@ -530,6 +530,9 @@ void setup_vmem(unsigned long kernel_start, unsigned long kernel_end, unsigned l
|
||||
lowcore_address + sizeof(struct lowcore),
|
||||
POPULATE_LOWCORE);
|
||||
for_each_physmem_usable_range(i, &start, &end) {
|
||||
/* Do not map lowcore with identity mapping */
|
||||
if (!start)
|
||||
start = sizeof(struct lowcore);
|
||||
pgtable_populate((unsigned long)__identity_va(start),
|
||||
(unsigned long)__identity_va(end),
|
||||
POPULATE_IDENTITY);
|
||||
|
@ -5,6 +5,7 @@ CONFIG_WATCH_QUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_POSIX_AUX_CLOCKS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
@ -19,6 +20,7 @@ CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_SCHED_PROXY_EXEC=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
@ -42,6 +44,7 @@ CONFIG_PROFILING=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_KEXEC_SIG=y
|
||||
CONFIG_CRASH_DM_CRYPT=y
|
||||
CONFIG_LIVEPATCH=y
|
||||
CONFIG_MARCH_Z13=y
|
||||
CONFIG_NR_CPUS=512
|
||||
@ -105,6 +108,7 @@ CONFIG_CMA_AREAS=7
|
||||
CONFIG_MEM_SOFT_DIRTY=y
|
||||
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
|
||||
CONFIG_IDLE_PAGE_TRACKING=y
|
||||
CONFIG_ZONE_DEVICE=y
|
||||
CONFIG_PERCPU_STATS=y
|
||||
CONFIG_GUP_TEST=y
|
||||
CONFIG_ANON_VMA_NAME=y
|
||||
@ -223,17 +227,19 @@ CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_CT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_DSCP=m
|
||||
CONFIG_NETFILTER_XT_TARGET_HL=m
|
||||
CONFIG_NETFILTER_XT_TARGET_HMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
|
||||
CONFIG_NETFILTER_XT_TARGET_LOG=m
|
||||
CONFIG_NETFILTER_XT_TARGET_MARK=m
|
||||
CONFIG_NETFILTER_XT_NAT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TEE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TRACE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
||||
@ -248,6 +254,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DSCP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_ESP=m
|
||||
@ -318,16 +325,8 @@ CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
CONFIG_IP_NF_MATCH_RPFILTER=m
|
||||
CONFIG_IP_NF_MATCH_TTL=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
CONFIG_IP_NF_SECURITY=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
@ -340,15 +339,9 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_IP6_NF_SECURITY=m
|
||||
CONFIG_IP6_NF_NAT=m
|
||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_NF_TABLES_BRIDGE=m
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_RDS=m
|
||||
CONFIG_RDS_RDMA=m
|
||||
CONFIG_RDS_TCP=m
|
||||
@ -383,6 +376,7 @@ CONFIG_NET_SCH_FQ_CODEL=m
|
||||
CONFIG_NET_SCH_INGRESS=m
|
||||
CONFIG_NET_SCH_PLUG=m
|
||||
CONFIG_NET_SCH_ETS=m
|
||||
CONFIG_NET_SCH_DUALPI2=m
|
||||
CONFIG_NET_CLS_BASIC=m
|
||||
CONFIG_NET_CLS_ROUTE4=m
|
||||
CONFIG_NET_CLS_FW=m
|
||||
@ -504,6 +498,7 @@ CONFIG_DM_VDO=m
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_OVPN=m
|
||||
CONFIG_EQUALIZER=m
|
||||
CONFIG_IFB=m
|
||||
CONFIG_MACVLAN=m
|
||||
@ -641,6 +636,7 @@ CONFIG_VP_VDPA=m
|
||||
CONFIG_VHOST_NET=m
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
CONFIG_VHOST_VDPA=m
|
||||
CONFIG_DEV_DAX=m
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
@ -665,6 +661,7 @@ CONFIG_NILFS2_FS=m
|
||||
CONFIG_BCACHEFS_FS=y
|
||||
CONFIG_BCACHEFS_QUOTA=y
|
||||
CONFIG_BCACHEFS_POSIX_ACL=y
|
||||
CONFIG_FS_DAX=y
|
||||
CONFIG_EXPORTFS_BLOCK_OPS=y
|
||||
CONFIG_FS_ENCRYPTION=y
|
||||
CONFIG_FS_VERITY=y
|
||||
@ -755,6 +752,8 @@ CONFIG_HARDENED_USERCOPY=y
|
||||
CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
CONFIG_CRYPTO_SELFTESTS=y
|
||||
CONFIG_CRYPTO_SELFTESTS_FULL=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_PCRYPT=m
|
||||
CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_BENCHMARK=m
|
||||
@ -783,7 +782,6 @@ CONFIG_CRYPTO_HCTR2=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_AEGIS128=m
|
||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||
CONFIG_CRYPTO_GCM=y
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
@ -822,6 +820,7 @@ CONFIG_SYSTEM_BLACKLIST_KEYRING=y
|
||||
CONFIG_CRYPTO_KRB5=m
|
||||
CONFIG_CRYPTO_KRB5_SELFTESTS=y
|
||||
CONFIG_CORDIC=m
|
||||
CONFIG_TRACE_MMIO_ACCESS=y
|
||||
CONFIG_RANDOM32_SELFTEST=y
|
||||
CONFIG_XZ_DEC_MICROLZMA=y
|
||||
CONFIG_DMA_CMA=y
|
||||
|
@ -4,6 +4,7 @@ CONFIG_WATCH_QUEUE=y
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_POSIX_AUX_CLOCKS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
CONFIG_BPF_JIT_ALWAYS_ON=y
|
||||
@ -17,6 +18,7 @@ CONFIG_TASK_XACCT=y
|
||||
CONFIG_TASK_IO_ACCOUNTING=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_SCHED_PROXY_EXEC=y
|
||||
CONFIG_NUMA_BALANCING=y
|
||||
CONFIG_MEMCG=y
|
||||
CONFIG_BLK_CGROUP=y
|
||||
@ -40,11 +42,12 @@ CONFIG_PROFILING=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_KEXEC_FILE=y
|
||||
CONFIG_KEXEC_SIG=y
|
||||
CONFIG_CRASH_DM_CRYPT=y
|
||||
CONFIG_LIVEPATCH=y
|
||||
CONFIG_MARCH_Z13=y
|
||||
CONFIG_NR_CPUS=512
|
||||
CONFIG_NUMA=y
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_HZ_1000=y
|
||||
CONFIG_CERT_STORE=y
|
||||
CONFIG_EXPOLINE=y
|
||||
CONFIG_EXPOLINE_AUTO=y
|
||||
@ -97,6 +100,7 @@ CONFIG_CMA_AREAS=7
|
||||
CONFIG_MEM_SOFT_DIRTY=y
|
||||
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
|
||||
CONFIG_IDLE_PAGE_TRACKING=y
|
||||
CONFIG_ZONE_DEVICE=y
|
||||
CONFIG_PERCPU_STATS=y
|
||||
CONFIG_ANON_VMA_NAME=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
@ -214,17 +218,19 @@ CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_CT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_DSCP=m
|
||||
CONFIG_NETFILTER_XT_TARGET_HL=m
|
||||
CONFIG_NETFILTER_XT_TARGET_HMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
|
||||
CONFIG_NETFILTER_XT_TARGET_LOG=m
|
||||
CONFIG_NETFILTER_XT_TARGET_MARK=m
|
||||
CONFIG_NETFILTER_XT_NAT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NETMAP=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
|
||||
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
|
||||
CONFIG_NETFILTER_XT_TARGET_MASQUERADE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TEE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TPROXY=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TRACE=m
|
||||
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
|
||||
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
|
||||
@ -239,6 +245,7 @@ CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
|
||||
CONFIG_NETFILTER_XT_MATCH_CPU=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DCCP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_DSCP=m
|
||||
CONFIG_NETFILTER_XT_MATCH_ESP=m
|
||||
@ -309,16 +316,8 @@ CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
CONFIG_IP_NF_MATCH_RPFILTER=m
|
||||
CONFIG_IP_NF_MATCH_TTL=m
|
||||
CONFIG_IP_NF_FILTER=m
|
||||
CONFIG_IP_NF_TARGET_REJECT=m
|
||||
CONFIG_IP_NF_NAT=m
|
||||
CONFIG_IP_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_IP_NF_MANGLE=m
|
||||
CONFIG_IP_NF_TARGET_ECN=m
|
||||
CONFIG_IP_NF_TARGET_TTL=m
|
||||
CONFIG_IP_NF_RAW=m
|
||||
CONFIG_IP_NF_SECURITY=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_IP6_NF_IPTABLES=m
|
||||
@ -331,15 +330,9 @@ CONFIG_IP6_NF_MATCH_IPV6HEADER=m
|
||||
CONFIG_IP6_NF_MATCH_MH=m
|
||||
CONFIG_IP6_NF_MATCH_RPFILTER=m
|
||||
CONFIG_IP6_NF_MATCH_RT=m
|
||||
CONFIG_IP6_NF_TARGET_HL=m
|
||||
CONFIG_IP6_NF_FILTER=m
|
||||
CONFIG_IP6_NF_TARGET_REJECT=m
|
||||
CONFIG_IP6_NF_MANGLE=m
|
||||
CONFIG_IP6_NF_RAW=m
|
||||
CONFIG_IP6_NF_SECURITY=m
|
||||
CONFIG_IP6_NF_NAT=m
|
||||
CONFIG_IP6_NF_TARGET_MASQUERADE=m
|
||||
CONFIG_NF_TABLES_BRIDGE=m
|
||||
CONFIG_IP_SCTP=m
|
||||
CONFIG_RDS=m
|
||||
CONFIG_RDS_RDMA=m
|
||||
CONFIG_RDS_TCP=m
|
||||
@ -373,6 +366,7 @@ CONFIG_NET_SCH_FQ_CODEL=m
|
||||
CONFIG_NET_SCH_INGRESS=m
|
||||
CONFIG_NET_SCH_PLUG=m
|
||||
CONFIG_NET_SCH_ETS=m
|
||||
CONFIG_NET_SCH_DUALPI2=m
|
||||
CONFIG_NET_CLS_BASIC=m
|
||||
CONFIG_NET_CLS_ROUTE4=m
|
||||
CONFIG_NET_CLS_FW=m
|
||||
@ -494,6 +488,7 @@ CONFIG_DM_VDO=m
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_BONDING=m
|
||||
CONFIG_DUMMY=m
|
||||
CONFIG_OVPN=m
|
||||
CONFIG_EQUALIZER=m
|
||||
CONFIG_IFB=m
|
||||
CONFIG_MACVLAN=m
|
||||
@ -631,6 +626,7 @@ CONFIG_VP_VDPA=m
|
||||
CONFIG_VHOST_NET=m
|
||||
CONFIG_VHOST_VSOCK=m
|
||||
CONFIG_VHOST_VDPA=m
|
||||
CONFIG_DEV_DAX=m
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
@ -652,6 +648,7 @@ CONFIG_NILFS2_FS=m
|
||||
CONFIG_BCACHEFS_FS=m
|
||||
CONFIG_BCACHEFS_QUOTA=y
|
||||
CONFIG_BCACHEFS_POSIX_ACL=y
|
||||
CONFIG_FS_DAX=y
|
||||
CONFIG_EXPORTFS_BLOCK_OPS=y
|
||||
CONFIG_FS_ENCRYPTION=y
|
||||
CONFIG_FS_VERITY=y
|
||||
@ -683,7 +680,6 @@ CONFIG_TMPFS_POSIX_ACL=y
|
||||
CONFIG_TMPFS_INODE64=y
|
||||
CONFIG_TMPFS_QUOTA=y
|
||||
CONFIG_HUGETLBFS=y
|
||||
CONFIG_CONFIGFS_FS=m
|
||||
CONFIG_ECRYPT_FS=m
|
||||
CONFIG_CRAMFS=m
|
||||
CONFIG_SQUASHFS=m
|
||||
@ -741,6 +737,7 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y
|
||||
CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
CONFIG_CRYPTO_SELFTESTS=y
|
||||
CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_PCRYPT=m
|
||||
CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_BENCHMARK=m
|
||||
@ -769,7 +766,6 @@ CONFIG_CRYPTO_HCTR2=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_AEGIS128=m
|
||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||
CONFIG_CRYPTO_GCM=y
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_MD4=m
|
||||
|
@ -1,5 +1,6 @@
|
||||
CONFIG_NO_HZ_IDLE=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_POSIX_AUX_CLOCKS=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
# CONFIG_CPU_ISOLATION is not set
|
||||
# CONFIG_UTS_NS is not set
|
||||
@ -11,7 +12,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_KEXEC=y
|
||||
CONFIG_MARCH_Z13=y
|
||||
CONFIG_NR_CPUS=2
|
||||
CONFIG_HZ_100=y
|
||||
CONFIG_HZ_1000=y
|
||||
# CONFIG_CHSC_SCH is not set
|
||||
# CONFIG_SCM_BUS is not set
|
||||
# CONFIG_AP is not set
|
||||
|
@ -6,6 +6,7 @@
|
||||
* Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
|
||||
*/
|
||||
|
||||
#include <linux/security.h>
|
||||
#include <linux/slab.h>
|
||||
#include "hypfs.h"
|
||||
|
||||
@ -66,23 +67,27 @@ static long dbfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
|
||||
long rc;
|
||||
|
||||
mutex_lock(&df->lock);
|
||||
if (df->unlocked_ioctl)
|
||||
rc = df->unlocked_ioctl(file, cmd, arg);
|
||||
else
|
||||
rc = -ENOTTY;
|
||||
rc = df->unlocked_ioctl(file, cmd, arg);
|
||||
mutex_unlock(&df->lock);
|
||||
return rc;
|
||||
}
|
||||
|
||||
static const struct file_operations dbfs_ops = {
|
||||
static const struct file_operations dbfs_ops_ioctl = {
|
||||
.read = dbfs_read,
|
||||
.unlocked_ioctl = dbfs_ioctl,
|
||||
};
|
||||
|
||||
static const struct file_operations dbfs_ops = {
|
||||
.read = dbfs_read,
|
||||
};
|
||||
|
||||
void hypfs_dbfs_create_file(struct hypfs_dbfs_file *df)
|
||||
{
|
||||
df->dentry = debugfs_create_file(df->name, 0400, dbfs_dir, df,
|
||||
&dbfs_ops);
|
||||
const struct file_operations *fops = &dbfs_ops;
|
||||
|
||||
if (df->unlocked_ioctl && !security_locked_down(LOCKDOWN_DEBUGFS))
|
||||
fops = &dbfs_ops_ioctl;
|
||||
df->dentry = debugfs_create_file(df->name, 0400, dbfs_dir, df, fops);
|
||||
mutex_init(&df->lock);
|
||||
}
|
||||
|
||||
|
@ -94,12 +94,13 @@ DECLARE_STATIC_CALL(xen_hypercall, xen_hypercall_func);
|
||||
#ifdef MODULE
|
||||
#define __ADDRESSABLE_xen_hypercall
|
||||
#else
|
||||
#define __ADDRESSABLE_xen_hypercall __ADDRESSABLE_ASM_STR(__SCK__xen_hypercall)
|
||||
#define __ADDRESSABLE_xen_hypercall \
|
||||
__stringify(.global STATIC_CALL_KEY(xen_hypercall);)
|
||||
#endif
|
||||
|
||||
#define __HYPERCALL \
|
||||
__ADDRESSABLE_xen_hypercall \
|
||||
"call __SCT__xen_hypercall"
|
||||
__stringify(call STATIC_CALL_TRAMP(xen_hypercall))
|
||||
|
||||
#define __HYPERCALL_ENTRY(x) "a" (x)
|
||||
|
||||
|
@ -504,7 +504,7 @@ static int init_acpi(struct device *dev)
|
||||
|
||||
dev_set_drvdata(dev, &hsmp_pdev->sock[sock_ind]);
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct bin_attribute hsmp_metric_tbl_attr = {
|
||||
|
@ -356,6 +356,11 @@ ssize_t hsmp_metric_tbl_read(struct hsmp_socket *sock, char *buf, size_t size)
|
||||
if (!sock || !buf)
|
||||
return -EINVAL;
|
||||
|
||||
if (!sock->metric_tbl_addr) {
|
||||
dev_err(sock->dev, "Metrics table address not available\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
/* Do not support lseek(), also don't allow more than the size of metric table */
|
||||
if (size != sizeof(struct hsmp_metric_table)) {
|
||||
dev_err(sock->dev, "Wrong buffer size\n");
|
||||
|
@ -28,10 +28,15 @@ static struct quirk_entry quirk_spurious_8042 = {
|
||||
.spurious_8042 = true,
|
||||
};
|
||||
|
||||
static struct quirk_entry quirk_s2idle_spurious_8042 = {
|
||||
.s2idle_bug_mmio = FCH_PM_BASE + FCH_PM_SCRATCH,
|
||||
.spurious_8042 = true,
|
||||
};
|
||||
|
||||
static const struct dmi_system_id fwbug_list[] = {
|
||||
{
|
||||
.ident = "L14 Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20X5"),
|
||||
@ -39,7 +44,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14s Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20XF"),
|
||||
@ -47,7 +52,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "X13 Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20XH"),
|
||||
@ -55,7 +60,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14 Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20XK"),
|
||||
@ -63,7 +68,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14 Gen1 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20UD"),
|
||||
@ -71,7 +76,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14 Gen1 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20UE"),
|
||||
@ -79,7 +84,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14s Gen1 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20UH"),
|
||||
@ -87,7 +92,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "T14s Gen1 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20UJ"),
|
||||
@ -95,7 +100,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "P14s Gen1 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "20Y1"),
|
||||
@ -103,7 +108,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "P14s Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "21A0"),
|
||||
@ -111,7 +116,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "P14s Gen2 AMD",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "21A1"),
|
||||
@ -152,7 +157,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "IdeaPad 1 14AMN7",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82VF"),
|
||||
@ -160,7 +165,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "IdeaPad 1 15AMN7",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82VG"),
|
||||
@ -168,7 +173,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "IdeaPad 1 15AMN7",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82X5"),
|
||||
@ -176,7 +181,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "IdeaPad Slim 3 14AMN8",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82XN"),
|
||||
@ -184,7 +189,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
},
|
||||
{
|
||||
.ident = "IdeaPad Slim 3 15AMN8",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82XQ"),
|
||||
@ -193,7 +198,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
/* https://gitlab.freedesktop.org/drm/amd/-/issues/4434 */
|
||||
{
|
||||
.ident = "Lenovo Yoga 6 13ALC6",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "82ND"),
|
||||
@ -202,7 +207,7 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
/* https://gitlab.freedesktop.org/drm/amd/-/issues/2684 */
|
||||
{
|
||||
.ident = "HP Laptop 15s-eq2xxx",
|
||||
.driver_data = &quirk_s2idle_bug,
|
||||
.driver_data = &quirk_s2idle_spurious_8042,
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "HP"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "HP Laptop 15s-eq2xxx"),
|
||||
@ -285,6 +290,16 @@ void amd_pmc_quirks_init(struct amd_pmc_dev *dev)
|
||||
{
|
||||
const struct dmi_system_id *dmi_id;
|
||||
|
||||
/*
|
||||
* IRQ1 may cause an interrupt during resume even without a keyboard
|
||||
* press.
|
||||
*
|
||||
* Affects Renoir, Cezanne and Barcelo SoCs
|
||||
*
|
||||
* A solution is available in PMFW 64.66.0, but it must be activated by
|
||||
* SBIOS. If SBIOS is known to have the fix a quirk can be added for
|
||||
* a given system to avoid workaround.
|
||||
*/
|
||||
if (dev->cpu_id == AMD_CPU_ID_CZN)
|
||||
dev->disable_8042_wakeup = true;
|
||||
|
||||
@ -295,6 +310,5 @@ void amd_pmc_quirks_init(struct amd_pmc_dev *dev)
|
||||
if (dev->quirks->s2idle_bug_mmio)
|
||||
pr_info("Using s2idle quirk to avoid %s platform firmware bug\n",
|
||||
dmi_id->ident);
|
||||
if (dev->quirks->spurious_8042)
|
||||
dev->disable_8042_wakeup = true;
|
||||
dev->disable_8042_wakeup = dev->quirks->spurious_8042;
|
||||
}
|
||||
|
@ -530,19 +530,6 @@ static int amd_pmc_get_os_hint(struct amd_pmc_dev *dev)
|
||||
static int amd_pmc_wa_irq1(struct amd_pmc_dev *pdev)
|
||||
{
|
||||
struct device *d;
|
||||
int rc;
|
||||
|
||||
/* cezanne platform firmware has a fix in 64.66.0 */
|
||||
if (pdev->cpu_id == AMD_CPU_ID_CZN) {
|
||||
if (!pdev->major) {
|
||||
rc = amd_pmc_get_smu_version(pdev);
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (pdev->major > 64 || (pdev->major == 64 && pdev->minor > 65))
|
||||
return 0;
|
||||
}
|
||||
|
||||
d = bus_find_device_by_name(&serio_bus, NULL, "serio0");
|
||||
if (!d)
|
||||
|
@ -39,6 +39,7 @@ struct token_sysfs_data {
|
||||
struct smbios_device {
|
||||
struct list_head list;
|
||||
struct device *device;
|
||||
int priority;
|
||||
int (*call_fn)(struct calling_interface_buffer *arg);
|
||||
};
|
||||
|
||||
@ -145,7 +146,7 @@ int dell_smbios_error(int value)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(dell_smbios_error);
|
||||
|
||||
int dell_smbios_register_device(struct device *d, void *call_fn)
|
||||
int dell_smbios_register_device(struct device *d, int priority, void *call_fn)
|
||||
{
|
||||
struct smbios_device *priv;
|
||||
|
||||
@ -154,6 +155,7 @@ int dell_smbios_register_device(struct device *d, void *call_fn)
|
||||
return -ENOMEM;
|
||||
get_device(d);
|
||||
priv->device = d;
|
||||
priv->priority = priority;
|
||||
priv->call_fn = call_fn;
|
||||
mutex_lock(&smbios_mutex);
|
||||
list_add_tail(&priv->list, &smbios_device_list);
|
||||
@ -292,28 +294,25 @@ EXPORT_SYMBOL_GPL(dell_smbios_call_filter);
|
||||
|
||||
int dell_smbios_call(struct calling_interface_buffer *buffer)
|
||||
{
|
||||
int (*call_fn)(struct calling_interface_buffer *) = NULL;
|
||||
struct device *selected_dev = NULL;
|
||||
struct smbios_device *selected = NULL;
|
||||
struct smbios_device *priv;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&smbios_mutex);
|
||||
list_for_each_entry(priv, &smbios_device_list, list) {
|
||||
if (!selected_dev || priv->device->id >= selected_dev->id) {
|
||||
dev_dbg(priv->device, "Trying device ID: %d\n",
|
||||
priv->device->id);
|
||||
call_fn = priv->call_fn;
|
||||
selected_dev = priv->device;
|
||||
if (!selected || priv->priority >= selected->priority) {
|
||||
dev_dbg(priv->device, "Trying device ID: %d\n", priv->priority);
|
||||
selected = priv;
|
||||
}
|
||||
}
|
||||
|
||||
if (!selected_dev) {
|
||||
if (!selected) {
|
||||
ret = -ENODEV;
|
||||
pr_err("No dell-smbios drivers are loaded\n");
|
||||
goto out_smbios_call;
|
||||
}
|
||||
|
||||
ret = call_fn(buffer);
|
||||
ret = selected->call_fn(buffer);
|
||||
|
||||
out_smbios_call:
|
||||
mutex_unlock(&smbios_mutex);
|
||||
|
@ -125,8 +125,7 @@ int init_dell_smbios_smm(void)
|
||||
if (ret)
|
||||
goto fail_platform_device_add;
|
||||
|
||||
ret = dell_smbios_register_device(&platform_device->dev,
|
||||
&dell_smbios_smm_call);
|
||||
ret = dell_smbios_register_device(&platform_device->dev, 0, &dell_smbios_smm_call);
|
||||
if (ret)
|
||||
goto fail_register;
|
||||
|
||||
|
@ -264,9 +264,7 @@ static int dell_smbios_wmi_probe(struct wmi_device *wdev, const void *context)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* ID is used by dell-smbios to set priority of drivers */
|
||||
wdev->dev.id = 1;
|
||||
ret = dell_smbios_register_device(&wdev->dev, &dell_smbios_wmi_call);
|
||||
ret = dell_smbios_register_device(&wdev->dev, 1, &dell_smbios_wmi_call);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -64,7 +64,7 @@ struct calling_interface_structure {
|
||||
struct calling_interface_token tokens[];
|
||||
} __packed;
|
||||
|
||||
int dell_smbios_register_device(struct device *d, void *call_fn);
|
||||
int dell_smbios_register_device(struct device *d, int priority, void *call_fn);
|
||||
void dell_smbios_unregister_device(struct device *d);
|
||||
|
||||
int dell_smbios_error(int value);
|
||||
|
@ -92,9 +92,9 @@ static const char * const victus_thermal_profile_boards[] = {
|
||||
"8A25"
|
||||
};
|
||||
|
||||
/* DMI Board names of Victus 16-s1000 laptops */
|
||||
/* DMI Board names of Victus 16-r1000 and Victus 16-s1000 laptops */
|
||||
static const char * const victus_s_thermal_profile_boards[] = {
|
||||
"8C9C"
|
||||
"8C99", "8C9C"
|
||||
};
|
||||
|
||||
enum hp_wmi_radio {
|
||||
|
@ -192,9 +192,14 @@ static int uncore_read_control_freq(struct uncore_data *data, unsigned int *valu
|
||||
static int write_eff_lat_ctrl(struct uncore_data *data, unsigned int val, enum uncore_index index)
|
||||
{
|
||||
struct tpmi_uncore_cluster_info *cluster_info;
|
||||
struct tpmi_uncore_struct *uncore_root;
|
||||
u64 control;
|
||||
|
||||
cluster_info = container_of(data, struct tpmi_uncore_cluster_info, uncore_data);
|
||||
uncore_root = cluster_info->uncore_root;
|
||||
|
||||
if (uncore_root->write_blocked)
|
||||
return -EPERM;
|
||||
|
||||
if (cluster_info->root_domain)
|
||||
return -ENODATA;
|
||||
|
@ -77,6 +77,13 @@ unsigned long sclp_console_full;
|
||||
/* The currently active SCLP command word. */
|
||||
static sclp_cmdw_t active_cmd;
|
||||
|
||||
static inline struct sccb_header *sclpint_to_sccb(u32 sccb_int)
|
||||
{
|
||||
if (sccb_int)
|
||||
return __va(sccb_int);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline void sclp_trace(int prio, char *id, u32 a, u64 b, bool err)
|
||||
{
|
||||
struct sclp_trace_entry e;
|
||||
@ -620,7 +627,7 @@ __sclp_find_req(u32 sccb)
|
||||
|
||||
static bool ok_response(u32 sccb_int, sclp_cmdw_t cmd)
|
||||
{
|
||||
struct sccb_header *sccb = (struct sccb_header *)__va(sccb_int);
|
||||
struct sccb_header *sccb = sclpint_to_sccb(sccb_int);
|
||||
struct evbuf_header *evbuf;
|
||||
u16 response;
|
||||
|
||||
@ -659,7 +666,7 @@ static void sclp_interrupt_handler(struct ext_code ext_code,
|
||||
|
||||
/* INT: Interrupt received (a=intparm, b=cmd) */
|
||||
sclp_trace_sccb(0, "INT", param32, active_cmd, active_cmd,
|
||||
(struct sccb_header *)__va(finished_sccb),
|
||||
sclpint_to_sccb(finished_sccb),
|
||||
!ok_response(finished_sccb, active_cmd));
|
||||
|
||||
if (finished_sccb) {
|
||||
|
@ -718,26 +718,6 @@ int xs_watch_msg(struct xs_watch_event *event)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Certain older XenBus toolstack cannot handle reading values that are
|
||||
* not populated. Some Xen 3.4 installation are incapable of doing this
|
||||
* so if we are running on anything older than 4 do not attempt to read
|
||||
* control/platform-feature-xs_reset_watches.
|
||||
*/
|
||||
static bool xen_strict_xenbus_quirk(void)
|
||||
{
|
||||
#ifdef CONFIG_X86
|
||||
uint32_t eax, ebx, ecx, edx, base;
|
||||
|
||||
base = xen_cpuid_base();
|
||||
cpuid(base + 1, &eax, &ebx, &ecx, &edx);
|
||||
|
||||
if ((eax >> 16) < 4)
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
|
||||
}
|
||||
static void xs_reset_watches(void)
|
||||
{
|
||||
int err;
|
||||
@ -745,9 +725,6 @@ static void xs_reset_watches(void)
|
||||
if (!xen_hvm_domain() || xen_initial_domain())
|
||||
return;
|
||||
|
||||
if (xen_strict_xenbus_quirk())
|
||||
return;
|
||||
|
||||
if (!xenbus_read_unsigned("control",
|
||||
"platform-feature-xs_reset_watches", 0))
|
||||
return;
|
||||
|
@ -288,14 +288,6 @@ static inline void *offset_to_ptr(const int *off)
|
||||
#define __ADDRESSABLE(sym) \
|
||||
___ADDRESSABLE(sym, __section(".discard.addressable"))
|
||||
|
||||
#define __ADDRESSABLE_ASM(sym) \
|
||||
.pushsection .discard.addressable,"aw"; \
|
||||
.align ARCH_SEL(8,4); \
|
||||
ARCH_SEL(.quad, .long) __stringify(sym); \
|
||||
.popsection;
|
||||
|
||||
#define __ADDRESSABLE_ASM_STR(sym) __stringify(__ADDRESSABLE_ASM(sym))
|
||||
|
||||
/*
|
||||
* This returns a constant expression while determining if an argument is
|
||||
* a constant expression, most importantly without evaluating the argument.
|
||||
|
Loading…
Reference in New Issue
Block a user