Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Martin Schwidefsky: - A rework for the s390 arch random code, the TRNG instruction is rather slow and should not be used on the interrupt path - A fix for a memory leak in the zcrypt driver - Changes to the early boot code to add a compile time check for code that may not use the .bss section, with the goal to avoid initrd corruptions - Add an interface to get the physical network ID (pnetid), this is useful to group network devices that are attached to the same network - Some cleanup for the linker script - Some code improvement for the dasd driver - Two fixes for the perf sampling support * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/zcrypt: Fix CCA and EP11 CPRB processing failure memory leak. s390/archrandom: Rework arch random implementation. s390/net: add pnetid support s390/dasd: simplify locking in dasd_times_out s390/cio: add test for ccwgroup device s390/cio: add helper to query utility strings per given ccw device s390: remove no-op macro VMLINUX_SYMBOL() s390: remove closung punctuation from spectre messages s390: introduce compile time check for empty .bss section s390/early: move functions which may not access bss section to extra file s390/early: get rid of #ifdef CONFIG_BLK_DEV_INITRD s390/early: get rid of memmove_early s390/cpum_sf: Add data entry sizes to sampling trailer entry perf: fix invalid bit in diagnostic entry
This commit is contained in:
@@ -15,16 +15,11 @@
|
||||
|
||||
#include <linux/static_key.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <asm/cpacf.h>
|
||||
|
||||
DECLARE_STATIC_KEY_FALSE(s390_arch_random_available);
|
||||
extern atomic64_t s390_arch_random_counter;
|
||||
|
||||
static void s390_arch_random_generate(u8 *buf, unsigned int nbytes)
|
||||
{
|
||||
cpacf_trng(NULL, 0, buf, nbytes);
|
||||
atomic64_add(nbytes, &s390_arch_random_counter);
|
||||
}
|
||||
bool s390_arch_random_generate(u8 *buf, unsigned int nbytes);
|
||||
|
||||
static inline bool arch_has_random(void)
|
||||
{
|
||||
@@ -51,8 +46,7 @@ static inline bool arch_get_random_int(unsigned int *v)
|
||||
static inline bool arch_get_random_seed_long(unsigned long *v)
|
||||
{
|
||||
if (static_branch_likely(&s390_arch_random_available)) {
|
||||
s390_arch_random_generate((u8 *)v, sizeof(*v));
|
||||
return true;
|
||||
return s390_arch_random_generate((u8 *)v, sizeof(*v));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -60,8 +54,7 @@ static inline bool arch_get_random_seed_long(unsigned long *v)
|
||||
static inline bool arch_get_random_seed_int(unsigned int *v)
|
||||
{
|
||||
if (static_branch_likely(&s390_arch_random_available)) {
|
||||
s390_arch_random_generate((u8 *)v, sizeof(*v));
|
||||
return true;
|
||||
return s390_arch_random_generate((u8 *)v, sizeof(*v));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -231,4 +231,5 @@ int ccw_device_siosl(struct ccw_device *);
|
||||
extern void ccw_device_get_schid(struct ccw_device *, struct subchannel_id *);
|
||||
|
||||
struct channel_path_desc_fmt0 *ccw_device_get_chp_desc(struct ccw_device *, int);
|
||||
u8 *ccw_device_get_util_str(struct ccw_device *cdev, int chp_idx);
|
||||
#endif /* _S390_CCWDEV_H_ */
|
||||
|
@@ -73,4 +73,14 @@ extern void ccwgroup_remove_ccwdev(struct ccw_device *cdev);
|
||||
|
||||
#define to_ccwgroupdev(x) container_of((x), struct ccwgroup_device, dev)
|
||||
#define to_ccwgroupdrv(x) container_of((x), struct ccwgroup_driver, driver)
|
||||
|
||||
#if IS_ENABLED(CONFIG_CCWGROUP)
|
||||
bool dev_is_ccwgroup(struct device *dev);
|
||||
#else /* CONFIG_CCWGROUP */
|
||||
static inline bool dev_is_ccwgroup(struct device *dev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
#endif /* CONFIG_CCWGROUP */
|
||||
|
||||
#endif
|
||||
|
@@ -113,7 +113,7 @@ struct hws_basic_entry {
|
||||
|
||||
struct hws_diag_entry {
|
||||
unsigned int def:16; /* 0-15 Data Entry Format */
|
||||
unsigned int R:14; /* 16-19 and 20-30 reserved */
|
||||
unsigned int R:15; /* 16-19 and 20-30 reserved */
|
||||
unsigned int I:1; /* 31 entry valid or invalid */
|
||||
u8 data[]; /* Machine-dependent sample data */
|
||||
} __packed;
|
||||
@@ -129,7 +129,9 @@ struct hws_trailer_entry {
|
||||
unsigned int f:1; /* 0 - Block Full Indicator */
|
||||
unsigned int a:1; /* 1 - Alert request control */
|
||||
unsigned int t:1; /* 2 - Timestamp format */
|
||||
unsigned long long:61; /* 3 - 63: Reserved */
|
||||
unsigned int :29; /* 3 - 31: Reserved */
|
||||
unsigned int bsdes:16; /* 32-47: size of basic SDE */
|
||||
unsigned int dsdes:16; /* 48-63: size of diagnostic SDE */
|
||||
};
|
||||
unsigned long long flags; /* 0 - 63: All indicators */
|
||||
};
|
||||
|
23
arch/s390/include/asm/pnet.h
Normal file
23
arch/s390/include/asm/pnet.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* IBM System z PNET ID Support
|
||||
*
|
||||
* Copyright IBM Corp. 2018
|
||||
*/
|
||||
|
||||
#ifndef _ASM_S390_PNET_H
|
||||
#define _ASM_S390_PNET_H
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define PNETIDS_LEN 64 /* Total utility string length in bytes
|
||||
* to cover up to 4 PNETIDs of 16 bytes
|
||||
* for up to 4 device ports
|
||||
*/
|
||||
#define MAX_PNETID_LEN 16 /* Max.length of a single port PNETID */
|
||||
#define MAX_PNETID_PORTS (PNETIDS_LEN / MAX_PNETID_LEN)
|
||||
/* Max. # of ports with a PNETID */
|
||||
|
||||
int pnet_id_by_dev_port(struct device *dev, unsigned short port, u8 *pnetid);
|
||||
#endif /* _ASM_S390_PNET_H */
|
Reference in New Issue
Block a user