Linux 6.6.1
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.1 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/serial/rs485.yaml | 4 Makefile | 2 drivers/bluetooth/hci_bcm4377.c | 5 drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c | 3 drivers/gpu/drm/amd/display/dc/dce/dmub_psr.c | 3 drivers/misc/pci_endpoint_test.c | 4 drivers/pci/quirks.c | 8 drivers/power/supply/power_supply_core.c | 8 drivers/tty/n_gsm.c | 2 drivers/tty/serial/8250/8250_pci.c | 327 +++++++++++++++++++- drivers/tty/serial/serial_core.c | 2 drivers/usb/gadget/legacy/raw_gadget.c | 26 - drivers/usb/storage/unusual_cypress.h | 2 drivers/usb/typec/tcpm/tcpm.c | 5 fs/tracefs/event_inode.c | 288 ++++++++++------- include/linux/pci_ids.h | 1 include/linux/power_supply.h | 2 include/linux/trace_events.h | 4 kernel/trace/trace.c | 15 kernel/trace/trace.h | 3 kernel/trace/trace_events.c | 31 + kernel/trace/trace_events_filter.c | 3 sound/hda/intel-dsp-config.c | 6 sound/soc/sof/sof-pci-dev.c | 7 sound/usb/quirks.c | 2 tools/perf/util/evlist.c | 5 26 files changed, 623 insertions(+), 145 deletions(-)
Andrey Konovalov (1):
usb: raw-gadget: properly handle interrupted requests
Badhri Jagan Sridharan (1):
usb: typec: tcpm: Add additional checks for contaminant
Cameron Williams (9):
tty: 8250: Remove UC-257 and UC-431
tty: 8250: Add support for additional Brainboxes UC cards
tty: 8250: Add support for Brainboxes UP cards
tty: 8250: Add support for Intashield IS-100
tty: 8250: Fix port count of PX-257
tty: 8250: Fix up PX-803/PX-857
tty: 8250: Add support for additional Brainboxes PX cards
tty: 8250: Add support for Intashield IX cards
tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks
Daniel Starke (1):
tty: n_gsm: fix race condition in status line change on dead connections
Francesco Dolcini (1):
dt-bindings: serial: rs485: Add rs485-rts-active-high
Greg Kroah-Hartman (1):
Linux 6.6.1
Ian Rogers (1):
perf evlist: Avoid frequency mode for the dummy event
Janne Grunau (1):
Bluetooth: hci_bcm4377: Mark bcm4378/bcm4387 as BROKEN_LE_CODED
Jimmy Hu (1):
usb: typec: tcpm: Fix NULL pointer dereference in tcpm_pd_svdm()
Kai-Heng Feng (1):
power: supply: core: Use blocking_notifier_call_chain to avoid RCU complaint
LihaSika (1):
usb: storage: set 1.50 as the lower bcdDevice for older "Super Top" compatibility
Mark Hasemeyer (2):
ALSA: hda: intel-dsp-config: Fix JSL Chromebook quirk detection
ASoC: SOF: sof-pci-dev: Fix community key quirk detection
Max McCarthy (1):
ALSA: usb-audio: add quirk flag to enable native DSD for McIntosh devices
Nicholas Kazlauskas (1):
drm/amd/display: Don't use fsleep for PSR exit waits
Siddharth Vadapalli (1):
misc: pci_endpoint_test: Add deviceID for J721S2 PCIe EP device support
Steven Rostedt (Google) (5):
tracing: Have trace_event_file have ref counters
eventfs: Remove "is_freed" union with rcu head
eventfs: Save ownership and mode
eventfs: Delete eventfs_inode when the last dentry is freed
eventfs: Use simple_recursive_removal() to clean up dentries
Tony Lindgren (1):
serial: core: Fix runtime PM handling for pending tx
Vicki Pfau (1):
PCI: Prevent xHCI driver from claiming AMD VanGogh USB3 DRD device
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/serial/rs485.yaml +4 -0
@@ -29,6 +29,10 @@ properties: default: 0 maximum: 100 + rs485-rts-active-high: + description: drive RTS high when sending (this is the default). + $ref: /schemas/types.yaml#/definitions/flag + rs485-rts-active-low: description: drive RTS low when sending (default is high). $ref: /schemas/types.yaml#/definitions/flag
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 0 +SUBLEVEL = 1 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
drivers/bluetooth/hci_bcm4377.c +5 -0
@@ -512,6 +512,7 @@ struct bcm4377_hw { unsigned long disable_aspm : 1; unsigned long broken_ext_scan : 1; unsigned long broken_mws_transport_config : 1; + unsigned long broken_le_coded : 1;int (*send_calibration)(struct bcm4377_data *bcm4377); int (*send_ptb)(struct bcm4377_data *bcm4377,
@@ -2372,6 +2373,8 @@ static int bcm4377_probe(struct pci_dev *pdev, const struct pci_device_id *id)set_bit (HCI_QUIRK_BROKEN_MWS_TRANSPORT_CONFIG , &hdev->quirks);if (bcm4377->hw->broken_ext_scan)set_bit (HCI_QUIRK_BROKEN_EXT_SCAN , &hdev->quirks); +if (bcm4377->hw->broken_le_coded) +set_bit (HCI_QUIRK_BROKEN_LE_CODED , &hdev->quirks);pci_set_drvdata (pdev, bcm4377);hci_set_drvdata (hdev, bcm4377);
@@ -2461,6 +2464,7 @@ static const struct bcm4377_hw bcm4377_hw_variants[] = { .bar0_core2_window2 = 0x18107000, .has_bar0_core2_window2 = true, .broken_mws_transport_config = true, + .broken_le_coded = true, .send_calibration = bcm4378_send_calibration, .send_ptb = bcm4378_send_ptb, },
@@ -2474,6 +2478,7 @@ static const struct bcm4377_hw bcm4377_hw_variants[] = { .has_bar0_core2_window2 = true, .clear_pciecfg_subsystem_ctrl_bit19 = true, .broken_mws_transport_config = true, + .broken_le_coded = true, .send_calibration = bcm4387_send_calibration, .send_ptb = bcm4378_send_ptb, },
drivers/gpu/drm/amd/display/dc/dce/dce_dmcu.c +2 -1
@@ -586,7 +586,8 @@ static void dcn10_dmcu_set_psr_enable(struct dmcu *dmcu, bool enable, bool wait)if (state ==PSR_STATE0 )break ; } -fsleep (500 ); +/* must *not* be fsleep - this can be called from high irq levels */ +udelay (500 ); }/* assert if max retry hit */
drivers/gpu/drm/amd/display/dc/dce/dmub_psr.c +2 -1
@@ -216,7 +216,8 @@ static void dmub_psr_enable(struct dmub_psr *dmub, bool enable, bool wait, uint8break ; } -fsleep (500 ); +/* must *not* be fsleep - this can be called from high irq levels */ +udelay (500 ); }/* assert if max retry hit */
drivers/misc/pci_endpoint_test.c +4 -0
@@ -71,6 +71,7 @@#define PCI_DEVICE_ID_TI_AM654 0xb00c#define PCI_DEVICE_ID_TI_J7200 0xb00f#define PCI_DEVICE_ID_TI_AM64 0xb010 +#define PCI_DEVICE_ID_TI_J721S2 0xb013#define PCI_DEVICE_ID_LS1088A 0x80c0#define PCI_DEVICE_ID_IMX8 0x0808
@@ -999,6 +1000,9 @@ static const struct pci_device_id pci_endpoint_test_tbl[] = { { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_AM64), .driver_data = (kernel_ulong_t)&j721e_data, }, + { PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_J721S2), + .driver_data = (kernel_ulong_t)&j721e_data, + }, { } };MODULE_DEVICE_TABLE (pci, pci_endpoint_test_tbl);
drivers/pci/quirks.c +5 -3
@@ -690,7 +690,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_/* * In the AMD NL platform, this device ([1022:7912]) has a class code of * PCI_CLASS_SERIAL_USB_XHCI (0x0c0330), which means the xhci driver will -* claim it. +* claim it. The same applies on the VanGogh platform device ([1022:163a]). * * But the dwc3 driver is a more specific driver for this device, and we'd * prefer to use it instead of xhci. To prevent xhci from claiming the
@@ -698,7 +698,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS100, quirk_ati_* defines as "USB device (not host controller)". The dwc3 driver can then * claim it based on its Vendor and Device ID. */ -static void quirk_amd_nl_class (struct pci_dev *pdev) +static void quirk_amd_dwc_class (struct pci_dev *pdev) {u32 class = pdev->class;
@@ -708,7 +708,9 @@ static void quirk_amd_nl_class(struct pci_dev *pdev) class, pdev->class); }DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_AMD ,PCI_DEVICE_ID_AMD_NL_USB , - quirk_amd_nl_class); + quirk_amd_dwc_class); +DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_AMD ,PCI_DEVICE_ID_AMD_VANGOGH_USB , + quirk_amd_dwc_class);/* * Synopsys USB 3.x host HAPS platform has a class code of
drivers/power/supply/power_supply_core.c +4 -4
@@ -29,7 +29,7 @@struct class *power_supply_class;EXPORT_SYMBOL_GPL (power_supply_class); -ATOMIC_NOTIFIER_HEAD (power_supply_notifier); +BLOCKING_NOTIFIER_HEAD (power_supply_notifier);EXPORT_SYMBOL_GPL (power_supply_notifier);static struct device_type power_supply_dev_type;
@@ -97,7 +97,7 @@ static void power_supply_changed_work(struct work_struct *work)class_for_each_device (power_supply_class,NULL , psy, __power_supply_changed_work);power_supply_update_leds (psy); -atomic_notifier_call_chain (&power_supply_notifier, +blocking_notifier_call_chain (&power_supply_notifier,PSY_EVENT_PROP_CHANGED , psy);kobject_uevent (&psy->dev.kobj,KOBJ_CHANGE );spin_lock_irqsave (&psy->changed_lock, flags);
@@ -1262,13 +1262,13 @@ static void power_supply_dev_release(struct device *dev)int power_supply_reg_notifier (struct notifier_block *nb) { -return atomic_notifier_chain_register (&power_supply_notifier, nb); +return blocking_notifier_chain_register (&power_supply_notifier, nb); }EXPORT_SYMBOL_GPL (power_supply_reg_notifier);void power_supply_unreg_notifier (struct notifier_block *nb) { -atomic_notifier_chain_unregister (&power_supply_notifier, nb); +blocking_notifier_chain_unregister (&power_supply_notifier, nb); }EXPORT_SYMBOL_GPL (power_supply_unreg_notifier);
drivers/tty/n_gsm.c +2 -0
@@ -4108,6 +4108,8 @@ static int gsm_modem_upd_via_msc(struct gsm_dlci *dlci, u8 brk)static int gsm_modem_update (struct gsm_dlci *dlci,u8 brk) { +if (dlci->gsm->dead) +return -EL2HLT ;if (dlci->adaption ==2 ) {/* Send convergence layer type 2 empty data frame. */ gsm_modem_upd_via_data (dlci, brk);
drivers/tty/serial/8250/8250_pci.c +320 -7
413 lines not on this page · raw message
drivers/tty/serial/serial_core.c +1 -1
@@ -146,7 +146,7 @@ static void __uart_start(struct uart_state *state)/* Increment the runtime PM usage count for the active check below */ err =pm_runtime_get (&port_dev->dev); -if (err <0 ) { +if (err <0 && err != -EINPROGRESS ) {pm_runtime_put_noidle (&port_dev->dev);return ; }
drivers/usb/gadget/legacy/raw_gadget.c +16 -10
@@ -663,12 +663,12 @@ static int raw_process_ep0_io(struct raw_dev *dev, struct usb_raw_ep_io *io,if (WARN_ON (in && dev->ep0_out_pending)) { ret = -ENODEV ; dev->state =STATE_DEV_FAILED ; - goto out_done; + goto out_unlock; }if (WARN_ON (!in && dev->ep0_in_pending)) { ret = -ENODEV ; dev->state =STATE_DEV_FAILED ; - goto out_done; + goto out_unlock; } dev->req->buf = data;
@@ -683,7 +683,7 @@ static int raw_process_ep0_io(struct raw_dev *dev, struct usb_raw_ep_io *io, "fail, usb_ep_queue returned %d\n", ret);spin_lock_irqsave (&dev->lock, flags); dev->state =STATE_DEV_FAILED ; - goto out_done; + goto out_queue_failed; } ret =wait_for_completion_interruptible (&dev->ep0_done);
@@ -692,13 +692,16 @@ static int raw_process_ep0_io(struct raw_dev *dev, struct usb_raw_ep_io *io,usb_ep_dequeue (dev->gadget->ep0, dev->req);wait_for_completion (&dev->ep0_done);spin_lock_irqsave (&dev->lock, flags); - goto out_done; +if (dev->ep0_status == -ECONNRESET ) + dev->ep0_status = -EINTR ; + goto out_interrupted; }spin_lock_irqsave (&dev->lock, flags); - ret = dev->ep0_status; -out_done: +out_interrupted: + ret = dev->ep0_status; +out_queue_failed: dev->ep0_urb_queued = false; out_unlock:spin_unlock_irqrestore (&dev->lock, flags);
@@ -1067,7 +1070,7 @@ static int raw_process_ep_io(struct raw_dev *dev, struct usb_raw_ep_io *io, "fail, usb_ep_queue returned %d\n", ret);spin_lock_irqsave (&dev->lock, flags); dev->state =STATE_DEV_FAILED ; - goto out_done; + goto out_queue_failed; } ret =wait_for_completion_interruptible (&done);
@@ -1076,13 +1079,16 @@ static int raw_process_ep_io(struct raw_dev *dev, struct usb_raw_ep_io *io,usb_ep_dequeue (ep->ep, ep->req);wait_for_completion (&done);spin_lock_irqsave (&dev->lock, flags); - goto out_done; +if (ep->status == -ECONNRESET ) + ep->status = -EINTR ; + goto out_interrupted; }spin_lock_irqsave (&dev->lock, flags); - ret = ep->status; -out_done: +out_interrupted: + ret = ep->status; +out_queue_failed: ep->urb_queued = false; out_unlock:spin_unlock_irqrestore (&dev->lock, flags);
drivers/usb/storage/unusual_cypress.h +1 -1
@@ -19,7 +19,7 @@ UNUSUAL_DEV( 0x04b4, 0x6831, 0x0000, 0x9999, "Cypress ISD-300LP", USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0), -UNUSUAL_DEV (0x14cd ,0x6116 ,0x0160 ,0x0160 , +UNUSUAL_DEV (0x14cd ,0x6116 ,0x0150 ,0x0160 ,"Super Top" ,"USB 2.0 SATA BRIDGE" , USB_SC_CYP_ATACB, USB_PR_DEVICE, NULL, 0),
drivers/usb/typec/tcpm/tcpm.c +5 -0
@@ -1625,6 +1625,9 @@ static int tcpm_pd_svdm(struct tcpm_port *port, struct typec_altmode *adev,if (PD_VDO_VID (p[0 ]) !=USB_SID_PD )break ; +if (IS_ERR_OR_NULL (port->partner)) +break ; +if (PD_VDO_SVDM_VER (p[0 ]) < svdm_version) {typec_partner_set_svdm_version (port->partner,PD_VDO_SVDM_VER (p[0 ]));
@@ -3903,6 +3906,8 @@ static void run_state_machine(struct tcpm_port *port) port->potential_contaminant = ((port->enter_state ==SRC_ATTACH_WAIT && port->state ==SRC_UNATTACHED ) || (port->enter_state ==SNK_ATTACH_WAIT && + port->state ==SNK_UNATTACHED ) || + (port->enter_state ==SNK_DEBOUNCED && port->state ==SNK_UNATTACHED )); port->enter_state = port->state;
fs/tracefs/event_inode.c +179 -109
484 lines not on this page · raw message
include/linux/pci_ids.h +1 -0
@@ -579,6 +579,7 @@#define PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3 0x12c3#define PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3 0x16fb#define PCI_DEVICE_ID_AMD_MI200_DF_F3 0x14d3 +#define PCI_DEVICE_ID_AMD_VANGOGH_USB 0x163a#define PCI_DEVICE_ID_AMD_CNB17H_F3 0x1703#define PCI_DEVICE_ID_AMD_LANCE 0x2000#define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001
include/linux/power_supply.h +1 -1
@@ -767,7 +767,7 @@ struct power_supply_battery_info {int bti_resistance_tolerance; }; -extern struct atomic_notifier_head power_supply_notifier; +extern struct blocking_notifier_head power_supply_notifier;extern int power_supply_reg_notifier (struct notifier_block *nb);extern void power_supply_unreg_notifier (struct notifier_block *nb);#if IS_ENABLED (CONFIG_POWER_SUPPLY )
include/linux/trace_events.h +4 -0
@@ -492,6 +492,7 @@ enum {EVENT_FILE_FL_TRIGGER_COND_BIT ,EVENT_FILE_FL_PID_FILTER_BIT ,EVENT_FILE_FL_WAS_ENABLED_BIT , + EVENT_FILE_FL_FREED_BIT, }; extern struct trace_event_file *trace_get_event_file(const char *instance,
@@ -630,6 +631,7 @@ extern int __kprobe_event_add_fields(struct dynevent_cmd *cmd, ...);* TRIGGER_COND - When set, one or more triggers has an associated filter * PID_FILTER - When set, the event is filtered based on pid * WAS_ENABLED - Set when enabled to know to clear trace on module removal +* FREED - File descriptor is freed, all fields should be considered invalid */ enum {EVENT_FILE_FL_ENABLED = (1 <<EVENT_FILE_FL_ENABLED_BIT ),
@@ -643,6 +645,7 @@ enum {EVENT_FILE_FL_TRIGGER_COND = (1 <<EVENT_FILE_FL_TRIGGER_COND_BIT ),EVENT_FILE_FL_PID_FILTER = (1 <<EVENT_FILE_FL_PID_FILTER_BIT ),EVENT_FILE_FL_WAS_ENABLED = (1 <<EVENT_FILE_FL_WAS_ENABLED_BIT ), + EVENT_FILE_FL_FREED = (1 << EVENT_FILE_FL_FREED_BIT), }; struct trace_event_file {
@@ -671,6 +674,7 @@ struct trace_event_file {* caching and such. Which is mostly OK ;-) */ unsigned long flags; +atomic_t ref;/* ref count for opened files */ atomic_t sm_ref;/* soft-mode reference counter */ atomic_t tm_ref;/* trigger-mode reference counter */ };
kernel/trace/trace.c +15 -0
@@ -4986,6 +4986,20 @@ int tracing_open_file_tr(struct inode *inode, struct file *filp)if (ret)return ret; +mutex_lock (&event_mutex); + +/* Fail if the file is marked for removal */ +if (file->flags &EVENT_FILE_FL_FREED ) { +trace_array_put (file->tr); + ret = -ENODEV ; + }else { +event_file_get (file); + } + +mutex_unlock (&event_mutex); +if (ret) +return ret; + filp->private_data = inode->i_private;return 0 ;
@@ -4996,6 +5010,7 @@ int tracing_release_file_tr(struct inode *inode, struct file *filp)struct trace_event_file *file = inode->i_private;trace_array_put (file->tr); +event_file_put (file);return 0 ; }
kernel/trace/trace.h +3 -0
@@ -1664,6 +1664,9 @@ extern void event_trigger_unregister(struct event_command *cmd_ops,char *glob, struct event_trigger_data *trigger_data); +extern void event_file_get (struct trace_event_file *file); +extern void event_file_put (struct trace_event_file *file); +/** * struct event_trigger_ops - callbacks for trace event triggers *
kernel/trace/trace_events.c +27 -4
@@ -990,13 +990,35 @@ static void remove_subsystem(struct trace_subsystem_dir *dir) } } +void event_file_get (struct trace_event_file *file) +{ +atomic_inc (&file->ref); +} + +void event_file_put (struct trace_event_file *file) +{ +if (WARN_ON_ONCE (!atomic_read (&file->ref))) { +if (file->flags &EVENT_FILE_FL_FREED ) +kmem_cache_free (file_cachep, file); +return ; + } + +if (atomic_dec_and_test (&file->ref)) { +/* Count should only go to zero when it is freed */ +if (WARN_ON_ONCE (!(file->flags &EVENT_FILE_FL_FREED ))) +return ; +kmem_cache_free (file_cachep, file); + } +} +static void remove_event_file_dir (struct trace_event_file *file) {eventfs_remove (file->ef);list_del (&file->list);remove_subsystem (file->system);free_event_filter (file->filter); -kmem_cache_free (file_cachep, file); + file->flags |=EVENT_FILE_FL_FREED ; +event_file_put (file); }/*
@@ -1369,7 +1391,7 @@ event_enable_read(struct file *filp, char __user *ubuf, size_t cnt, flags = file->flags;mutex_unlock (&event_mutex); -if (!file) +if (!file || flags &EVENT_FILE_FL_FREED )return -ENODEV ; if (flags & EVENT_FILE_FL_ENABLED &&
@@ -1407,7 +1429,7 @@ event_enable_write(struct file *filp, const char __user *ubuf, size_t cnt, ret = -ENODEV ;mutex_lock (&event_mutex); file =event_file_data (filp); -if (likely (file)) +if (likely (file && !(file->flags &EVENT_FILE_FL_FREED ))) ret =ftrace_event_enable_disable (file, val);mutex_unlock (&event_mutex);break ;
@@ -1681,7 +1703,7 @@ event_filter_read(struct file *filp, char __user *ubuf, size_t cnt,mutex_lock (&event_mutex); file =event_file_data (filp); -if (file) +if (file && !(file->flags &EVENT_FILE_FL_FREED ))print_event_filter (file, s);mutex_unlock (&event_mutex);
@@ -2803,6 +2825,7 @@ trace_create_new_event(struct trace_event_call *call,atomic_set (&file->tm_ref,0 );INIT_LIST_HEAD (&file->triggers);list_add (&file->list, &tr->events); +event_file_get (file);return file; }
kernel/trace/trace_events_filter.c +3 -0
@@ -2349,6 +2349,9 @@ int apply_event_filter(struct trace_event_file *file, char *filter_string)struct event_filter *filter =NULL ;int err; +if (file->flags &EVENT_FILE_FL_FREED ) +return -ENODEV ; +if (!strcmp (strstrip (filter_string),"0" )) {filter_disable (file); filter =event_filter (file);
sound/hda/intel-dsp-config.c +6 -0
@@ -336,6 +336,12 @@ static const struct config_entry config_table[] = { DMI_MATCH(DMI_SYS_VENDOR, "Google"), } }, + { + .ident = "Google firmware", + .matches = { + DMI_MATCH(DMI_BIOS_VERSION, "Google"), + } + }, {} } },
sound/soc/sof/sof-pci-dev.c +7 -0
@@ -145,6 +145,13 @@ static const struct dmi_system_id community_key_platforms[] = { DMI_MATCH(DMI_PRODUCT_FAMILY, "Google"), } }, + { + .ident = "Google firmware", + .callback = chromebook_use_community_key, + .matches = { + DMI_MATCH(DMI_BIOS_VERSION, "Google"), + } + }, {}, };
sound/usb/quirks.c +2 -0
@@ -2220,6 +2220,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { QUIRK_FLAG_DSD_RAW),VENDOR_FLG (0x2ab6 ,/* T+A devices */ QUIRK_FLAG_DSD_RAW ), +VENDOR_FLG (0x2afd ,/* McIntosh Laboratory, Inc. */ +QUIRK_FLAG_DSD_RAW ),VENDOR_FLG (0x2d87 ,/* Cayin device */ QUIRK_FLAG_DSD_RAW ), VENDOR_FLG(0x3336, /* HEM devices */
tools/perf/util/evlist.c +3 -2
@@ -251,6 +251,9 @@ static struct evsel *evlist__dummy_event(struct evlist *evlist) .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_DUMMY, .size = sizeof(attr), /* to capture ABI version */ + /* Avoid frequency mode for dummy events to avoid associated timers. */ + .freq = 0, + .sample_period = 1, };return evsel__new_idx (&attr, evlist->core.nr_entries);
@@ -277,8 +280,6 @@ struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wide) evsel->core.attr.exclude_kernel =1 ; evsel->core.attr.exclude_guest =1 ; evsel->core.attr.exclude_hv =1 ; - evsel->core.attr.freq =0 ; - evsel->core.attr.sample_period =1 ; evsel->core.system_wide = system_wide; evsel->no_aux_samples = true; evsel->name =strdup ("dummy:u" );