Commit ca20f162 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'char-misc-6.7-rc5' 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 fixes for 6.7-rc5 for a variety of small driver
  subsystems. Included in here are:

   - debugfs revert for reported issue

   - greybus revert for reported issue

   - greybus fixup for endian build warning

   - coresight driver fixes

   - nvmem driver fixes

   - devcoredump fix

   - parport new device id

   - ndtest build fix

  All of these have ben in linux-next with no reported issues"

* tag 'char-misc-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
  nvmem: Do not expect fixed layouts to grab a layout driver
  parport: Add support for Brainboxes IX/UC/PX parallel cards
  Revert "greybus: gb-beagleplay: Ensure le for values in transport"
  greybus: gb-beagleplay: Ensure le for values in transport
  greybus: BeaglePlay driver needs CRC_CCITT
  Revert "debugfs: annotate debugfs handlers vs. removal with lockdep"
  devcoredump: Send uevent once devcd is ready
  ndtest: fix typo class_regster -> class_register
  misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write
  misc: mei: client.c: return negative error code in mei_cl_write
  mei: pxp: fix mei_pxp_send_message return value
  coresight: ultrasoc-smb: Fix uninitialized before use buf_hw_base
  coresight: ultrasoc-smb: Config SMB buffer before register sink
  coresight: ultrasoc-smb: Fix sleep while close preempt in enable_smb
  Documentation: coresight: fix `make refcheckdocs` warning
  hwtracing: hisi_ptt: Don't try to attach a task
  hwtracing: hisi_ptt: Handle the interrupt in hardirq context
  hwtracing: hisi_ptt: Add dummy callback pmu::read()
  coresight: Fix crash when Perf and sysfs modes are used concurrently
  coresight: etm4x: Remove bogous __exit annotation for some functions
