Merge aae5ab854e ("Merge tag 'riscv-for-linus-5.10-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux") into android-mainline
Steps on the way to 5.10-rc6 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I943a0442970ab0d96792b62331608cfa0fc831aa
This commit is contained in:
@@ -57,9 +57,8 @@ to enable them. ::
|
||||
They can be enabled individually. The full list of the parameters: ::
|
||||
|
||||
make CC=clang LD=ld.lld AR=llvm-ar NM=llvm-nm STRIP=llvm-strip \
|
||||
OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump OBJSIZE=llvm-size \
|
||||
READELF=llvm-readelf HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar \
|
||||
HOSTLD=ld.lld
|
||||
OBJCOPY=llvm-objcopy OBJDUMP=llvm-objdump READELF=llvm-readelf \
|
||||
HOSTCC=clang HOSTCXX=clang++ HOSTAR=llvm-ar HOSTLD=ld.lld
|
||||
|
||||
Currently, the integrated assembler is disabled by default. You can pass
|
||||
``LLVM_IAS=1`` to enable it.
|
||||
|
||||
+3
-1
@@ -1724,11 +1724,13 @@ F: arch/arm/mach-ep93xx/micro9.c
|
||||
|
||||
ARM/CORESIGHT FRAMEWORK AND DRIVERS
|
||||
M: Mathieu Poirier <mathieu.poirier@linaro.org>
|
||||
R: Suzuki K Poulose <suzuki.poulose@arm.com>
|
||||
M: Suzuki K Poulose <suzuki.poulose@arm.com>
|
||||
R: Mike Leach <mike.leach@linaro.org>
|
||||
R: Leo Yan <leo.yan@linaro.org>
|
||||
L: coresight@lists.linaro.org (moderated for non-subscribers)
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/coresight/linux.git
|
||||
F: Documentation/ABI/testing/sysfs-bus-coresight-devices-*
|
||||
F: Documentation/devicetree/bindings/arm/coresight-cpu-debug.txt
|
||||
F: Documentation/devicetree/bindings/arm/coresight-cti.yaml
|
||||
|
||||
@@ -433,7 +433,6 @@ NM = llvm-nm
|
||||
OBJCOPY = llvm-objcopy
|
||||
OBJDUMP = llvm-objdump
|
||||
READELF = llvm-readelf
|
||||
OBJSIZE = llvm-size
|
||||
STRIP = llvm-strip
|
||||
KBUILD_HOSTLDFLAGS += -fuse-ld=lld --rtlib=compiler-rt
|
||||
else
|
||||
@@ -444,7 +443,6 @@ NM = $(CROSS_COMPILE)nm
|
||||
OBJCOPY = $(CROSS_COMPILE)objcopy
|
||||
OBJDUMP = $(CROSS_COMPILE)objdump
|
||||
READELF = $(CROSS_COMPILE)readelf
|
||||
OBJSIZE = $(CROSS_COMPILE)size
|
||||
STRIP = $(CROSS_COMPILE)strip
|
||||
endif
|
||||
PAHOLE = pahole
|
||||
@@ -510,7 +508,7 @@ KBUILD_LDFLAGS :=
|
||||
CLANG_FLAGS :=
|
||||
|
||||
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
|
||||
export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
|
||||
export CPP AR NM STRIP OBJCOPY OBJDUMP READELF PAHOLE RESOLVE_BTFIDS LEX YACC AWK INSTALLKERNEL
|
||||
export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
|
||||
export KGZIP KBZIP2 KLZOP LZMA LZ4 XZ ZSTD
|
||||
export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <asm/barrier.h>
|
||||
|
||||
static inline void cpu_relax(void)
|
||||
{
|
||||
#ifdef __riscv_muldiv
|
||||
|
||||
@@ -75,6 +75,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
*cmdline_p = boot_command_line;
|
||||
|
||||
early_ioremap_setup();
|
||||
jump_label_init();
|
||||
parse_early_param();
|
||||
|
||||
efi_init();
|
||||
|
||||
@@ -44,7 +44,7 @@ SYSCFLAGS_vdso.so.dbg = $(c_flags)
|
||||
$(obj)/vdso.so.dbg: $(src)/vdso.lds $(obj-vdso) FORCE
|
||||
$(call if_changed,vdsold)
|
||||
SYSCFLAGS_vdso.so.dbg = -shared -s -Wl,-soname=linux-vdso.so.1 \
|
||||
-Wl,--build-id -Wl,--hash-style=both
|
||||
-Wl,--build-id=sha1 -Wl,--hash-style=both
|
||||
|
||||
# We also create a special relocatable object that should mirror the symbol
|
||||
# table and layout of the linked DSO. With ld --just-symbols we can then
|
||||
|
||||
@@ -1083,7 +1083,6 @@ static int of_count_icc_providers(struct device_node *np)
|
||||
count++;
|
||||
count += of_count_icc_providers(child);
|
||||
}
|
||||
of_node_put(np);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ DEFINE_QNODE(mas_pcnoc_sdcc_1, MSM8916_MASTER_SDCC_1, 8, -1, -1, MSM8916_PNOC_IN
|
||||
DEFINE_QNODE(mas_pcnoc_sdcc_2, MSM8916_MASTER_SDCC_2, 8, -1, -1, MSM8916_PNOC_INT_1);
|
||||
DEFINE_QNODE(mas_qdss_bam, MSM8916_MASTER_QDSS_BAM, 8, -1, -1, MSM8916_SNOC_QDSS_INT);
|
||||
DEFINE_QNODE(mas_qdss_etr, MSM8916_MASTER_QDSS_ETR, 8, -1, -1, MSM8916_SNOC_QDSS_INT);
|
||||
DEFINE_QNODE(mas_snoc_cfg, MSM8916_MASTER_SNOC_CFG, 4, 20, -1, MSM8916_SNOC_QDSS_INT);
|
||||
DEFINE_QNODE(mas_snoc_cfg, MSM8916_MASTER_SNOC_CFG, 4, -1, -1, MSM8916_SNOC_QDSS_INT);
|
||||
DEFINE_QNODE(mas_spdm, MSM8916_MASTER_SPDM, 4, -1, -1, MSM8916_PNOC_MAS_0);
|
||||
DEFINE_QNODE(mas_tcu0, MSM8916_MASTER_TCU0, 8, -1, -1, MSM8916_SLAVE_EBI_CH0, MSM8916_BIMC_SNOC_MAS, MSM8916_SLAVE_AMPSS_L2);
|
||||
DEFINE_QNODE(mas_tcu1, MSM8916_MASTER_TCU1, 8, -1, -1, MSM8916_SLAVE_EBI_CH0, MSM8916_BIMC_SNOC_MAS, MSM8916_SLAVE_AMPSS_L2);
|
||||
@@ -208,14 +208,14 @@ DEFINE_QNODE(pcnoc_snoc_mas, MSM8916_PNOC_SNOC_MAS, 8, 29, -1, MSM8916_PNOC_SNOC
|
||||
DEFINE_QNODE(pcnoc_snoc_slv, MSM8916_PNOC_SNOC_SLV, 8, -1, 45, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC, MSM8916_SNOC_INT_1);
|
||||
DEFINE_QNODE(qdss_int, MSM8916_SNOC_QDSS_INT, 8, -1, -1, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC);
|
||||
DEFINE_QNODE(slv_apps_l2, MSM8916_SLAVE_AMPSS_L2, 8, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_apss, MSM8916_SLAVE_APSS, 4, -1, 20, 0);
|
||||
DEFINE_QNODE(slv_apss, MSM8916_SLAVE_APSS, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_audio, MSM8916_SLAVE_LPASS, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_bimc_cfg, MSM8916_SLAVE_BIMC_CFG, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_blsp_1, MSM8916_SLAVE_BLSP_1, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_boot_rom, MSM8916_SLAVE_BOOT_ROM, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_camera_cfg, MSM8916_SLAVE_CAMERA_CFG, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_cats_0, MSM8916_SLAVE_CATS_128, 16, -1, 106, 0);
|
||||
DEFINE_QNODE(slv_cats_1, MSM8916_SLAVE_OCMEM_64, 8, -1, 107, 0);
|
||||
DEFINE_QNODE(slv_cats_0, MSM8916_SLAVE_CATS_128, 16, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_cats_1, MSM8916_SLAVE_OCMEM_64, 8, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_clk_ctl, MSM8916_SLAVE_CLK_CTL, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_crypto_0_cfg, MSM8916_SLAVE_CRYPTO_0_CFG, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_dehr_cfg, MSM8916_SLAVE_DEHR_CFG, 4, -1, -1, 0);
|
||||
@@ -239,7 +239,7 @@ DEFINE_QNODE(slv_sdcc_2, MSM8916_SLAVE_SDCC_2, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_security, MSM8916_SLAVE_SECURITY, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_snoc_cfg, MSM8916_SLAVE_SNOC_CFG, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_spdm, MSM8916_SLAVE_SPDM, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_srvc_snoc, MSM8916_SLAVE_SRVC_SNOC, 8, -1, 29, 0);
|
||||
DEFINE_QNODE(slv_srvc_snoc, MSM8916_SLAVE_SRVC_SNOC, 8, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_tcsr, MSM8916_SLAVE_TCSR, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_tlmm, MSM8916_SLAVE_TLMM, 4, -1, -1, 0);
|
||||
DEFINE_QNODE(slv_usb_hs, MSM8916_SLAVE_USB_HS, 4, -1, -1, 0);
|
||||
@@ -249,7 +249,7 @@ DEFINE_QNODE(snoc_bimc_0_slv, MSM8916_SNOC_BIMC_0_SLV, 8, -1, 24, MSM8916_SLAVE_
|
||||
DEFINE_QNODE(snoc_bimc_1_mas, MSM8916_SNOC_BIMC_1_MAS, 16, -1, -1, MSM8916_SNOC_BIMC_1_SLV);
|
||||
DEFINE_QNODE(snoc_bimc_1_slv, MSM8916_SNOC_BIMC_1_SLV, 8, -1, -1, MSM8916_SLAVE_EBI_CH0);
|
||||
DEFINE_QNODE(snoc_int_0, MSM8916_SNOC_INT_0, 8, 99, 130, MSM8916_SLAVE_QDSS_STM, MSM8916_SLAVE_IMEM, MSM8916_SNOC_PNOC_MAS);
|
||||
DEFINE_QNODE(snoc_int_1, MSM8916_SNOC_INT_1, 8, 100, 131, MSM8916_SLAVE_APSS, MSM8916_SLAVE_CATS_128, MSM8916_SLAVE_OCMEM_64);
|
||||
DEFINE_QNODE(snoc_int_1, MSM8916_SNOC_INT_1, 8, -1, -1, MSM8916_SLAVE_APSS, MSM8916_SLAVE_CATS_128, MSM8916_SLAVE_OCMEM_64);
|
||||
DEFINE_QNODE(snoc_int_bimc, MSM8916_SNOC_INT_BIMC, 8, 101, 132, MSM8916_SNOC_BIMC_0_MAS);
|
||||
DEFINE_QNODE(snoc_pcnoc_mas, MSM8916_SNOC_PNOC_MAS, 8, -1, -1, MSM8916_SNOC_PNOC_SLV);
|
||||
DEFINE_QNODE(snoc_pcnoc_slv, MSM8916_SNOC_PNOC_SLV, 8, -1, -1, MSM8916_PNOC_INT_0);
|
||||
|
||||
@@ -618,6 +618,8 @@ static int msm8974_icc_set(struct icc_node *src, struct icc_node *dst)
|
||||
|
||||
do_div(rate, src_qn->buswidth);
|
||||
|
||||
rate = min_t(u32, rate, INT_MAX);
|
||||
|
||||
if (src_qn->rate == rate)
|
||||
return 0;
|
||||
|
||||
@@ -635,6 +637,14 @@ static int msm8974_icc_set(struct icc_node *src, struct icc_node *dst)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int msm8974_get_bw(struct icc_node *node, u32 *avg, u32 *peak)
|
||||
{
|
||||
*avg = 0;
|
||||
*peak = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int msm8974_icc_probe(struct platform_device *pdev)
|
||||
{
|
||||
const struct msm8974_icc_desc *desc;
|
||||
@@ -688,6 +698,7 @@ static int msm8974_icc_probe(struct platform_device *pdev)
|
||||
provider->aggregate = icc_std_aggregate;
|
||||
provider->xlate = of_icc_xlate_onecell;
|
||||
provider->data = data;
|
||||
provider->get_bw = msm8974_get_bw;
|
||||
|
||||
ret = icc_provider_add(provider);
|
||||
if (ret) {
|
||||
@@ -758,6 +769,7 @@ static struct platform_driver msm8974_noc_driver = {
|
||||
.driver = {
|
||||
.name = "qnoc-msm8974",
|
||||
.of_match_table = msm8974_noc_of_match,
|
||||
.sync_state = icc_sync_state,
|
||||
},
|
||||
};
|
||||
module_platform_driver(msm8974_noc_driver);
|
||||
|
||||
@@ -157,8 +157,8 @@ struct qcom_icc_desc {
|
||||
}
|
||||
|
||||
DEFINE_QNODE(mas_apps_proc, QCS404_MASTER_AMPSS_M0, 8, 0, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_oxili, QCS404_MASTER_GRAPHICS_3D, 8, 6, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_mdp, QCS404_MASTER_MDP_PORT0, 8, 8, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_oxili, QCS404_MASTER_GRAPHICS_3D, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_mdp, QCS404_MASTER_MDP_PORT0, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_snoc_bimc_1, QCS404_SNOC_BIMC_1_MAS, 8, 76, -1, QCS404_SLAVE_EBI_CH0);
|
||||
DEFINE_QNODE(mas_tcu_0, QCS404_MASTER_TCU_0, 8, -1, -1, QCS404_SLAVE_EBI_CH0, QCS404_BIMC_SNOC_SLV);
|
||||
DEFINE_QNODE(mas_spdm, QCS404_MASTER_SPDM, 4, -1, -1, QCS404_PNOC_INT_3);
|
||||
|
||||
@@ -5436,6 +5436,8 @@ static void gaudi_handle_ecc_event(struct hl_device *hdev, u16 event_type,
|
||||
params.num_memories = 33;
|
||||
params.derr = true;
|
||||
params.disable_clock_gating = true;
|
||||
extract_info_from_fw = false;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -270,11 +270,6 @@ static void usb_init_common_7211b0(struct brcm_usb_init_params *params)
|
||||
reg |= params->mode << USB_PHY_UTMI_CTL_1_PHY_MODE_SHIFT;
|
||||
brcm_usb_writel(reg, usb_phy + USB_PHY_UTMI_CTL_1);
|
||||
|
||||
/* Fix the incorrect default */
|
||||
reg = brcm_usb_readl(ctrl + USB_CTRL_SETUP);
|
||||
reg &= ~USB_CTRL_SETUP_tca_drv_sel_MASK;
|
||||
brcm_usb_writel(reg, ctrl + USB_CTRL_SETUP);
|
||||
|
||||
usb_init_common(params);
|
||||
|
||||
/*
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
config PHY_INTEL_KEEMBAY_EMMC
|
||||
tristate "Intel Keem Bay EMMC PHY driver"
|
||||
depends on (OF && ARM64) || COMPILE_TEST
|
||||
depends on ARCH_KEEMBAY || COMPILE_TEST
|
||||
depends on HAS_IOMEM
|
||||
select GENERIC_PHY
|
||||
select REGMAP_MMIO
|
||||
|
||||
@@ -12,7 +12,7 @@ config PHY_MTK_TPHY
|
||||
it supports multiple usb2.0, usb3.0 ports, PCIe and
|
||||
SATA, and meanwhile supports two version T-PHY which have
|
||||
different banks layout, the T-PHY with shared banks between
|
||||
multi-ports is first version, otherwise is second veriosn,
|
||||
multi-ports is first version, otherwise is second version,
|
||||
so you can easily distinguish them by banks layout.
|
||||
|
||||
config PHY_MTK_UFS
|
||||
|
||||
@@ -364,7 +364,8 @@ static int cpcap_usb_init_irq(struct platform_device *pdev,
|
||||
|
||||
error = devm_request_threaded_irq(ddata->dev, irq, NULL,
|
||||
cpcap_phy_irq_thread,
|
||||
IRQF_SHARED,
|
||||
IRQF_SHARED |
|
||||
IRQF_ONESHOT,
|
||||
name, ddata);
|
||||
if (error) {
|
||||
dev_err(ddata->dev, "could not get irq %s: %i\n",
|
||||
|
||||
@@ -87,7 +87,7 @@ config PHY_QCOM_USB_HSIC
|
||||
|
||||
config PHY_QCOM_USB_HS_28NM
|
||||
tristate "Qualcomm 28nm High-Speed PHY"
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
depends on OF && (ARCH_QCOM || COMPILE_TEST)
|
||||
depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
|
||||
select GENERIC_PHY
|
||||
help
|
||||
@@ -98,7 +98,7 @@ config PHY_QCOM_USB_HS_28NM
|
||||
|
||||
config PHY_QCOM_USB_SS
|
||||
tristate "Qualcomm USB Super-Speed PHY driver"
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
depends on OF && (ARCH_QCOM || COMPILE_TEST)
|
||||
depends on EXTCON || !EXTCON # if EXTCON=m, this cannot be built-in
|
||||
select GENERIC_PHY
|
||||
help
|
||||
|
||||
@@ -3926,7 +3926,7 @@ static int qcom_qmp_phy_probe(struct platform_device *pdev)
|
||||
struct phy_provider *phy_provider;
|
||||
void __iomem *serdes;
|
||||
void __iomem *usb_serdes;
|
||||
void __iomem *dp_serdes;
|
||||
void __iomem *dp_serdes = NULL;
|
||||
const struct qmp_phy_combo_cfg *combo_cfg = NULL;
|
||||
const struct qmp_phy_cfg *cfg = NULL;
|
||||
const struct qmp_phy_cfg *usb_cfg = NULL;
|
||||
|
||||
@@ -1242,6 +1242,7 @@ power_down:
|
||||
reset:
|
||||
reset_control_assert(padctl->rst);
|
||||
remove:
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
soc->ops->remove(padctl);
|
||||
return err;
|
||||
}
|
||||
|
||||
+14
-12
@@ -1114,7 +1114,7 @@ static int cdns3_ep_run_transfer(struct cdns3_endpoint *priv_ep,
|
||||
struct cdns3_device *priv_dev = priv_ep->cdns3_dev;
|
||||
struct cdns3_request *priv_req;
|
||||
struct cdns3_trb *trb;
|
||||
struct cdns3_trb *link_trb;
|
||||
struct cdns3_trb *link_trb = NULL;
|
||||
dma_addr_t trb_dma;
|
||||
u32 togle_pcs = 1;
|
||||
int sg_iter = 0;
|
||||
@@ -1193,10 +1193,20 @@ static int cdns3_ep_run_transfer(struct cdns3_endpoint *priv_ep,
|
||||
|
||||
/* set incorrect Cycle Bit for first trb*/
|
||||
control = priv_ep->pcs ? 0 : TRB_CYCLE;
|
||||
trb->length = 0;
|
||||
if (priv_dev->dev_ver >= DEV_VER_V2) {
|
||||
u16 td_size;
|
||||
|
||||
td_size = DIV_ROUND_UP(request->length,
|
||||
priv_ep->endpoint.maxpacket);
|
||||
if (priv_dev->gadget.speed == USB_SPEED_SUPER)
|
||||
trb->length = TRB_TDL_SS_SIZE(td_size);
|
||||
else
|
||||
control |= TRB_TDL_HS_SIZE(td_size);
|
||||
}
|
||||
|
||||
do {
|
||||
u32 length;
|
||||
u16 td_size = 0;
|
||||
|
||||
/* fill TRB */
|
||||
control |= TRB_TYPE(TRB_NORMAL);
|
||||
@@ -1208,20 +1218,12 @@ static int cdns3_ep_run_transfer(struct cdns3_endpoint *priv_ep,
|
||||
length = request->length;
|
||||
}
|
||||
|
||||
if (likely(priv_dev->dev_ver >= DEV_VER_V2))
|
||||
td_size = DIV_ROUND_UP(length,
|
||||
priv_ep->endpoint.maxpacket);
|
||||
else if (priv_ep->flags & EP_TDLCHK_EN)
|
||||
if (priv_ep->flags & EP_TDLCHK_EN)
|
||||
total_tdl += DIV_ROUND_UP(length,
|
||||
priv_ep->endpoint.maxpacket);
|
||||
|
||||
trb->length = cpu_to_le32(TRB_BURST_LEN(priv_ep->trb_burst_size) |
|
||||
trb->length |= cpu_to_le32(TRB_BURST_LEN(priv_ep->trb_burst_size) |
|
||||
TRB_LEN(length));
|
||||
if (priv_dev->gadget.speed == USB_SPEED_SUPER)
|
||||
trb->length |= cpu_to_le32(TRB_TDL_SS_SIZE(td_size));
|
||||
else
|
||||
control |= TRB_TDL_HS_SIZE(td_size);
|
||||
|
||||
pcs = priv_ep->pcs ? TRB_CYCLE : 0;
|
||||
|
||||
/*
|
||||
|
||||
@@ -482,11 +482,11 @@ static void snoop_urb(struct usb_device *udev,
|
||||
|
||||
if (userurb) { /* Async */
|
||||
if (when == SUBMIT)
|
||||
dev_info(&udev->dev, "userurb %pK, ep%d %s-%s, "
|
||||
dev_info(&udev->dev, "userurb %px, ep%d %s-%s, "
|
||||
"length %u\n",
|
||||
userurb, ep, t, d, length);
|
||||
else
|
||||
dev_info(&udev->dev, "userurb %pK, ep%d %s-%s, "
|
||||
dev_info(&udev->dev, "userurb %px, ep%d %s-%s, "
|
||||
"actual_length %u status %d\n",
|
||||
userurb, ep, t, d, length,
|
||||
timeout_or_status);
|
||||
@@ -1997,7 +1997,7 @@ static int proc_reapurb(struct usb_dev_state *ps, void __user *arg)
|
||||
if (as) {
|
||||
int retval;
|
||||
|
||||
snoop(&ps->dev->dev, "reap %pK\n", as->userurb);
|
||||
snoop(&ps->dev->dev, "reap %px\n", as->userurb);
|
||||
retval = processcompl(as, (void __user * __user *)arg);
|
||||
free_async(as);
|
||||
return retval;
|
||||
@@ -2014,7 +2014,7 @@ static int proc_reapurbnonblock(struct usb_dev_state *ps, void __user *arg)
|
||||
|
||||
as = async_getcompleted(ps);
|
||||
if (as) {
|
||||
snoop(&ps->dev->dev, "reap %pK\n", as->userurb);
|
||||
snoop(&ps->dev->dev, "reap %px\n", as->userurb);
|
||||
retval = processcompl(as, (void __user * __user *)arg);
|
||||
free_async(as);
|
||||
} else {
|
||||
@@ -2142,7 +2142,7 @@ static int proc_reapurb_compat(struct usb_dev_state *ps, void __user *arg)
|
||||
if (as) {
|
||||
int retval;
|
||||
|
||||
snoop(&ps->dev->dev, "reap %pK\n", as->userurb);
|
||||
snoop(&ps->dev->dev, "reap %px\n", as->userurb);
|
||||
retval = processcompl_compat(as, (void __user * __user *)arg);
|
||||
free_async(as);
|
||||
return retval;
|
||||
@@ -2159,7 +2159,7 @@ static int proc_reapurbnonblock_compat(struct usb_dev_state *ps, void __user *ar
|
||||
|
||||
as = async_getcompleted(ps);
|
||||
if (as) {
|
||||
snoop(&ps->dev->dev, "reap %pK\n", as->userurb);
|
||||
snoop(&ps->dev->dev, "reap %px\n", as->userurb);
|
||||
retval = processcompl_compat(as, (void __user * __user *)arg);
|
||||
free_async(as);
|
||||
} else {
|
||||
@@ -2624,7 +2624,7 @@ static long usbdev_do_ioctl(struct file *file, unsigned int cmd,
|
||||
#endif
|
||||
|
||||
case USBDEVFS_DISCARDURB:
|
||||
snoop(&dev->dev, "%s: DISCARDURB %pK\n", __func__, p);
|
||||
snoop(&dev->dev, "%s: DISCARDURB %px\n", __func__, p);
|
||||
ret = proc_unlinkurb(ps, p);
|
||||
break;
|
||||
|
||||
|
||||
@@ -348,6 +348,10 @@ static const struct usb_device_id usb_quirk_list[] = {
|
||||
/* Guillemot Webcam Hercules Dualpix Exchange*/
|
||||
{ USB_DEVICE(0x06f8, 0x3005), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
/* Guillemot Hercules DJ Console audio card (BZ 208357) */
|
||||
{ USB_DEVICE(0x06f8, 0xb000), .driver_info =
|
||||
USB_QUIRK_ENDPOINT_IGNORE },
|
||||
|
||||
/* Midiman M-Audio Keystation 88es */
|
||||
{ USB_DEVICE(0x0763, 0x0192), .driver_info = USB_QUIRK_RESET_RESUME },
|
||||
|
||||
@@ -421,6 +425,10 @@ static const struct usb_device_id usb_quirk_list[] = {
|
||||
{ USB_DEVICE(0x1532, 0x0116), .driver_info =
|
||||
USB_QUIRK_LINEAR_UFRAME_INTR_BINTERVAL },
|
||||
|
||||
/* Lenovo ThinkCenter A630Z TI024Gen3 usb-audio */
|
||||
{ USB_DEVICE(0x17ef, 0xa012), .driver_info =
|
||||
USB_QUIRK_DISCONNECT_SUSPEND },
|
||||
|
||||
/* BUILDWIN Photo Frame */
|
||||
{ USB_DEVICE(0x1908, 0x1315), .driver_info =
|
||||
USB_QUIRK_HONOR_BNUMINTERFACES },
|
||||
@@ -521,6 +529,8 @@ static const struct usb_device_id usb_amd_resume_quirk_list[] = {
|
||||
* Matched for devices with USB_QUIRK_ENDPOINT_IGNORE.
|
||||
*/
|
||||
static const struct usb_device_id usb_endpoint_ignore[] = {
|
||||
{ USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x01 },
|
||||
{ USB_DEVICE_INTERFACE_NUMBER(0x06f8, 0xb000, 5), .driver_info = 0x81 },
|
||||
{ USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0202, 1), .driver_info = 0x85 },
|
||||
{ USB_DEVICE_INTERFACE_NUMBER(0x0926, 0x0208, 1), .driver_info = 0x85 },
|
||||
{ }
|
||||
|
||||
@@ -1385,7 +1385,7 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
|
||||
midi->id = kstrdup(opts->id, GFP_KERNEL);
|
||||
if (opts->id && !midi->id) {
|
||||
status = -ENOMEM;
|
||||
goto setup_fail;
|
||||
goto midi_free;
|
||||
}
|
||||
midi->in_ports = opts->in_ports;
|
||||
midi->out_ports = opts->out_ports;
|
||||
@@ -1397,7 +1397,7 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
|
||||
|
||||
status = kfifo_alloc(&midi->in_req_fifo, midi->qlen, GFP_KERNEL);
|
||||
if (status)
|
||||
goto setup_fail;
|
||||
goto midi_free;
|
||||
|
||||
spin_lock_init(&midi->transmit_lock);
|
||||
|
||||
@@ -1414,9 +1414,13 @@ static struct usb_function *f_midi_alloc(struct usb_function_instance *fi)
|
||||
fi->f = &midi->func;
|
||||
return &midi->func;
|
||||
|
||||
midi_free:
|
||||
if (midi)
|
||||
kfree(midi->id);
|
||||
kfree(midi);
|
||||
setup_fail:
|
||||
mutex_unlock(&opts->lock);
|
||||
kfree(midi);
|
||||
|
||||
return ERR_PTR(status);
|
||||
}
|
||||
|
||||
|
||||
@@ -2039,6 +2039,9 @@ gadgetfs_fill_super (struct super_block *sb, struct fs_context *fc)
|
||||
return 0;
|
||||
|
||||
Enomem:
|
||||
kfree(CHIP);
|
||||
CHIP = NULL;
|
||||
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ config TYPEC_STUSB160X
|
||||
config TYPEC_QCOM_PMIC
|
||||
tristate "Qualcomm PMIC USB Type-C driver"
|
||||
depends on ARCH_QCOM || COMPILE_TEST
|
||||
depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH
|
||||
help
|
||||
Driver for supporting role switch over the Qualcomm PMIC. This will
|
||||
handle the USB Type-C role and orientation detection reported by the
|
||||
|
||||
@@ -562,7 +562,7 @@ static int stusb160x_get_fw_caps(struct stusb160x *chip,
|
||||
* Supported power operation mode can be configured through device tree
|
||||
* else it is read from chip registers in stusb160x_get_caps.
|
||||
*/
|
||||
ret = fwnode_property_read_string(fwnode, "power-opmode", &cap_str);
|
||||
ret = fwnode_property_read_string(fwnode, "typec-power-opmode", &cap_str);
|
||||
if (!ret) {
|
||||
ret = typec_find_pwr_opmode(cap_str);
|
||||
/* Power delivery not yet supported */
|
||||
|
||||
@@ -45,6 +45,8 @@ create_package() {
|
||||
chmod -R go-w "$pdir"
|
||||
# in case we are in a restrictive umask environment like 0077
|
||||
chmod -R a+rX "$pdir"
|
||||
# in case we build in a setuid/setgid directory
|
||||
chmod -R ug-s "$pdir"
|
||||
|
||||
# Create the package
|
||||
dpkg-gencontrol -p$pname -P"$pdir"
|
||||
|
||||
@@ -1222,8 +1222,10 @@ static int __cmd_diff(void)
|
||||
if (compute == COMPUTE_STREAM) {
|
||||
d->evlist_streams = evlist__create_streams(
|
||||
d->session->evlist, 5);
|
||||
if (!d->evlist_streams)
|
||||
if (!d->evlist_streams) {
|
||||
ret = -ENOMEM;
|
||||
goto out_delete;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -356,9 +356,25 @@ bool die_is_signed_type(Dwarf_Die *tp_die)
|
||||
bool die_is_func_def(Dwarf_Die *dw_die)
|
||||
{
|
||||
Dwarf_Attribute attr;
|
||||
Dwarf_Addr addr = 0;
|
||||
|
||||
return (dwarf_tag(dw_die) == DW_TAG_subprogram &&
|
||||
dwarf_attr(dw_die, DW_AT_declaration, &attr) == NULL);
|
||||
if (dwarf_tag(dw_die) != DW_TAG_subprogram)
|
||||
return false;
|
||||
|
||||
if (dwarf_attr(dw_die, DW_AT_declaration, &attr))
|
||||
return false;
|
||||
|
||||
/*
|
||||
* DW_AT_declaration can be lost from function declaration
|
||||
* by gcc's bug #97060.
|
||||
* So we need to check this subprogram DIE has DW_AT_inline
|
||||
* or an entry address.
|
||||
*/
|
||||
if (!dwarf_attr(dw_die, DW_AT_inline, &attr) &&
|
||||
die_entrypc(dw_die, &addr) < 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -373,6 +389,7 @@ bool die_is_func_def(Dwarf_Die *dw_die)
|
||||
int die_entrypc(Dwarf_Die *dw_die, Dwarf_Addr *addr)
|
||||
{
|
||||
Dwarf_Addr base, end;
|
||||
Dwarf_Attribute attr;
|
||||
|
||||
if (!addr)
|
||||
return -EINVAL;
|
||||
@@ -380,6 +397,13 @@ int die_entrypc(Dwarf_Die *dw_die, Dwarf_Addr *addr)
|
||||
if (dwarf_entrypc(dw_die, addr) == 0)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Since the dwarf_ranges() will return 0 if there is no
|
||||
* DW_AT_ranges attribute, we should check it first.
|
||||
*/
|
||||
if (!dwarf_attr(dw_die, DW_AT_ranges, &attr))
|
||||
return -ENOENT;
|
||||
|
||||
return dwarf_ranges(dw_die, 0, &base, addr, &end) < 0 ? -ENOENT : 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,9 @@
|
||||
static inline size_t hash_bits(size_t h, int bits)
|
||||
{
|
||||
/* shuffle bits and return requested number of upper bits */
|
||||
if (bits == 0)
|
||||
return 0;
|
||||
|
||||
#if (__SIZEOF_SIZE_T__ == __SIZEOF_LONG_LONG__)
|
||||
/* LP64 case */
|
||||
return (h * 11400714819323198485llu) >> (__SIZEOF_LONG_LONG__ * 8 - bits);
|
||||
@@ -174,17 +177,17 @@ bool hashmap__find(const struct hashmap *map, const void *key, void **value);
|
||||
* @key: key to iterate entries for
|
||||
*/
|
||||
#define hashmap__for_each_key_entry(map, cur, _key) \
|
||||
for (cur = ({ size_t bkt = hash_bits(map->hash_fn((_key), map->ctx),\
|
||||
map->cap_bits); \
|
||||
map->buckets ? map->buckets[bkt] : NULL; }); \
|
||||
for (cur = map->buckets \
|
||||
? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \
|
||||
: NULL; \
|
||||
cur; \
|
||||
cur = cur->next) \
|
||||
if (map->equal_fn(cur->key, (_key), map->ctx))
|
||||
|
||||
#define hashmap__for_each_key_entry_safe(map, cur, tmp, _key) \
|
||||
for (cur = ({ size_t bkt = hash_bits(map->hash_fn((_key), map->ctx),\
|
||||
map->cap_bits); \
|
||||
cur = map->buckets ? map->buckets[bkt] : NULL; }); \
|
||||
for (cur = map->buckets \
|
||||
? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \
|
||||
: NULL; \
|
||||
cur && ({ tmp = cur->next; true; }); \
|
||||
cur = tmp) \
|
||||
if (map->equal_fn(cur->key, (_key), map->ctx))
|
||||
|
||||
@@ -1885,8 +1885,7 @@ static int line_range_search_cb(Dwarf_Die *sp_die, void *data)
|
||||
if (lr->file && strtailcmp(lr->file, dwarf_decl_file(sp_die)))
|
||||
return DWARF_CB_OK;
|
||||
|
||||
if (die_is_func_def(sp_die) &&
|
||||
die_match_name(sp_die, lr->function)) {
|
||||
if (die_match_name(sp_die, lr->function) && die_is_func_def(sp_die)) {
|
||||
lf->fname = dwarf_decl_file(sp_die);
|
||||
dwarf_decl_line(sp_die, &lr->offset);
|
||||
pr_debug("fname: %s, lineno:%d\n", lf->fname, lr->offset);
|
||||
|
||||
@@ -324,13 +324,10 @@ static int first_shadow_cpu(struct perf_stat_config *config,
|
||||
struct evlist *evlist = evsel->evlist;
|
||||
int i;
|
||||
|
||||
if (!config->aggr_get_id)
|
||||
return 0;
|
||||
|
||||
if (config->aggr_mode == AGGR_NONE)
|
||||
return id;
|
||||
|
||||
if (config->aggr_mode == AGGR_GLOBAL)
|
||||
if (!config->aggr_get_id)
|
||||
return 0;
|
||||
|
||||
for (i = 0; i < evsel__nr_cpus(evsel); i++) {
|
||||
|
||||
@@ -563,6 +563,9 @@ int perf_event__synthesize_cgroups(struct perf_tool *tool,
|
||||
char cgrp_root[PATH_MAX];
|
||||
size_t mount_len; /* length of mount point in the path */
|
||||
|
||||
if (!tool || !tool->cgroup_events)
|
||||
return 0;
|
||||
|
||||
if (cgroupfs_find_mountpoint(cgrp_root, PATH_MAX, "perf_event") < 0) {
|
||||
pr_debug("cannot find cgroup mount point\n");
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user