mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Char/Misc driver fixes for 5.2-rc4
Here are some small char and misc driver fixes for 5.2-rc4 to resolve a
number of reported issues.
The most "notable" one here is the kernel headers in proc^Wsysfs fixes.
Those changes move the header file info into sysfs and fixes the build
issues that you reported.
Other than that, a bunch of small habanalabs driver fixes, some fpga
driver fixes, and a few other tiny driver fixes.
All of these have been in linux-next for a while with no reported
issues.
Signed-off-by: Greg Kroah-Hartman <[email protected]>
-----BEGIN PGP SIGNATURE-----
iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCXPuEVg8cZ3JlZ0Brcm9h
aC5jb20ACgkQMUfUDdst+yma0QCfVPa7r1rHqljz1UgvjKJTzVg8g9wAn1W1mddx
MIlG+0+ZnBdaPzyzoY1O
=0LJD
-----END PGP SIGNATURE-----
Merge tag 'char-misc-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
Pull char/misc driver fixes from Greg KH:
"Here are some small char and misc driver fixes for 5.2-rc4 to resolve
a number of reported issues.
The most "notable" one here is the kernel headers in proc^Wsysfs
fixes. Those changes move the header file info into sysfs and fixes
the build issues that you reported.
Other than that, a bunch of small habanalabs driver fixes, some fpga
driver fixes, and a few other tiny driver fixes.
All of these have been in linux-next for a while with no reported
issues"
* tag 'char-misc-5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
habanalabs: Read upper bits of trace buffer from RWPHI
habanalabs: Fix virtual address access via debugfs for 2MB pages
fpga: zynqmp-fpga: Correctly handle error pointer
habanalabs: fix bug in checking huge page optimization
habanalabs: Avoid using a non-initialized MMU cache mutex
habanalabs: fix debugfs code
uapi/habanalabs: add opcode for enable/disable device debug mode
habanalabs: halt debug engines on user process close
test_firmware: Use correct snprintf() limit
genwqe: Prevent an integer overflow in the ioctl
parport: Fix mem leak in parport_register_dev_model
fpga: dfl: expand minor range when registering chrdev region
fpga: dfl: Add lockdep classes for pdata->lock
fpga: dfl: afu: Pass the correct device to dma_mapping_error()
fpga: stratix10-soc: fix use-after-free on s10_init()
w1: ds2408: Fix typo after 49695ac468 (reset on output_write retry with readback)
kheaders: Do not regenerate archive if config is not changed
kheaders: Move from proc to sysfs
lkdtm/bugs: Adjust recursion test to avoid elision
lkdtm/usercopy: Moves the KERNEL_DS test to non-canonical
This commit is contained in:
commit
1ce2c85137
27 changed files with 192 additions and 131 deletions
|
|
@ -399,7 +399,7 @@ int afu_dma_map_region(struct dfl_feature_platform_data *pdata,
|
|||
region->pages[0], 0,
|
||||
region->length,
|
||||
DMA_BIDIRECTIONAL);
|
||||
if (dma_mapping_error(&pdata->dev->dev, region->iova)) {
|
||||
if (dma_mapping_error(dfl_fpga_pdata_to_parent(pdata), region->iova)) {
|
||||
dev_err(&pdata->dev->dev, "failed to map for dma\n");
|
||||
ret = -EFAULT;
|
||||
goto unpin_pages;
|
||||
|
|
|
|||
|
|
@ -40,6 +40,13 @@ enum dfl_fpga_devt_type {
|
|||
DFL_FPGA_DEVT_MAX,
|
||||
};
|
||||
|
||||
static struct lock_class_key dfl_pdata_keys[DFL_ID_MAX];
|
||||
|
||||
static const char *dfl_pdata_key_strings[DFL_ID_MAX] = {
|
||||
"dfl-fme-pdata",
|
||||
"dfl-port-pdata",
|
||||
};
|
||||
|
||||
/**
|
||||
* dfl_dev_info - dfl feature device information.
|
||||
* @name: name string of the feature platform device.
|
||||
|
|
@ -315,7 +322,7 @@ static void dfl_chardev_uinit(void)
|
|||
for (i = 0; i < DFL_FPGA_DEVT_MAX; i++)
|
||||
if (MAJOR(dfl_chrdevs[i].devt)) {
|
||||
unregister_chrdev_region(dfl_chrdevs[i].devt,
|
||||
MINORMASK);
|
||||
MINORMASK + 1);
|
||||
dfl_chrdevs[i].devt = MKDEV(0, 0);
|
||||
}
|
||||
}
|
||||
|
|
@ -325,8 +332,8 @@ static int dfl_chardev_init(void)
|
|||
int i, ret;
|
||||
|
||||
for (i = 0; i < DFL_FPGA_DEVT_MAX; i++) {
|
||||
ret = alloc_chrdev_region(&dfl_chrdevs[i].devt, 0, MINORMASK,
|
||||
dfl_chrdevs[i].name);
|
||||
ret = alloc_chrdev_region(&dfl_chrdevs[i].devt, 0,
|
||||
MINORMASK + 1, dfl_chrdevs[i].name);
|
||||
if (ret)
|
||||
goto exit;
|
||||
}
|
||||
|
|
@ -443,11 +450,16 @@ static int build_info_commit_dev(struct build_feature_devs_info *binfo)
|
|||
struct platform_device *fdev = binfo->feature_dev;
|
||||
struct dfl_feature_platform_data *pdata;
|
||||
struct dfl_feature_info *finfo, *p;
|
||||
enum dfl_id_type type;
|
||||
int ret, index = 0;
|
||||
|
||||
if (!fdev)
|
||||
return 0;
|
||||
|
||||
type = feature_dev_id_type(fdev);
|
||||
if (WARN_ON_ONCE(type >= DFL_ID_MAX))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* we do not need to care for the memory which is associated with
|
||||
* the platform device. After calling platform_device_unregister(),
|
||||
|
|
@ -463,6 +475,8 @@ static int build_info_commit_dev(struct build_feature_devs_info *binfo)
|
|||
pdata->num = binfo->feature_num;
|
||||
pdata->dfl_cdev = binfo->cdev;
|
||||
mutex_init(&pdata->lock);
|
||||
lockdep_set_class_and_name(&pdata->lock, &dfl_pdata_keys[type],
|
||||
dfl_pdata_key_strings[type]);
|
||||
|
||||
/*
|
||||
* the count should be initialized to 0 to make sure
|
||||
|
|
@ -497,7 +511,7 @@ static int build_info_commit_dev(struct build_feature_devs_info *binfo)
|
|||
|
||||
ret = platform_device_add(binfo->feature_dev);
|
||||
if (!ret) {
|
||||
if (feature_dev_id_type(binfo->feature_dev) == PORT_ID)
|
||||
if (type == PORT_ID)
|
||||
dfl_fpga_cdev_add_port_dev(binfo->cdev,
|
||||
binfo->feature_dev);
|
||||
else
|
||||
|
|
|
|||
|
|
@ -507,12 +507,16 @@ static int __init s10_init(void)
|
|||
if (!fw_np)
|
||||
return -ENODEV;
|
||||
|
||||
of_node_get(fw_np);
|
||||
np = of_find_matching_node(fw_np, s10_of_match);
|
||||
if (!np)
|
||||
if (!np) {
|
||||
of_node_put(fw_np);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
of_node_put(np);
|
||||
ret = of_platform_populate(fw_np, s10_of_match, NULL, NULL);
|
||||
of_node_put(fw_np);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ static int zynqmp_fpga_ops_write(struct fpga_manager *mgr,
|
|||
char *kbuf;
|
||||
int ret;
|
||||
|
||||
if (!eemi_ops || !eemi_ops->fpga_load)
|
||||
if (IS_ERR_OR_NULL(eemi_ops) || !eemi_ops->fpga_load)
|
||||
return -ENXIO;
|
||||
|
||||
priv = mgr->priv;
|
||||
|
|
@ -81,7 +81,7 @@ static enum fpga_mgr_states zynqmp_fpga_ops_state(struct fpga_manager *mgr)
|
|||
const struct zynqmp_eemi_ops *eemi_ops = zynqmp_pm_get_eemi_ops();
|
||||
u32 status;
|
||||
|
||||
if (!eemi_ops || !eemi_ops->fpga_get_status)
|
||||
if (IS_ERR_OR_NULL(eemi_ops) || !eemi_ops->fpga_get_status)
|
||||
return FPGA_MGR_STATE_UNKNOWN;
|
||||
|
||||
eemi_ops->fpga_get_status(&status);
|
||||
|
|
|
|||
Loading…
Reference in a new issue