parents b10a3cca b7c1e537
...@@ -130,7 +130,7 @@ Misc: ...@@ -130,7 +130,7 @@ Misc:
Device Tree Bindings Device Tree Bindings
-------------------- --------------------
See Documentation/devicetree/bindings/arm/arm,coresight-\*.yaml for details. See ``Documentation/devicetree/bindings/arm/arm,coresight-*.yaml`` for details.
As of this writing drivers for ITM, STMs and CTIs are not provided but are As of this writing drivers for ITM, STMs and CTIs are not provided but are
expected to be added as the solution matures. expected to be added as the solution matures.
......
...@@ -362,6 +362,7 @@ void dev_coredumpm(struct device *dev, struct module *owner, ...@@ -362,6 +362,7 @@ void dev_coredumpm(struct device *dev, struct module *owner,
devcd->devcd_dev.class = &devcd_class; devcd->devcd_dev.class = &devcd_class;
mutex_lock(&devcd->mutex); mutex_lock(&devcd->mutex);
dev_set_uevent_suppress(&devcd->devcd_dev, true);
if (device_add(&devcd->devcd_dev)) if (device_add(&devcd->devcd_dev))
goto put_device; goto put_device;
...@@ -376,6 +377,8 @@ void dev_coredumpm(struct device *dev, struct module *owner, ...@@ -376,6 +377,8 @@ void dev_coredumpm(struct device *dev, struct module *owner,
"devcoredump")) "devcoredump"))
dev_warn(dev, "devcoredump create_link failed\n"); dev_warn(dev, "devcoredump create_link failed\n");
dev_set_uevent_suppress(&devcd->devcd_dev, false);
kobject_uevent(&devcd->devcd_dev.kobj, KOBJ_ADD);
INIT_DELAYED_WORK(&devcd->del_wk, devcd_del); INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);
schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT); schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT);
mutex_unlock(&devcd->mutex); mutex_unlock(&devcd->mutex);
......
...@@ -20,6 +20,7 @@ if GREYBUS ...@@ -20,6 +20,7 @@ if GREYBUS
config GREYBUS_BEAGLEPLAY config GREYBUS_BEAGLEPLAY
tristate "Greybus BeaglePlay driver" tristate "Greybus BeaglePlay driver"
depends on SERIAL_DEV_BUS depends on SERIAL_DEV_BUS
select CRC_CCITT
help help
Select this option if you have a BeaglePlay where CC1352 Select this option if you have a BeaglePlay where CC1352
co-processor acts as Greybus SVC. co-processor acts as Greybus SVC.
......
...@@ -493,7 +493,7 @@ static void etm_event_start(struct perf_event *event, int flags) ...@@ -493,7 +493,7 @@ static void etm_event_start(struct perf_event *event, int flags)
goto fail_end_stop; goto fail_end_stop;
/* Finally enable the tracer */ /* Finally enable the tracer */
if (coresight_enable_source(csdev, CS_MODE_PERF, event)) if (source_ops(csdev)->enable(csdev, event, CS_MODE_PERF))
goto fail_disable_path; goto fail_disable_path;
/* /*
...@@ -587,7 +587,7 @@ static void etm_event_stop(struct perf_event *event, int mode) ...@@ -587,7 +587,7 @@ static void etm_event_stop(struct perf_event *event, int mode)
return; return;
/* stop tracer */ /* stop tracer */
coresight_disable_source(csdev, event); source_ops(csdev)->disable(csdev, event);
/* tell the core */ /* tell the core */
event->hw.state = PERF_HES_STOPPED; event->hw.state = PERF_HES_STOPPED;
......
...@@ -2224,7 +2224,7 @@ static void clear_etmdrvdata(void *info) ...@@ -2224,7 +2224,7 @@ static void clear_etmdrvdata(void *info)
per_cpu(delayed_probe, cpu) = NULL; per_cpu(delayed_probe, cpu) = NULL;
} }
static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata) static void etm4_remove_dev(struct etmv4_drvdata *drvdata)
{ {
bool had_delayed_probe; bool had_delayed_probe;
/* /*
...@@ -2253,7 +2253,7 @@ static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata) ...@@ -2253,7 +2253,7 @@ static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata)
} }
} }
static void __exit etm4_remove_amba(struct amba_device *adev) static void etm4_remove_amba(struct amba_device *adev)
{ {
struct etmv4_drvdata *drvdata = dev_get_drvdata(&adev->dev); struct etmv4_drvdata *drvdata = dev_get_drvdata(&adev->dev);
...@@ -2261,7 +2261,7 @@ static void __exit etm4_remove_amba(struct amba_device *adev) ...@@ -2261,7 +2261,7 @@ static void __exit etm4_remove_amba(struct amba_device *adev)
etm4_remove_dev(drvdata); etm4_remove_dev(drvdata);
} }
static int __exit etm4_remove_platform_dev(struct platform_device *pdev) static int etm4_remove_platform_dev(struct platform_device *pdev)
{ {
struct etmv4_drvdata *drvdata = dev_get_drvdata(&pdev->dev); struct etmv4_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
......
...@@ -99,7 +99,7 @@ static int smb_open(struct inode *inode, struct file *file) ...@@ -99,7 +99,7 @@ static int smb_open(struct inode *inode, struct file *file)
struct smb_drv_data, miscdev); struct smb_drv_data, miscdev);
int ret = 0; int ret = 0;
mutex_lock(&drvdata->mutex); spin_lock(&drvdata->spinlock);
if (drvdata->reading) { if (drvdata->reading) {
ret = -EBUSY; ret = -EBUSY;
...@@ -115,7 +115,7 @@ static int smb_open(struct inode *inode, struct file *file) ...@@ -115,7 +115,7 @@ static int smb_open(struct inode *inode, struct file *file)
drvdata->reading = true; drvdata->reading = true;
out: out:
mutex_unlock(&drvdata->mutex); spin_unlock(&drvdata->spinlock);
return ret; return ret;
} }
...@@ -132,10 +132,8 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len, ...@@ -132,10 +132,8 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len,
if (!len) if (!len)
return 0; return 0;
mutex_lock(&drvdata->mutex);
if (!sdb->data_size) if (!sdb->data_size)
goto out; return 0;
to_copy = min(sdb->data_size, len); to_copy = min(sdb->data_size, len);
...@@ -145,20 +143,15 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len, ...@@ -145,20 +143,15 @@ static ssize_t smb_read(struct file *file, char __user *data, size_t len,
if (copy_to_user(data, sdb->buf_base + sdb->buf_rdptr, to_copy)) { if (copy_to_user(data, sdb->buf_base + sdb->buf_rdptr, to_copy)) {
dev_dbg(dev, "Failed to copy data to user\n"); dev_dbg(dev, "Failed to copy data to user\n");
to_copy = -EFAULT; return -EFAULT;
goto out;
} }
*ppos += to_copy; *ppos += to_copy;
smb_update_read_ptr(drvdata, to_copy); smb_update_read_ptr(drvdata, to_copy);
dev_dbg(dev, "%zu bytes copied\n", to_copy);
out:
if (!sdb->data_size) if (!sdb->data_size)
smb_reset_buffer(drvdata); smb_reset_buffer(drvdata);
mutex_unlock(&drvdata->mutex);
dev_dbg(dev, "%zu bytes copied\n", to_copy);
return to_copy; return to_copy;
} }
...@@ -167,9 +160,9 @@ static int smb_release(struct inode *inode, struct file *file) ...@@ -167,9 +160,9 @@ static int smb_release(struct inode *inode, struct file *file)
struct smb_drv_data *drvdata = container_of(file->private_data, struct smb_drv_data *drvdata = container_of(file->private_data,
struct smb_drv_data, miscdev); struct smb_drv_data, miscdev);
mutex_lock(&drvdata->mutex); spin_lock(&drvdata->spinlock);
drvdata->reading = false; drvdata->reading = false;
mutex_unlock(&drvdata->mutex); spin_unlock(&drvdata->spinlock);
return 0; return 0;
} }
...@@ -262,7 +255,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode, ...@@ -262,7 +255,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode,
struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent); struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent);
int ret = 0; int ret = 0;
mutex_lock(&drvdata->mutex); spin_lock(&drvdata->spinlock);
/* Do nothing, the trace data is reading by other interface now */ /* Do nothing, the trace data is reading by other interface now */
if (drvdata->reading) { if (drvdata->reading) {
...@@ -294,7 +287,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode, ...@@ -294,7 +287,7 @@ static int smb_enable(struct coresight_device *csdev, enum cs_mode mode,
dev_dbg(&csdev->dev, "Ultrasoc SMB enabled\n"); dev_dbg(&csdev->dev, "Ultrasoc SMB enabled\n");
out: out:
mutex_unlock(&drvdata->mutex); spin_unlock(&drvdata->spinlock);
return ret; return ret;
} }
...@@ -304,7 +297,7 @@ static int smb_disable(struct coresight_device *csdev) ...@@ -304,7 +297,7 @@ static int smb_disable(struct coresight_device *csdev)
struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent); struct smb_drv_data *drvdata = dev_get_drvdata(csdev->dev.parent);
int ret = 0; int ret = 0;
mutex_lock(&drvdata->mutex); spin_lock(&drvdata->spinlock);
if (drvdata->reading) { if (drvdata->reading) {
ret = -EBUSY; ret = -EBUSY;
...@@ -327,7 +320,7 @@ static int smb_disable(struct coresight_device *csdev) ...@@ -327,7 +320,7 @@ static int smb_disable(struct coresight_device *csdev)
dev_dbg(&csdev->dev, "Ultrasoc SMB disabled\n"); dev_dbg(&csdev->dev, "Ultrasoc SMB disabled\n");
out: out:
mutex_unlock(&drvdata->mutex); spin_unlock(&drvdata->spinlock);
return ret; return ret;
} }
...@@ -408,7 +401,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev, ...@@ -408,7 +401,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev,
if (!buf) if (!buf)
return 0; return 0;
mutex_lock(&drvdata->mutex); spin_lock(&drvdata->spinlock);
/* Don't do anything if another tracer is using this sink. */ /* Don't do anything if another tracer is using this sink. */
if (atomic_read(&csdev->refcnt) != 1) if (atomic_read(&csdev->refcnt) != 1)
...@@ -432,7 +425,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev, ...@@ -432,7 +425,7 @@ static unsigned long smb_update_buffer(struct coresight_device *csdev,
if (!buf->snapshot && lost) if (!buf->snapshot && lost)
perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED); perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED);
out: out:
mutex_unlock(&drvdata->mutex); spin_unlock(&drvdata->spinlock);
return data_size; return data_size;
} }
...@@ -484,7 +477,6 @@ static int smb_init_data_buffer(struct platform_device *pdev, ...@@ -484,7 +477,6 @@ static int smb_init_data_buffer(struct platform_device *pdev,
static void smb_init_hw(struct smb_drv_data *drvdata) static void smb_init_hw(struct smb_drv_data *drvdata)
{ {
smb_disable_hw(drvdata); smb_disable_hw(drvdata);
smb_reset_buffer(drvdata);
writel(SMB_LB_CFG_LO_DEFAULT, drvdata->base + SMB_LB_CFG_LO_REG); writel(SMB_LB_CFG_LO_DEFAULT, drvdata->base + SMB_LB_CFG_LO_REG);
writel(SMB_LB_CFG_HI_DEFAULT, drvdata->base + SMB_LB_CFG_HI_REG); writel(SMB_LB_CFG_HI_DEFAULT, drvdata->base + SMB_LB_CFG_HI_REG);
...@@ -590,37 +582,33 @@ static int smb_probe(struct platform_device *pdev) ...@@ -590,37 +582,33 @@ static int smb_probe(struct platform_device *pdev)
return ret; return ret;
} }
mutex_init(&drvdata->mutex); ret = smb_config_inport(dev, true);
if (ret)
return ret;
smb_reset_buffer(drvdata);
platform_set_drvdata(pdev, drvdata);
spin_lock_init(&drvdata->spinlock);
drvdata->pid = -1; drvdata->pid = -1;
ret = smb_register_sink(pdev, drvdata); ret = smb_register_sink(pdev, drvdata);
if (ret) { if (ret) {
smb_config_inport(&pdev->dev, false);
dev_err(dev, "Failed to register SMB sink\n"); dev_err(dev, "Failed to register SMB sink\n");
return ret; return ret;
} }
ret = smb_config_inport(dev, true);
if (ret) {
smb_unregister_sink(drvdata);
return ret;
}
platform_set_drvdata(pdev, drvdata);
return 0; return 0;
} }
static int smb_remove(struct platform_device *pdev) static int smb_remove(struct platform_device *pdev)
{ {
struct smb_drv_data *drvdata = platform_get_drvdata(pdev); struct smb_drv_data *drvdata = platform_get_drvdata(pdev);
int ret;
ret = smb_config_inport(&pdev->dev, false);
if (ret)
return ret;
smb_unregister_sink(drvdata); smb_unregister_sink(drvdata);
smb_config_inport(&pdev->dev, false);
return 0; return 0;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#define _ULTRASOC_SMB_H #define _ULTRASOC_SMB_H
#include <linux/miscdevice.h> #include <linux/miscdevice.h>
#include <linux/mutex.h> #include <linux/spinlock.h>
/* Offset of SMB global registers */ /* Offset of SMB global registers */
#define SMB_GLB_CFG_REG 0x00 #define SMB_GLB_CFG_REG 0x00
...@@ -105,7 +105,7 @@ struct smb_data_buffer { ...@@ -105,7 +105,7 @@ struct smb_data_buffer {
* @csdev: Component vitals needed by the framework. * @csdev: Component vitals needed by the framework.
* @sdb: Data buffer for SMB. * @sdb: Data buffer for SMB.
* @miscdev: Specifics to handle "/dev/xyz.smb" entry. * @miscdev: Specifics to handle "/dev/xyz.smb" entry.
* @mutex: Control data access to one at a time. * @spinlock: Control data access to one at a time.
* @reading: Synchronise user space access to SMB buffer. * @reading: Synchronise user space access to SMB buffer.
* @pid: Process ID of the process being monitored by the * @pid: Process ID of the process being monitored by the
* session that is using this component. * session that is using this component.
...@@ -116,7 +116,7 @@ struct smb_drv_data { ...@@ -116,7 +116,7 @@ struct smb_drv_data {
struct coresight_device *csdev; struct coresight_device *csdev;
struct smb_data_buffer sdb; struct smb_data_buffer sdb;
struct miscdevice miscdev; struct miscdevice miscdev;
struct mutex mutex; spinlock_t spinlock;
bool reading; bool reading;
pid_t pid; pid_t pid;
enum cs_mode mode; enum cs_mode mode;
......
...@@ -342,9 +342,9 @@ static int hisi_ptt_register_irq(struct hisi_ptt *hisi_ptt) ...@@ -342,9 +342,9 @@ static int hisi_ptt_register_irq(struct hisi_ptt *hisi_ptt)
return ret; return ret;
hisi_ptt->trace_irq = pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ); hisi_ptt->trace_irq = pci_irq_vector(pdev, HISI_PTT_TRACE_DMA_IRQ);
ret = devm_request_threaded_irq(&pdev->dev, hisi_ptt->trace_irq, ret = devm_request_irq(&pdev->dev, hisi_ptt->trace_irq, hisi_ptt_isr,
NULL, hisi_ptt_isr, 0, IRQF_NOBALANCING | IRQF_NO_THREAD, DRV_NAME,
DRV_NAME, hisi_ptt); hisi_ptt);
if (ret) { if (ret) {
pci_err(pdev, "failed to request irq %d, ret = %d\n", pci_err(pdev, "failed to request irq %d, ret = %d\n",
hisi_ptt->trace_irq, ret); hisi_ptt->trace_irq, ret);
...@@ -1000,6 +1000,9 @@ static int hisi_ptt_pmu_event_init(struct perf_event *event) ...@@ -1000,6 +1000,9 @@ static int hisi_ptt_pmu_event_init(struct perf_event *event)
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
if (event->attach_state & PERF_ATTACH_TASK)
return -EOPNOTSUPP;
if (event->attr.type != hisi_ptt->hisi_ptt_pmu.type) if (event->attr.type != hisi_ptt->hisi_ptt_pmu.type)
return -ENOENT; return -ENOENT;
...@@ -1178,6 +1181,10 @@ static void hisi_ptt_pmu_del(struct perf_event *event, int flags) ...@@ -1178,6 +1181,10 @@ static void hisi_ptt_pmu_del(struct perf_event *event, int flags)
hisi_ptt_pmu_stop(event, PERF_EF_UPDATE); hisi_ptt_pmu_stop(event, PERF_EF_UPDATE);
} }
static void hisi_ptt_pmu_read(struct perf_event *event)
{
}
static void hisi_ptt_remove_cpuhp_instance(void *hotplug_node) static void hisi_ptt_remove_cpuhp_instance(void *hotplug_node)
{ {
cpuhp_state_remove_instance_nocalls(hisi_ptt_pmu_online, hotplug_node); cpuhp_state_remove_instance_nocalls(hisi_ptt_pmu_online, hotplug_node);
...@@ -1221,6 +1228,7 @@ static int hisi_ptt_register_pmu(struct hisi_ptt *hisi_ptt) ...@@ -1221,6 +1228,7 @@ static int hisi_ptt_register_pmu(struct hisi_ptt *hisi_ptt)
.stop = hisi_ptt_pmu_stop, .stop = hisi_ptt_pmu_stop,
.add = hisi_ptt_pmu_add, .add = hisi_ptt_pmu_add,
.del = hisi_ptt_pmu_del, .del = hisi_ptt_pmu_del,
.read = hisi_ptt_pmu_read,
}; };
reg = readl(hisi_ptt->iobase + HISI_PTT_LOCATION); reg = readl(hisi_ptt->iobase + HISI_PTT_LOCATION);
......
...@@ -2011,7 +2011,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time ...@@ -2011,7 +2011,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time
mei_hdr = mei_msg_hdr_init(cb); mei_hdr = mei_msg_hdr_init(cb);
if (IS_ERR(mei_hdr)) { if (IS_ERR(mei_hdr)) {
rets = -PTR_ERR(mei_hdr); rets = PTR_ERR(mei_hdr);
mei_hdr = NULL; mei_hdr = NULL;
goto err; goto err;
} }
...@@ -2032,7 +2032,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time ...@@ -2032,7 +2032,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, unsigned long time
hbuf_slots = mei_hbuf_empty_slots(dev); hbuf_slots = mei_hbuf_empty_slots(dev);
if (hbuf_slots < 0) { if (hbuf_slots < 0) {
rets = -EOVERFLOW; buf_len = -EOVERFLOW;
goto out; goto out;
} }
......
...@@ -84,9 +84,10 @@ mei_pxp_send_message(struct device *dev, const void *message, size_t size, unsig ...@@ -84,9 +84,10 @@ mei_pxp_send_message(struct device *dev, const void *message, size_t size, unsig
byte = ret; byte = ret;
break; break;
} }
return byte;
} }
return byte; return 0;
} }
/** /**
......
...@@ -796,6 +796,12 @@ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem) ...@@ -796,6 +796,12 @@ static struct nvmem_layout *nvmem_layout_get(struct nvmem_device *nvmem)
if (!layout_np) if (!layout_np)
return NULL; return NULL;
/* Fixed layouts don't have a matching driver */
if (of_device_is_compatible(layout_np, "fixed-layout")) {
of_node_put(layout_np);
return NULL;
}
/* /*
* In case the nvmem device was built-in while the layout was built as a * In case the nvmem device was built-in while the layout was built as a
* module, we shall manually request the layout driver loading otherwise * module, we shall manually request the layout driver loading otherwise
......
...@@ -2658,6 +2658,8 @@ enum parport_pc_pci_cards { ...@@ -2658,6 +2658,8 @@ enum parport_pc_pci_cards {
asix_ax99100, asix_ax99100,
quatech_sppxp100, quatech_sppxp100,
wch_ch382l, wch_ch382l,
brainboxes_uc146,
brainboxes_px203,
}; };
...@@ -2737,6 +2739,8 @@ static struct parport_pc_pci { ...@@ -2737,6 +2739,8 @@ static struct parport_pc_pci {
/* asix_ax99100 */ { 1, { { 0, 1 }, } }, /* asix_ax99100 */ { 1, { { 0, 1 }, } },
/* quatech_sppxp100 */ { 1, { { 0, 1 }, } }, /* quatech_sppxp100 */ { 1, { { 0, 1 }, } },
/* wch_ch382l */ { 1, { { 2, -1 }, } }, /* wch_ch382l */ { 1, { { 2, -1 }, } },
/* brainboxes_uc146 */ { 1, { { 3, -1 }, } },
/* brainboxes_px203 */ { 1, { { 0, -1 }, } },
}; };
static const struct pci_device_id parport_pc_pci_tbl[] = { static const struct pci_device_id parport_pc_pci_tbl[] = {
...@@ -2833,6 +2837,23 @@ static const struct pci_device_id parport_pc_pci_tbl[] = { ...@@ -2833,6 +2837,23 @@ static const struct pci_device_id parport_pc_pci_tbl[] = {
PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 }, PCI_ANY_ID, PCI_ANY_ID, 0, 0, quatech_sppxp100 },
/* WCH CH382L PCI-E single parallel port card */ /* WCH CH382L PCI-E single parallel port card */
{ 0x1c00, 0x3050, 0x1c00, 0x3050, 0, 0, wch_ch382l }, { 0x1c00, 0x3050, 0x1c00, 0x3050, 0, 0, wch_ch382l },
/* Brainboxes IX-500/550 */
{ PCI_VENDOR_ID_INTASHIELD, 0x402a,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
/* Brainboxes UC-146/UC-157 */
{ PCI_VENDOR_ID_INTASHIELD, 0x0be1,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
{ PCI_VENDOR_ID_INTASHIELD, 0x0be2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_uc146 },
/* Brainboxes PX-146/PX-257 */
{ PCI_VENDOR_ID_INTASHIELD, 0x401c,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
/* Brainboxes PX-203 */
{ PCI_VENDOR_ID_INTASHIELD, 0x4007,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, brainboxes_px203 },
/* Brainboxes PX-475 */
{ PCI_VENDOR_ID_INTASHIELD, 0x401f,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, oxsemi_pcie_pport },
{ 0, } /* terminate list */ { 0, } /* terminate list */
}; };
MODULE_DEVICE_TABLE(pci, parport_pc_pci_tbl); MODULE_DEVICE_TABLE(pci, parport_pc_pci_tbl);
......
...@@ -108,12 +108,6 @@ int debugfs_file_get(struct dentry *dentry) ...@@ -108,12 +108,6 @@ int debugfs_file_get(struct dentry *dentry)
kfree(fsd); kfree(fsd);
fsd = READ_ONCE(dentry->d_fsdata); fsd = READ_ONCE(dentry->d_fsdata);
} }
#ifdef CONFIG_LOCKDEP
fsd->lock_name = kasprintf(GFP_KERNEL, "debugfs:%pd", dentry);
lockdep_register_key(&fsd->key);
lockdep_init_map(&fsd->lockdep_map, fsd->lock_name ?: "debugfs",
&fsd->key, 0);
#endif
INIT_LIST_HEAD(&fsd->cancellations); INIT_LIST_HEAD(&fsd->cancellations);
mutex_init(&fsd->cancellations_mtx); mutex_init(&fsd->cancellations_mtx);
} }
...@@ -132,8 +126,6 @@ int debugfs_file_get(struct dentry *dentry) ...@@ -132,8 +126,6 @@ int debugfs_file_get(struct dentry *dentry)
if (!refcount_inc_not_zero(&fsd->active_users)) if (!refcount_inc_not_zero(&fsd->active_users))
return -EIO; return -EIO;
lock_map_acquire_read(&fsd->lockdep_map);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(debugfs_file_get); EXPORT_SYMBOL_GPL(debugfs_file_get);
...@@ -151,8 +143,6 @@ void debugfs_file_put(struct dentry *dentry) ...@@ -151,8 +143,6 @@ void debugfs_file_put(struct dentry *dentry)
{ {
struct debugfs_fsdata *fsd = READ_ONCE(dentry->d_fsdata); struct debugfs_fsdata *fsd = READ_ONCE(dentry->d_fsdata);
lock_map_release(&fsd->lockdep_map);
if (refcount_dec_and_test(&fsd->active_users)) if (refcount_dec_and_test(&fsd->active_users))
complete(&fsd->active_users_drained); complete(&fsd->active_users_drained);
} }
......
...@@ -243,10 +243,6 @@ static void debugfs_release_dentry(struct dentry *dentry) ...@@ -243,10 +243,6 @@ static void debugfs_release_dentry(struct dentry *dentry)
/* check it wasn't a dir (no fsdata) or automount (no real_fops) */ /* check it wasn't a dir (no fsdata) or automount (no real_fops) */
if (fsd && fsd->real_fops) { if (fsd && fsd->real_fops) {
#ifdef CONFIG_LOCKDEP
lockdep_unregister_key(&fsd->key);
kfree(fsd->lock_name);
#endif
WARN_ON(!list_empty(&fsd->cancellations)); WARN_ON(!list_empty(&fsd->cancellations));
mutex_destroy(&fsd->cancellations_mtx); mutex_destroy(&fsd->cancellations_mtx);
} }
...@@ -755,9 +751,6 @@ static void __debugfs_file_removed(struct dentry *dentry) ...@@ -755,9 +751,6 @@ static void __debugfs_file_removed(struct dentry *dentry)
if ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT) if ((unsigned long)fsd & DEBUGFS_FSDATA_IS_REAL_FOPS_BIT)
return; return;
lock_map_acquire(&fsd->lockdep_map);
lock_map_release(&fsd->lockdep_map);
/* if we hit zero, just wait for all to finish */ /* if we hit zero, just wait for all to finish */
if (!refcount_dec_and_test(&fsd->active_users)) { if (!refcount_dec_and_test(&fsd->active_users)) {
wait_for_completion(&fsd->active_users_drained); wait_for_completion(&fsd->active_users_drained);
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#ifndef _DEBUGFS_INTERNAL_H_ #ifndef _DEBUGFS_INTERNAL_H_
#define _DEBUGFS_INTERNAL_H_ #define _DEBUGFS_INTERNAL_H_
#include <linux/lockdep.h>
#include <linux/list.h> #include <linux/list.h>
struct file_operations; struct file_operations;
...@@ -25,11 +24,6 @@ struct debugfs_fsdata { ...@@ -25,11 +24,6 @@ struct debugfs_fsdata {
struct { struct {
refcount_t active_users; refcount_t active_users;
struct completion active_users_drained; struct completion active_users_drained;
#ifdef CONFIG_LOCKDEP
struct lockdep_map lockdep_map;
struct lock_class_key key;
char *lock_name;
#endif
/* protect cancellations */ /* protect cancellations */
struct mutex cancellations_mtx; struct mutex cancellations_mtx;
......
...@@ -924,7 +924,7 @@ static __init int ndtest_init(void) ...@@ -924,7 +924,7 @@ static __init int ndtest_init(void)
nfit_test_setup(ndtest_resource_lookup, NULL); nfit_test_setup(ndtest_resource_lookup, NULL);
rc = class_regster(&ndtest_dimm_class); rc = class_register(&ndtest_dimm_class);
if (rc) if (rc)
goto err_register; goto err_register;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment