diff --git a/debian/changelog b/debian/changelog index 08314dbe8..27614b892 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,6 @@ -linux (4.15.4-2) UNRELEASED; urgency=medium +linux (4.16~rc5-1~exp1) UNRELEASED; urgency=medium + + * New upstream release candidate [ Uwe Kleine-König ] * netfilter: enable NFT_FIB_NETDEV as module diff --git a/debian/patches/bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch b/debian/patches/bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch deleted file mode 100644 index 4538ab6e7..000000000 --- a/debian/patches/bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch +++ /dev/null @@ -1,37 +0,0 @@ -From: Pierre -Date: Sun, 12 Nov 2017 15:24:32 +0100 -Subject: crypto: ecc - Fix NULL pointer deref. on no default_rng -Origin: https://git.kernel.org/linus/4c0e22c90510308433272d7ba281b1eb4eda8209 -Bug-Debian: https://bugs.debian.org/886556 - -If crypto_get_default_rng returns an error, the -function ecc_gen_privkey should return an error. -Instead, it currently tries to use the default_rng -nevertheless, thus creating a kernel panic with a -NULL pointer dereference. -Returning the error directly, as was supposedly -intended when looking at the code, fixes this. - -Signed-off-by: Pierre Ducroquet -Reviewed-by: PrasannaKumar Muralidharan -Signed-off-by: Herbert Xu ---- - crypto/ecc.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/crypto/ecc.c b/crypto/ecc.c -index 633a9bcdc574..18f32f2a5e1c 100644 ---- a/crypto/ecc.c -+++ b/crypto/ecc.c -@@ -964,7 +964,7 @@ int ecc_gen_privkey(unsigned int curve_id, unsigned int ndigits, u64 *privkey) - * DRBG with a security strength of 256. - */ - if (crypto_get_default_rng()) -- err = -EFAULT; -+ return -EFAULT; - - err = crypto_rng_get_bytes(crypto_default_rng, (u8 *)priv, nbytes); - crypto_put_default_rng(); --- -2.11.0 - diff --git a/debian/patches/bugfix/all/disable-some-marvell-phys.patch b/debian/patches/bugfix/all/disable-some-marvell-phys.patch index 8a42a6521..7c07b2755 100644 --- a/debian/patches/bugfix/all/disable-some-marvell-phys.patch +++ b/debian/patches/bugfix/all/disable-some-marvell-phys.patch @@ -16,7 +16,7 @@ correctness. --- a/drivers/net/phy/marvell.c +++ b/drivers/net/phy/marvell.c -@@ -956,6 +956,7 @@ static int m88e1118_config_init(struct p +@@ -928,6 +928,7 @@ static int m88e1118_config_init(struct p return genphy_soft_reset(phydev); } @@ -24,7 +24,7 @@ correctness. static int m88e1149_config_init(struct phy_device *phydev) { int err; -@@ -981,7 +982,9 @@ static int m88e1149_config_init(struct p +@@ -953,7 +954,9 @@ static int m88e1149_config_init(struct p return genphy_soft_reset(phydev); } @@ -33,8 +33,8 @@ correctness. +#if 0 static int m88e1145_config_init_rgmii(struct phy_device *phydev) { - int temp; -@@ -1063,6 +1066,7 @@ static int m88e1145_config_init(struct p + int err; +@@ -1028,6 +1031,7 @@ static int m88e1145_config_init(struct p return 0; } @@ -42,7 +42,7 @@ correctness. /** * fiber_lpa_to_ethtool_lpa_t -@@ -2059,6 +2063,7 @@ static struct phy_driver marvell_drivers +@@ -2102,6 +2106,7 @@ static struct phy_driver marvell_drivers .get_strings = marvell_get_strings, .get_stats = marvell_get_stats, }, @@ -50,7 +50,7 @@ correctness. { .phy_id = MARVELL_PHY_ID_88E1145, .phy_id_mask = MARVELL_PHY_ID_MASK, -@@ -2077,6 +2082,8 @@ static struct phy_driver marvell_drivers +@@ -2122,6 +2127,8 @@ static struct phy_driver marvell_drivers .get_strings = marvell_get_strings, .get_stats = marvell_get_stats, }, @@ -59,7 +59,7 @@ correctness. { .phy_id = MARVELL_PHY_ID_88E1149R, .phy_id_mask = MARVELL_PHY_ID_MASK, -@@ -2095,6 +2102,8 @@ static struct phy_driver marvell_drivers +@@ -2141,6 +2148,8 @@ static struct phy_driver marvell_drivers .get_strings = marvell_get_strings, .get_stats = marvell_get_stats, }, @@ -68,7 +68,7 @@ correctness. { .phy_id = MARVELL_PHY_ID_88E1240, .phy_id_mask = MARVELL_PHY_ID_MASK, -@@ -2113,6 +2122,7 @@ static struct phy_driver marvell_drivers +@@ -2160,6 +2169,7 @@ static struct phy_driver marvell_drivers .get_strings = marvell_get_strings, .get_stats = marvell_get_stats, }, @@ -76,7 +76,7 @@ correctness. { .phy_id = MARVELL_PHY_ID_88E1116R, .phy_id_mask = MARVELL_PHY_ID_MASK, -@@ -2240,9 +2250,9 @@ static struct mdio_device_id __maybe_unu +@@ -2296,9 +2306,9 @@ static struct mdio_device_id __maybe_unu { MARVELL_PHY_ID_88E1111, MARVELL_PHY_ID_MASK }, { MARVELL_PHY_ID_88E1118, MARVELL_PHY_ID_MASK }, { MARVELL_PHY_ID_88E1121R, MARVELL_PHY_ID_MASK }, diff --git a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch index 300479d24..770ca0e34 100644 --- a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch +++ b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch @@ -342,7 +342,7 @@ upstream submission. card->name, firmware->size); --- a/drivers/media/tuners/tuner-xc2028.c +++ b/drivers/media/tuners/tuner-xc2028.c -@@ -1370,7 +1370,6 @@ static void load_firmware_cb(const struc +@@ -1368,7 +1368,6 @@ static void load_firmware_cb(const struc tuner_dbg("request_firmware_nowait(): %s\n", fw ? "OK" : "error"); if (!fw) { @@ -352,7 +352,7 @@ upstream submission. } --- a/drivers/media/usb/dvb-usb/dib0700_devices.c +++ b/drivers/media/usb/dvb-usb/dib0700_devices.c -@@ -2411,12 +2411,9 @@ static int stk9090m_frontend_attach(stru +@@ -2415,12 +2415,9 @@ static int stk9090m_frontend_attach(stru dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80); @@ -367,7 +367,7 @@ upstream submission. stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size; stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data; -@@ -2477,12 +2474,9 @@ static int nim9090md_frontend_attach(str +@@ -2481,12 +2478,9 @@ static int nim9090md_frontend_attach(str msleep(20); dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1); @@ -705,7 +705,7 @@ upstream submission. SMS_ALLOC_ALIGNMENT), GFP_KERNEL | GFP_DMA); --- a/drivers/media/pci/ttpci/av7110.c +++ b/drivers/media/pci/ttpci/av7110.c -@@ -1515,13 +1515,8 @@ static int get_firmware(struct av7110* a +@@ -1516,13 +1516,8 @@ static int get_firmware(struct av7110* a /* request the av7110 firmware, this will block until someone uploads it */ ret = request_firmware(&fw, "dvb-ttpci-01.fw", &av7110->dev->pci->dev); if (ret) { @@ -738,7 +738,7 @@ upstream submission. release_firmware(fw); --- a/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c +++ b/drivers/media/usb/ttusb-budget/dvb-ttusb-budget.c -@@ -296,10 +296,8 @@ static int ttusb_boot_dsp(struct ttusb * +@@ -295,10 +295,8 @@ static int ttusb_boot_dsp(struct ttusb * err = request_firmware(&fw, "ttusb-budget/dspbootcode.bin", &ttusb->dev->dev); @@ -752,7 +752,7 @@ upstream submission. b[0] = 0xaa; --- a/drivers/media/usb/ttusb-dec/ttusb_dec.c +++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c -@@ -1344,11 +1344,8 @@ static int ttusb_dec_boot_dsp(struct ttu +@@ -1334,11 +1334,8 @@ static int ttusb_dec_boot_dsp(struct ttu dprintk("%s\n", __func__); result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev); @@ -796,7 +796,7 @@ upstream submission. fw_data = (void *)fw_entry->data; --- a/drivers/media/pci/bt8xx/bttv-cards.c +++ b/drivers/media/pci/bt8xx/bttv-cards.c -@@ -3909,10 +3909,8 @@ static int pvr_boot(struct bttv *btv) +@@ -3916,10 +3916,8 @@ static int pvr_boot(struct bttv *btv) int rc; rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev); @@ -1003,7 +1003,7 @@ upstream submission. --- a/drivers/media/usb/s2255/s2255drv.c +++ b/drivers/media/usb/s2255/s2255drv.c -@@ -2307,10 +2307,8 @@ static int s2255_probe(struct usb_interf +@@ -2306,10 +2306,8 @@ static int s2255_probe(struct usb_interf } /* load the first chunk */ if (request_firmware(&dev->fw_data->fw, @@ -1017,7 +1017,7 @@ upstream submission. pdata = (__le32 *) &dev->fw_data->fw->data[fw_size - 8]; --- a/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c +++ b/drivers/media/platform/s5p-mfc/s5p_mfc_ctrl.c -@@ -66,10 +66,8 @@ int s5p_mfc_load_firmware(struct s5p_mfc +@@ -69,10 +69,8 @@ int s5p_mfc_load_firmware(struct s5p_mfc } } @@ -1156,7 +1156,7 @@ upstream submission. if (bp->mips_firmware->size < sizeof(*mips_fw) || --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c -@@ -13495,11 +13495,8 @@ static int bnx2x_init_firmware(struct bn +@@ -13524,11 +13524,8 @@ static int bnx2x_init_firmware(struct bn BNX2X_DEV_INFO("Loading %s\n", fw_file_name); rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev); @@ -1171,7 +1171,7 @@ upstream submission. if (rc) { --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c -@@ -11355,11 +11355,8 @@ static int tg3_request_firmware(struct t +@@ -11378,11 +11378,8 @@ static int tg3_request_firmware(struct t { const struct tg3_firmware_hdr *fw_hdr; @@ -1279,7 +1279,7 @@ upstream submission. for (i = 0; i < fw->size; i++) { --- a/drivers/net/ethernet/sun/cassini.c +++ b/drivers/net/ethernet/sun/cassini.c -@@ -817,11 +817,8 @@ static void cas_saturn_firmware_init(str +@@ -818,11 +818,8 @@ static void cas_saturn_firmware_init(str return; err = request_firmware(&fw, fw_name, &cp->pdev->dev); @@ -1364,7 +1364,7 @@ upstream submission. fwh = (struct at76_fw_header *)(fwe->fw->data); --- a/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c -@@ -1162,9 +1162,6 @@ static void ath9k_hif_usb_firmware_cb(co +@@ -1163,9 +1163,6 @@ static void ath9k_hif_usb_firmware_cb(co if (!ret) return; @@ -1541,7 +1541,7 @@ upstream submission. adapter->firmware = firmware; --- a/drivers/net/wireless/marvell/mwl8k.c +++ b/drivers/net/wireless/marvell/mwl8k.c -@@ -5714,16 +5714,12 @@ static int mwl8k_firmware_load_success(s +@@ -5719,16 +5719,12 @@ static int mwl8k_firmware_load_success(s static void mwl8k_fw_state_machine(const struct firmware *fw, void *context) { struct mwl8k_priv *priv = context; @@ -1559,7 +1559,7 @@ upstream submission. priv->fw_helper = fw; rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode, true); -@@ -5758,11 +5754,8 @@ static void mwl8k_fw_state_machine(const +@@ -5763,11 +5759,8 @@ static void mwl8k_fw_state_machine(const break; case FW_STATE_LOADING_ALT: @@ -1572,7 +1572,7 @@ upstream submission. priv->fw_ucode = fw; rc = mwl8k_firmware_load_success(priv); if (rc) -@@ -5800,10 +5793,8 @@ retry: +@@ -5805,10 +5798,8 @@ retry: /* Ask userland hotplug daemon for the device firmware */ rc = mwl8k_request_firmware(priv, fw_image, nowait); @@ -1741,7 +1741,7 @@ upstream submission. wl1251_error("nvs size is not multiple of 32 bits: %zu", --- a/drivers/net/wireless/ti/wlcore/main.c +++ b/drivers/net/wireless/ti/wlcore/main.c -@@ -756,10 +756,8 @@ static int wl12xx_fetch_firmware(struct +@@ -755,10 +755,8 @@ static int wl12xx_fetch_firmware(struct ret = request_firmware(&fw, fw_name, wl->dev); @@ -1850,7 +1850,7 @@ upstream submission. if (err) { --- a/drivers/scsi/bfa/bfad.c +++ b/drivers/scsi/bfa/bfad.c -@@ -1756,7 +1756,6 @@ bfad_read_firmware(struct pci_dev *pdev, +@@ -1755,7 +1755,6 @@ bfad_read_firmware(struct pci_dev *pdev, const struct firmware *fw; if (request_firmware(&fw, fw_name, &pdev->dev)) { @@ -1898,7 +1898,7 @@ upstream submission. } --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c -@@ -6906,8 +6906,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha, +@@ -7238,8 +7238,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha, /* Load firmware blob. */ blob = qla2x00_request_firmware(vha); if (!blob) { @@ -1907,7 +1907,7 @@ upstream submission. ql_log(ql_log_info, vha, 0x0084, "Firmware images can be retrieved from: "QLA_FW_URL ".\n"); return QLA_FUNCTION_FAILED; -@@ -7009,8 +7007,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t * +@@ -7341,8 +7339,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t * /* Load firmware blob. */ blob = qla2x00_request_firmware(vha); if (!blob) { @@ -1933,7 +1933,7 @@ upstream submission. if (qla82xx_validate_firmware_blob(vha, --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c -@@ -6269,8 +6269,6 @@ qla2x00_request_firmware(scsi_qla_host_t +@@ -6496,8 +6496,6 @@ qla2x00_request_firmware(scsi_qla_host_t goto out; if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) { @@ -2015,18 +2015,6 @@ upstream submission. ret = cypress_load_firmware(usbdev, fw, CYPRESS_FX2); release_firmware(fw); if (0 != ret) { ---- a/drivers/staging/media/lirc/lirc_zilog.c -+++ b/drivers/staging/media/lirc/lirc_zilog.c -@@ -752,9 +752,6 @@ static int fw_load(struct IR_tx *tx) - /* Request codeset data file */ - ret = request_firmware(&fw_entry, "haup-ir-blaster.bin", tx->ir->dev); - if (ret != 0) { -- dev_err(tx->ir->dev, -- "firmware haup-ir-blaster.bin not available (%d)\n", -- ret); - ret = ret < 0 ? ret : -EFAULT; - goto out; - } --- a/drivers/staging/rtl8192u/r819xU_firmware.c +++ b/drivers/staging/rtl8192u/r819xU_firmware.c @@ -245,10 +245,8 @@ bool init_firmware(struct net_device *de @@ -2081,7 +2069,7 @@ upstream submission. */ --- a/drivers/staging/vt6656/firmware.c +++ b/drivers/staging/vt6656/firmware.c -@@ -49,11 +49,8 @@ int vnt_download_firmware(struct vnt_pri +@@ -39,11 +39,8 @@ int vnt_download_firmware(struct vnt_pri dev_dbg(dev, "---->Download firmware\n"); rc = request_firmware(&fw, FIRMWARE_NAME, dev); @@ -2168,7 +2156,7 @@ upstream submission. --- a/drivers/usb/atm/cxacru.c +++ b/drivers/usb/atm/cxacru.c -@@ -1082,8 +1082,6 @@ static int cxacru_find_firmware(struct c +@@ -1080,8 +1080,6 @@ static int cxacru_find_firmware(struct c return -ENOENT; } @@ -2505,10 +2493,10 @@ upstream submission. if (!chip->disabled) { --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c -@@ -2349,7 +2349,6 @@ static int snd_korg1212_create(struct sn +@@ -2348,7 +2348,6 @@ static int snd_korg1212_create(struct sn + err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev); if (err < 0) { - release_firmware(dsp_code); - snd_printk(KERN_ERR "firmware not available\n"); snd_korg1212_free(korg1212); return err; @@ -2576,7 +2564,7 @@ upstream submission. "too short firmware size %d (expected %d)\n", --- a/sound/soc/codecs/wm2000.c +++ b/sound/soc/codecs/wm2000.c -@@ -891,10 +891,8 @@ static int wm2000_i2c_probe(struct i2c_c +@@ -890,10 +890,8 @@ static int wm2000_i2c_probe(struct i2c_c } ret = request_firmware(&fw, filename, &i2c->dev); diff --git a/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch b/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch index b18580e42..20bac66e5 100644 --- a/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch +++ b/debian/patches/bugfix/all/firmware_class-log-every-success-and-failure.patch @@ -23,9 +23,9 @@ format to detect missing firmware. --- --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c -@@ -450,21 +450,22 @@ fw_get_filesystem_firmware(struct device - rc = kernel_read_file_from_path(path, &buf->data, &size, msize, - id); +@@ -443,21 +443,22 @@ fw_get_filesystem_firmware(struct device + rc = kernel_read_file_from_path(path, &fw_priv->data, &size, + msize, id); if (rc) { - if (rc == -ENOENT) - dev_dbg(device, "loading %s failed with error %d\n", @@ -37,23 +37,23 @@ format to detect missing firmware. + path, rc); continue; } -- dev_dbg(device, "direct-loading %s\n", buf->fw_id); +- dev_dbg(device, "direct-loading %s\n", fw_priv->fw_name); + dev_info(device, "firmware: direct-loading firmware %s\n", -+ buf->fw_id); - buf->size = size; - fw_state_done(&buf->fw_st); ++ fw_priv->fw_name); + fw_priv->size = size; + fw_state_done(fw_priv); break; } __putname(path); + if (rc) + dev_err(device, "firmware: failed to load %s (%d)\n", -+ buf->fw_id, rc); ++ fw_priv->fw_name, rc); + return rc; } -@@ -1112,7 +1113,7 @@ static int fw_load_from_user_helper(stru +@@ -1120,7 +1121,7 @@ static int fw_load_from_user_helper(stru if (opt_flags & FW_OPT_NOWAIT) { timeout = usermodehelper_read_lock_wait(timeout); if (!timeout) { diff --git a/debian/patches/debian/gitignore.patch b/debian/patches/debian/gitignore.patch index 3932721d5..9b74fe164 100644 --- a/debian/patches/debian/gitignore.patch +++ b/debian/patches/debian/gitignore.patch @@ -7,7 +7,7 @@ Forwarded: not-needed --- a/.gitignore +++ b/.gitignore -@@ -61,23 +61,11 @@ modules.builtin +@@ -61,11 +61,6 @@ modules.builtin /*.spec # @@ -16,8 +16,10 @@ Forwarded: not-needed -/debian/ - -# - # tar directory (make tar*-pkg) + # Snap directory (make snap-pkg) # + /snap/ +@@ -76,13 +71,6 @@ modules.builtin /tar-install/ # @@ -31,10 +33,10 @@ Forwarded: not-needed # Generated include files # include/config -@@ -122,3 +110,10 @@ all.config - - # Kdevelop4 - *.kdev4 +@@ -131,3 +119,10 @@ all.config + #Automatically generated by ASN.1 compiler + net/ipv4/netfilter/nf_nat_snmp_basic-asn1.c + net/ipv4/netfilter/nf_nat_snmp_basic-asn1.h + +# +# Debian packaging: ignore everything at the top level, since it isn't diff --git a/debian/patches/debian/revert-gpu-host1x-add-iommu-support.patch b/debian/patches/debian/revert-gpu-host1x-add-iommu-support.patch index 954156583..134cbf28d 100644 --- a/debian/patches/debian/revert-gpu-host1x-add-iommu-support.patch +++ b/debian/patches/debian/revert-gpu-host1x-add-iommu-support.patch @@ -20,10 +20,11 @@ to avoid when combining the two address mapping APIs. But with XEN enabled and ARM_LPAE not enabled, as in the armmp config, dma_addr_t is 64-bit while phys_addr_t is 32-bit. -It also reverts commit fea20995976f4b2e8968f852a18e280487d42f0d -"gpu: host1x: Free the IOMMU domain when there is no device to attach" -and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe -"gpu: host1x: Don't fail on NULL bo physical address" which depend on it. +It also reverts commits fea20995976f "gpu: host1x: Free the IOMMU +domain when there is no device to attach", 8b3f5ac6b55f "gpu: host1x: +Don't fail on NULL bo physical address", 1f876c3fcead "gpu: host1x: +Rewrite conditional for better readability" and 41c3068cc2fd "gpu: +host1x: Use IOMMU groups" which depend on it. --- --- a/drivers/gpu/host1x/cdma.c @@ -176,24 +177,31 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe #include "bus.h" #include "channel.h" -@@ -218,37 +217,11 @@ static int host1x_probe(struct platform_ +@@ -218,44 +217,11 @@ static int host1x_probe(struct platform_ return err; } -- if (iommu_present(&platform_bus_type)) { +- host->group = iommu_group_get(&pdev->dev); +- if (host->group) { - struct iommu_domain_geometry *geometry; - unsigned long order; - - host->domain = iommu_domain_alloc(&platform_bus_type); -- if (!host->domain) -- return -ENOMEM; +- if (!host->domain) { +- err = -ENOMEM; +- goto put_group; +- } +- +- err = iommu_attach_group(host->domain, host->group); +- if (err) { +- if (err == -ENODEV) { +- iommu_domain_free(host->domain); +- host->domain = NULL; +- iommu_group_put(host->group); +- host->group = NULL; +- goto skip_iommu; +- } - -- err = iommu_attach_device(host->domain, &pdev->dev); -- if (err == -ENODEV) { -- iommu_domain_free(host->domain); -- host->domain = NULL; -- goto skip_iommu; -- } else if (err) { - goto fail_free_domain; - } - @@ -215,30 +223,33 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe } err = clk_prepare_enable(host->clk); -@@ -293,15 +266,6 @@ fail_unprepare_disable: +@@ -300,17 +266,6 @@ fail_unprepare_disable: clk_disable_unprepare(host->clk); fail_free_channels: host1x_channel_list_free(&host->channel_list); -fail_detach_device: -- if (host->domain) { +- if (host->group && host->domain) { - put_iova_domain(&host->iova); -- iommu_detach_device(host->domain, &pdev->dev); +- iommu_detach_group(host->domain, host->group); - } -fail_free_domain: - if (host->domain) - iommu_domain_free(host->domain); +-put_group: +- iommu_group_put(host->group); - return err; } -@@ -315,12 +279,6 @@ static int host1x_remove(struct platform +@@ -324,13 +279,6 @@ static int host1x_remove(struct platform reset_control_assert(host->rst); clk_disable_unprepare(host->clk); - if (host->domain) { - put_iova_domain(&host->iova); -- iommu_detach_device(host->domain, &pdev->dev); +- iommu_detach_group(host->domain, host->group); - iommu_domain_free(host->domain); +- iommu_group_put(host->group); - } - return 0; @@ -255,10 +266,11 @@ and commit 8b3f5ac6b55f5f3f60723a58f14ec235a5b8cfe #include #include -@@ -117,10 +115,6 @@ struct host1x { +@@ -117,11 +115,6 @@ struct host1x { struct clk *clk; struct reset_control *rst; +- struct iommu_group *group; - struct iommu_domain *domain; - struct iova_domain iova; - dma_addr_t iova_end; diff --git a/debian/patches/debian/sched-autogroup-disabled.patch b/debian/patches/debian/sched-autogroup-disabled.patch index cc75a05c1..0b7a018eb 100644 --- a/debian/patches/debian/sched-autogroup-disabled.patch +++ b/debian/patches/debian/sched-autogroup-disabled.patch @@ -8,9 +8,9 @@ it by default yet. --- a/kernel/sched/autogroup.c +++ b/kernel/sched/autogroup.c -@@ -9,7 +9,7 @@ - #include - #include +@@ -7,7 +7,7 @@ + + #include "sched.h" -unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1; +unsigned int __read_mostly sysctl_sched_autogroup_enabled = 0; diff --git a/debian/patches/debian/version.patch b/debian/patches/debian/version.patch index 547b85f45..afb5e0ec9 100644 --- a/debian/patches/debian/version.patch +++ b/debian/patches/debian/version.patch @@ -9,7 +9,7 @@ are set. --- a/Makefile +++ b/Makefile -@@ -1048,7 +1048,7 @@ endif +@@ -1087,7 +1087,7 @@ endif prepare2: prepare3 prepare-compiler-check outputmakefile asm-generic prepare1: prepare2 $(version_h) include/generated/utsrelease.h \ @@ -18,7 +18,7 @@ are set. $(cmd_crmodverdir) archprepare: archheaders archscripts prepare1 scripts_basic -@@ -1118,6 +1118,16 @@ define filechk_version.h +@@ -1168,6 +1168,16 @@ define filechk_version.h echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))';) endef @@ -35,7 +35,7 @@ are set. $(version_h): $(srctree)/Makefile FORCE $(call filechk,version.h) $(Q)rm -f $(old_version_h) -@@ -1125,6 +1135,9 @@ $(version_h): $(srctree)/Makefile FORCE +@@ -1175,6 +1185,9 @@ $(version_h): $(srctree)/Makefile FORCE include/generated/utsrelease.h: include/config/kernel.release FORCE $(call filechk,utsrelease.h) @@ -69,7 +69,7 @@ are set. printk(KERN_INFO "RSP: %016lx EFLAGS: %08lx\n", PT_REGS_SP(regs), --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c -@@ -35,6 +35,7 @@ +@@ -34,6 +34,7 @@ #include #include #include @@ -77,7 +77,7 @@ are set. #include #include -@@ -108,9 +109,9 @@ show_regs (struct pt_regs *regs) +@@ -104,9 +105,9 @@ show_regs (struct pt_regs *regs) print_modules(); printk("\n"); show_regs_print_info(KERN_DEFAULT); @@ -86,20 +86,20 @@ are set. regs->cr_ipsr, regs->cr_ifs, ip, print_tainted(), - init_utsname()->release); + init_utsname()->release, LINUX_PACKAGE_ID); - print_symbol("ip is at %s\n", ip); + printk("ip is at %pS\n", (void *)ip); printk("unat: %016lx pfs : %016lx rsc : %016lx\n", regs->ar_unat, regs->ar_pfs, regs->ar_rsc); --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c -@@ -42,6 +42,7 @@ - #include +@@ -43,6 +43,7 @@ #include #include + #include +#include #include #include -@@ -1403,8 +1404,9 @@ void show_regs(struct pt_regs * regs) +@@ -1404,8 +1405,9 @@ void show_regs(struct pt_regs * regs) printk("NIP: "REG" LR: "REG" CTR: "REG"\n", regs->nip, regs->link, regs->ctr); @@ -145,7 +145,7 @@ are set. #include #include -@@ -3118,11 +3119,12 @@ void __init dump_stack_set_arch_desc(con +@@ -3288,11 +3289,12 @@ void __init dump_stack_set_arch_desc(con */ void dump_stack_print_info(const char *log_lvl) { diff --git a/debian/patches/features/all/aufs4/aufs4-mmap.patch b/debian/patches/features/all/aufs4/aufs4-mmap.patch index b1a9c0240..df8e0962b 100644 --- a/debian/patches/features/all/aufs4/aufs4-mmap.patch +++ b/debian/patches/features/all/aufs4/aufs4-mmap.patch @@ -9,11 +9,9 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch SPDX-License-Identifier: GPL-2.0 aufs4.x-rcN mmap patch -diff --git a/fs/proc/base.c b/fs/proc/base.c -index 60316b5..ce5314e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c -@@ -1987,7 +1987,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path) +@@ -2014,7 +2014,7 @@ static int map_files_get_link(struct den down_read(&mm->mmap_sem); vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { @@ -22,11 +20,9 @@ index 60316b5..ce5314e 100644 path_get(path); rc = 0; } -diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c -index 7563437..7c0dc0f 100644 --- a/fs/proc/nommu.c +++ b/fs/proc/nommu.c -@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region) +@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_ file = region->vm_file; if (file) { @@ -38,11 +34,9 @@ index 7563437..7c0dc0f 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; } -diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index 339e4c1..1138098 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c -@@ -306,7 +306,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid) +@@ -311,7 +311,10 @@ show_map_vma(struct seq_file *m, struct const char *name = NULL; if (file) { @@ -54,7 +48,7 @@ index 339e4c1..1138098 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; -@@ -1736,7 +1739,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) +@@ -1741,7 +1744,7 @@ static int show_numa_map(struct seq_file struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; @@ -63,11 +57,9 @@ index 339e4c1..1138098 100644 struct mm_struct *mm = vma->vm_mm; struct mm_walk walk = { .hugetlb_entry = gather_hugetlb_stats, -diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c -index 5b62f57..dfb4a3b 100644 --- a/fs/proc/task_nommu.c +++ b/fs/proc/task_nommu.c -@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma, +@@ -156,7 +156,10 @@ static int nommu_vma_show(struct seq_fil file = vma->vm_file; if (file) { @@ -79,13 +71,11 @@ index 5b62f57..dfb4a3b 100644 dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; -diff --git a/include/linux/mm.h b/include/linux/mm.h -index ea818ff..fbd4799 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h -@@ -1362,6 +1362,28 @@ static inline int fixup_user_fault(struct task_struct *tsk, +@@ -1368,6 +1368,28 @@ static inline void unmap_shared_mapping_ + unmap_mapping_range(mapping, holebegin, holelen, 0); } - #endif +extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); +extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], @@ -109,14 +99,12 @@ index ea818ff..fbd4799 100644 +#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) +#endif /* !CONFIG_MMU */ + - extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, - unsigned int gup_flags); + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, + void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, -diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h -index cfd0ac4..135e11c 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h -@@ -255,6 +255,7 @@ struct vm_region { +@@ -249,6 +249,7 @@ struct vm_region { unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ @@ -124,7 +112,7 @@ index cfd0ac4..135e11c 100644 int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for -@@ -329,6 +330,7 @@ struct vm_area_struct { +@@ -323,6 +324,7 @@ struct vm_area_struct { unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ @@ -132,11 +120,9 @@ index cfd0ac4..135e11c 100644 void * vm_private_data; /* was vm_pte (shared mem) */ atomic_long_t swap_readahead_info; -diff --git a/kernel/fork.c b/kernel/fork.c -index 432eadf..8b2ba5b 100644 --- a/kernel/fork.c +++ b/kernel/fork.c -@@ -676,7 +676,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm, +@@ -474,7 +474,7 @@ static __latent_entropy int dup_mmap(str struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; @@ -145,11 +131,9 @@ index 432eadf..8b2ba5b 100644 if (tmp->vm_flags & VM_DENYWRITE) atomic_dec(&inode->i_writecount); i_mmap_lock_write(mapping); -diff --git a/mm/Makefile b/mm/Makefile -index e669f02..9c36567 100644 --- a/mm/Makefile +++ b/mm/Makefile -@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill.o \ +@@ -39,7 +39,7 @@ obj-y := filemap.o mempool.o oom_kill. mm_init.o mmu_context.o percpu.o slab_common.o \ compaction.o vmacache.o swap_slots.o \ interval_tree.o list_lru.o workingset.o \ @@ -158,11 +142,9 @@ index e669f02..9c36567 100644 obj-y += init-mm.o -diff --git a/mm/filemap.c b/mm/filemap.c -index ee83baa..7677d13 100644 --- a/mm/filemap.c +++ b/mm/filemap.c -@@ -2704,7 +2704,7 @@ int filemap_page_mkwrite(struct vm_fault *vmf) +@@ -2703,7 +2703,7 @@ int filemap_page_mkwrite(struct vm_fault int ret = VM_FAULT_LOCKED; sb_start_pagefault(inode->i_sb); @@ -171,11 +153,9 @@ index ee83baa..7677d13 100644 lock_page(page); if (page->mapping != inode->i_mapping) { unlock_page(page); -diff --git a/mm/mmap.c b/mm/mmap.c -index a4d5468..cb06cbd 100644 --- a/mm/mmap.c +++ b/mm/mmap.c -@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) +@@ -171,7 +171,7 @@ static struct vm_area_struct *remove_vma if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -184,7 +164,7 @@ index a4d5468..cb06cbd 100644 mpol_put(vma_policy(vma)); kmem_cache_free(vm_area_cachep, vma); return next; -@@ -896,7 +896,7 @@ int __vma_adjust(struct vm_area_struct *vma, unsigned long start, +@@ -896,7 +896,7 @@ again: if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); @@ -193,7 +173,7 @@ index a4d5468..cb06cbd 100644 } if (next->anon_vma) anon_vma_merge(vma, next); -@@ -1761,8 +1761,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr, +@@ -1761,8 +1761,8 @@ out: return addr; unmap_and_free_vma: @@ -203,7 +183,7 @@ index a4d5468..cb06cbd 100644 /* Undo any partial mapping done by a device driver. */ unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end); -@@ -2586,7 +2586,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2586,7 +2586,7 @@ int __split_vma(struct mm_struct *mm, st goto out_free_mpol; if (new->vm_file) @@ -212,7 +192,7 @@ index a4d5468..cb06cbd 100644 if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); -@@ -2605,7 +2605,7 @@ int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma, +@@ -2605,7 +2605,7 @@ int __split_vma(struct mm_struct *mm, st if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) @@ -221,7 +201,7 @@ index a4d5468..cb06cbd 100644 unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); -@@ -2767,7 +2767,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2767,7 +2767,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsign struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; @@ -230,7 +210,7 @@ index a4d5468..cb06cbd 100644 pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n", current->comm, current->pid); -@@ -2842,10 +2842,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, +@@ -2842,10 +2842,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsign } } @@ -259,7 +239,7 @@ index a4d5468..cb06cbd 100644 out: up_write(&mm->mmap_sem); if (populate) -@@ -3153,7 +3170,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap, +@@ -3153,7 +3170,7 @@ struct vm_area_struct *copy_vma(struct v if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) @@ -268,11 +248,9 @@ index a4d5468..cb06cbd 100644 if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); -diff --git a/mm/nommu.c b/mm/nommu.c -index 17c00d9..4bcdf94 100644 --- a/mm/nommu.c +++ b/mm/nommu.c -@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm_region *region) +@@ -641,7 +641,7 @@ static void __put_nommu_region(struct vm up_write(&nommu_region_sem); if (region->vm_file) @@ -281,7 +259,7 @@ index 17c00d9..4bcdf94 100644 /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ -@@ -799,7 +799,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma) +@@ -799,7 +799,7 @@ static void delete_vma(struct mm_struct if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) @@ -299,7 +277,7 @@ index 17c00d9..4bcdf94 100644 kmem_cache_free(vm_region_jar, region); region = pregion; result = start; -@@ -1396,10 +1396,10 @@ unsigned long do_mmap(struct file *file, +@@ -1396,10 +1396,10 @@ error_just_free: up_write(&nommu_region_sem); error: if (region->vm_file) @@ -312,9 +290,6 @@ index 17c00d9..4bcdf94 100644 kmem_cache_free(vm_area_cachep, vma); return ret; -diff --git a/mm/prfile.c b/mm/prfile.c -new file mode 100644 -index 0000000..3f56669 --- /dev/null +++ b/mm/prfile.c @@ -0,0 +1,86 @@ diff --git a/debian/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch b/debian/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch index 79b3ec110..39d493cbe 100644 --- a/debian/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch +++ b/debian/patches/features/all/lockdown/0011-PCI-Lock-down-BAR-access-when-the-kernel-is-locked-d.patch @@ -20,11 +20,9 @@ cc: linux-pci@vger.kernel.org drivers/pci/syscall.c | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) -diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c -index 1eecfa301f7f..e1a3b0e765c2 100644 --- a/drivers/pci/pci-sysfs.c +++ b/drivers/pci/pci-sysfs.c -@@ -881,6 +881,9 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj, +@@ -930,6 +930,9 @@ static ssize_t pci_write_config(struct f loff_t init_off = off; u8 *data = (u8 *) buf; @@ -34,7 +32,7 @@ index 1eecfa301f7f..e1a3b0e765c2 100644 if (off > dev->cfg_size) return 0; if (off + count > dev->cfg_size) { -@@ -1175,6 +1178,9 @@ static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, +@@ -1224,6 +1227,9 @@ static int pci_mmap_resource(struct kobj enum pci_mmap_state mmap_type; struct resource *res = &pdev->resource[bar]; @@ -44,7 +42,7 @@ index 1eecfa301f7f..e1a3b0e765c2 100644 if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start)) return -EINVAL; -@@ -1255,6 +1261,9 @@ static ssize_t pci_write_resource_io(struct file *filp, struct kobject *kobj, +@@ -1299,6 +1305,9 @@ static ssize_t pci_write_resource_io(str struct bin_attribute *attr, char *buf, loff_t off, size_t count) { @@ -54,11 +52,9 @@ index 1eecfa301f7f..e1a3b0e765c2 100644 return pci_resource_io(filp, kobj, attr, buf, off, count, true); } -diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c -index 098360d7ff81..a6c53d855daa 100644 --- a/drivers/pci/proc.c +++ b/drivers/pci/proc.c -@@ -116,6 +116,9 @@ static ssize_t proc_bus_pci_write(struct file *file, const char __user *buf, +@@ -117,6 +117,9 @@ static ssize_t proc_bus_pci_write(struct int size = dev->cfg_size; int cnt; @@ -68,7 +64,7 @@ index 098360d7ff81..a6c53d855daa 100644 if (pos >= size) return 0; if (nbytes >= size) -@@ -195,6 +198,9 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd, +@@ -196,6 +199,9 @@ static long proc_bus_pci_ioctl(struct fi #endif /* HAVE_PCI_MMAP */ int ret = 0; @@ -78,7 +74,7 @@ index 098360d7ff81..a6c53d855daa 100644 switch (cmd) { case PCIIOC_CONTROLLER: ret = pci_domain_nr(dev->bus); -@@ -236,7 +242,8 @@ static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma) +@@ -237,7 +243,8 @@ static int proc_bus_pci_mmap(struct file struct pci_filp_private *fpriv = file->private_data; int i, ret, write_combine = 0, res_bit = IORESOURCE_MEM; @@ -88,11 +84,9 @@ index 098360d7ff81..a6c53d855daa 100644 return -EPERM; if (fpriv->mmap_state == pci_mmap_io) { -diff --git a/drivers/pci/syscall.c b/drivers/pci/syscall.c -index 9bf993e1f71e..afa01cc3ceec 100644 --- a/drivers/pci/syscall.c +++ b/drivers/pci/syscall.c -@@ -92,7 +92,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, +@@ -93,7 +93,8 @@ SYSCALL_DEFINE5(pciconfig_write, unsigne u32 dword; int err = 0; @@ -101,4 +95,4 @@ index 9bf993e1f71e..afa01cc3ceec 100644 + kernel_is_locked_down("Direct PCI access")) return -EPERM; - dev = pci_get_bus_and_slot(bus, dfn); + dev = pci_get_domain_bus_and_slot(0, bus, dfn); diff --git a/debian/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch b/debian/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch deleted file mode 100644 index 12d70baa8..000000000 --- a/debian/patches/features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch +++ /dev/null @@ -1,91 +0,0 @@ -From d67849c340aa803f25a1b3720ba399fecd4f88ab Mon Sep 17 00:00:00 2001 -From: Jon Hunter -Date: Tue, 28 Mar 2017 12:48:38 +0100 -Subject: [PATCH] arm64: tegra: Add CPU and PSCI nodes for NVIDIA Tegra210 - platforms - -Add the CPU and PSCI nodes for the NVIDIA Tegra210 platforms so that -all CPUs can be enabled on boot. This assumes that the PSCI firmware -has been loaded during the initial bootstrap on the device before the -kernel starts (which is typically the case for these platforms). The -PSCI firmware version is set to v0.2 which aligns with the current -shipping version for Tegra. - -Reported-by: Martin Michlmayr -Signed-off-by: Jon Hunter -Tested-By: Vagrant Cascadian -Signed-off-by: Thierry Reding ---- - arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 23 +++++++++++++++++++++++ - arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi | 23 +++++++++++++++++++++++ - 2 files changed, 46 insertions(+) - -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -index d10d4430537a..212e6634c9ba 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi -@@ -297,6 +297,29 @@ - }; - }; - -+ cpus { -+ cpu@0 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@1 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@2 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@3 { -+ enable-method = "psci"; -+ }; -+ }; -+ -+ psci { -+ compatible = "arm,psci-0.2"; -+ method = "smc"; -+ }; -+ - regulators { - vdd_gpu: regulator@100 { - compatible = "pwm-regulator"; -diff --git a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi -index be6066ff97c9..d0dc03923723 100644 ---- a/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi -+++ b/arch/arm64/boot/dts/nvidia/tegra210-p2530.dtsi -@@ -52,4 +52,27 @@ - clock-frequency = <32768>; - }; - }; -+ -+ cpus { -+ cpu@0 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@1 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@2 { -+ enable-method = "psci"; -+ }; -+ -+ cpu@3 { -+ enable-method = "psci"; -+ }; -+ }; -+ -+ psci { -+ compatible = "arm,psci-0.2"; -+ method = "smc"; -+ }; - }; --- -2.11.0 - diff --git a/debian/patches/series b/debian/patches/series index 5d4efe634..b40b705d7 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -78,7 +78,6 @@ bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch debian/revert-objtool-fix-config_stack_validation-y-warning.patch -bugfix/all/crypto-ecc-fix-null-pointer-deref.-on-no-default_rng.patch # Miscellaneous features @@ -136,7 +135,4 @@ bugfix/all/cpupower-fix-checks-for-cpu-existence.patch bugfix/all/lockdep-stub-nmi-watchdog-reset.patch bugfix/arm64/ARM64-dts-meson-reduce-odroid-c2-eMMC-maximum-rate.patch -# Backport patches from linux-next (next-20180103) to support SMP on tegra210 systems -features/arm64/tegra210-smp/0001-arm64-tegra-Add-CPU-and-PSCI-nodes-for-NVIDIA-Tegra2.patch - # ABI maintenance