[linux] 01/01: Update to 4.6-rc3
debian-kernel at lists.debian.org
debian-kernel at lists.debian.org
Thu Apr 14 14:04:06 UTC 2016
This is an automated email from the git hooks/post-receive script.
benh pushed a commit to branch master
in repository linux.
commit f4701f7d7081f2b485c78d7dabd5793a71e5c529
Author: Ben Hutchings <ben at decadent.org.uk>
Date: Thu Apr 14 14:59:13 2016 +0100
Update to 4.6-rc3
Refresh or drop *many* patches.
aufs: Update support patches to aufs4.x-rcN-20160328
---
debian/changelog | 9 +
...emove-redundant-log-messages-from-drivers.patch | 56 +-
...mware_class-log-every-success-and-failure.patch | 54 +-
...ass-return-specific-errors-from-file-read.patch | 80 --
...le_softdep-declarations-for-hard-coded-cr.patch | 52 +-
...do-expensive-useless-work-during-inetdev-.patch | 94 --
.../all/kbuild-fix-recordmcount-dependency.patch | 8 +-
.../bugfix/all/lockdep-add-missing-macros.patch | 12 +-
.../patches/bugfix/all/lockdep-fix-oot-build.patch | 4 +-
debian/patches/bugfix/all/lockdep-fix-soname.patch | 6 +-
.../misc-bmp085-Enable-building-as-a-module.patch | 29 -
...-zone_device-depends-on-sparsemem_vmemmap.patch | 36 -
...etfilter-x_tables-check-for-size-overflow.patch | 29 -
..._tables-make-sure-e-next_offset-covers-re.patch | 88 --
...r-x_tables-validate-e-target_offset-early.patch | 197 -----
...sleadingly-indented-assignment-whitespace.patch | 26 -
...s-required-for-drm-and-kms-on-r600-onward.patch | 10 +-
...cripts-fix-x.509-pem-support-in-sign-file.patch | 11 +-
.../bugfix/all/tools-lib-lockdep-use-ldflags.patch | 6 +-
...sor-request-native-thermal-interrupt-hand.patch | 166 ----
...et3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch | 55 --
...t-fix-kernel-panic-when-mapping-bgrt-data.patch | 180 ----
...bgrt-replace-early_memremap-with-memremap.patch | 92 --
...6-efi-build-our-own-page-table-structures.patch | 319 -------
...st-page-table-switching-code-into-efi_cal.patch | 215 -----
...-ram-into-the-identity-page-table-for-mix.patch | 71 --
...up-separate-efi-page-tables-in-kexec-path.patch | 83 --
...nable-full-randomization-on-i386-and-x86_.patch | 80 --
...-align-the-_end-symbol-to-avoid-pfn-conve.patch | 53 --
...ensure-cpa-pfn-only-contains-page-frame-n.patch | 144 ---
...ot-crash-when-1gb-pages-are-not-supported.patch | 58 --
debian/patches/debian/kernelvariables.patch | 6 +-
debian/patches/features/all/aufs4/aufs4-base.patch | 30 +-
debian/patches/features/all/aufs4/aufs4-mmap.patch | 85 +-
.../features/all/aufs4/aufs4-standalone.patch | 24 +-
...ow-memory-cgroup-support-to-be-included-b.patch | 20 +-
...m-exclude-zone_device-from-gfp_zone_table.patch | 115 ---
...d-create-size-change-events-for-userspace.patch | 163 ----
...e-apei-error-injection-if-securelevel-is-.patch | 2 +-
...strict-msr-access-when-securelevel-is-set.patch | 2 +-
...q-wandboard-revb1.dts-use-unique-model-id.patch | 59 --
...rkwood-add-for-buffalo-linkstation-ls-qvl.patch | 187 ----
...-relicense-dts-of-ls-wvl-vl-and-ls-wxl-ws.patch | 117 ---
...-split-lswvl-dts-to-linkstation-lsvl-and-.patch | 771 ----------------
...-split-lswxl-dts-to-linkstation-lswsxl-an.patch | 975 ---------------------
...orion5x-add-for-buffalo-linkstation-ls-gl.patch | 132 ---
...split-linkstation-lswtgl-into-common-and-.patch | 699 ---------------
.../libata-support-AHCI-on-OCTEON-platform.patch | 272 ------
...hwrng-n2-attach-on-t5-m5-t7-m7-sparc-cpus.patch | 37 -
.../x86-make-x32-syscall-support-conditional.patch | 73 +-
debian/patches/series | 31 -
51 files changed, 224 insertions(+), 5899 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index a5515a2..7638851 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+linux (4.6~rc3-1~exp1) UNRELEASED; urgency=medium
+
+ * New upstream release candidate
+
+ [ Ben Hutchings ]
+ * aufs: Update support patches to aufs4.x-rcN-20160328
+
+ -- Ben Hutchings <ben at decadent.org.uk> Thu, 14 Apr 2016 13:44:11 +0100
+
linux (4.5.1-1) unstable; urgency=medium
* New upstream stable update:
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 106886f..059b03f 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
@@ -53,7 +53,7 @@ upstream submission.
/* disable MPU */
--- a/arch/x86/kernel/cpu/microcode/amd.c
+++ b/arch/x86/kernel/cpu/microcode/amd.c
-@@ -907,10 +907,8 @@ static enum ucode_state request_microcod
+@@ -900,10 +900,8 @@ static enum ucode_state request_microcod
if (c->x86 >= 0x15)
snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
@@ -96,7 +96,7 @@ upstream submission.
fw_size = firmware->size / sizeof(u32);
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
-@@ -408,10 +408,8 @@ static int ath3k_load_patch(struct usb_d
+@@ -416,10 +416,8 @@ static int ath3k_load_patch(struct usb_d
le32_to_cpu(fw_version.rom_version));
ret = request_firmware(&firmware, filename, &udev->dev);
@@ -108,7 +108,7 @@ upstream submission.
pt_rom_version = get_unaligned_le32(firmware->data +
firmware->size - 8);
-@@ -471,10 +469,8 @@ static int ath3k_load_syscfg(struct usb_
+@@ -479,10 +477,8 @@ static int ath3k_load_syscfg(struct usb_
le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
ret = request_firmware(&firmware, filename, &udev->dev);
@@ -233,10 +233,10 @@ upstream submission.
where = 0;
--- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
-@@ -1736,10 +1736,8 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, co
+@@ -1755,10 +1755,8 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, co
+ int ret;
- snprintf(f, sizeof(f), "nvidia/%s/%s.bin", cname, fwname);
- ret = request_firmware(&fw, f, device->dev);
+ ret = nvkm_firmware_get(device, fwname, &fw);
- if (ret) {
- nvkm_error(subdev, "failed to load %s\n", fwname);
+ if (ret)
@@ -355,7 +355,7 @@ upstream submission.
}
--- a/drivers/media/usb/dvb-usb/dib0700_devices.c
+++ b/drivers/media/usb/dvb-usb/dib0700_devices.c
-@@ -2391,12 +2391,9 @@ static int stk9090m_frontend_attach(stru
+@@ -2410,12 +2410,9 @@ static int stk9090m_frontend_attach(stru
dib9000_i2c_enumeration(&adap->dev->i2c_adap, 1, 0x10, 0x80);
@@ -370,7 +370,7 @@ upstream submission.
stk9090m_config.microcode_B_fe_size = state->frontend_firmware->size;
stk9090m_config.microcode_B_fe_buffer = state->frontend_firmware->data;
-@@ -2457,12 +2454,9 @@ static int nim9090md_frontend_attach(str
+@@ -2476,12 +2473,9 @@ static int nim9090md_frontend_attach(str
msleep(20);
dib0700_set_gpio(adap->dev, GPIO0, GPIO_OUT, 1);
@@ -442,7 +442,7 @@ upstream submission.
p = kmalloc(fw->size, GFP_KERNEL);
--- a/drivers/media/dvb-frontends/af9013.c
+++ b/drivers/media/dvb-frontends/af9013.c
-@@ -1376,16 +1376,8 @@ static int af9013_download_firmware(stru
+@@ -1380,16 +1380,8 @@ static int af9013_download_firmware(stru
/* request the firmware, this will block and timeout */
ret = request_firmware(&fw, fw_file, state->i2c->dev.parent);
@@ -707,12 +707,12 @@ upstream submission.
rc = request_firmware(&fw, fw_filename, coredev->device);
- if (rc < 0) {
- pr_err("failed to open firmware file '%s'\n", fw_filename);
-+ if (rc)
++ if (rc < 0)
return rc;
- }
pr_debug("read fw %s, buffer size=0x%zx\n", fw_filename, fw->size);
- fw_buf = kmalloc(ALIGN(fw->size, SMS_ALLOC_ALIGNMENT),
- GFP_KERNEL | GFP_DMA);
+ fw_buf = kmalloc(ALIGN(fw->size + sizeof(struct sms_firmware),
+ SMS_ALLOC_ALIGNMENT), GFP_KERNEL | GFP_DMA);
--- a/drivers/media/pci/ttpci/av7110.c
+++ b/drivers/media/pci/ttpci/av7110.c
@@ -1531,16 +1531,9 @@ static int get_firmware(struct av7110* a
@@ -1189,7 +1189,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
-@@ -13398,11 +13398,8 @@ static int bnx2x_init_firmware(struct bn
+@@ -13467,11 +13467,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);
@@ -1397,7 +1397,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
-@@ -1158,9 +1158,6 @@ static void ath9k_hif_usb_firmware_cb(co
+@@ -1160,9 +1160,6 @@ static void ath9k_hif_usb_firmware_cb(co
if (!ret)
return;
@@ -1537,7 +1537,7 @@ upstream submission.
else
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
-@@ -1208,13 +1208,8 @@ static void iwl_req_fw_callback(const st
+@@ -1219,13 +1219,8 @@ static void iwl_req_fw_callback(const st
if (!pieces)
return;
@@ -1565,7 +1565,7 @@ upstream submission.
}
--- a/drivers/net/wireless/marvell/mwifiex/main.c
+++ b/drivers/net/wireless/marvell/mwifiex/main.c
-@@ -508,11 +508,8 @@ static void mwifiex_fw_dpc(const struct
+@@ -515,11 +515,8 @@ static void mwifiex_fw_dpc(const struct
bool init_failed = false;
struct wireless_dev *wdev;
@@ -1580,7 +1580,7 @@ upstream submission.
adapter->firmware = firmware;
--- a/drivers/net/wireless/marvell/mwl8k.c
+++ b/drivers/net/wireless/marvell/mwl8k.c
-@@ -5712,16 +5712,12 @@ static int mwl8k_firmware_load_success(s
+@@ -5714,16 +5714,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;
@@ -1598,7 +1598,7 @@ upstream submission.
priv->fw_helper = fw;
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
true);
-@@ -5756,11 +5752,8 @@ static void mwl8k_fw_state_machine(const
+@@ -5758,11 +5754,8 @@ static void mwl8k_fw_state_machine(const
break;
case FW_STATE_LOADING_ALT:
@@ -1611,7 +1611,7 @@ upstream submission.
priv->fw_ucode = fw;
rc = mwl8k_firmware_load_success(priv);
if (rc)
-@@ -5798,10 +5791,8 @@ retry:
+@@ -5800,10 +5793,8 @@ retry:
/* Ask userland hotplug daemon for the device firmware */
rc = mwl8k_request_firmware(priv, fw_image, nowait);
@@ -1734,7 +1734,7 @@ upstream submission.
rt2x00_err(rt2x00dev, "Failed to read Firmware\n");
--- a/drivers/net/wireless/realtek/rtlwifi/core.c
+++ b/drivers/net/wireless/realtek/rtlwifi/core.c
-@@ -115,7 +115,6 @@ static void rtl_fw_do_work(const struct
+@@ -111,7 +111,6 @@ static void rtl_fw_do_work(const struct
if (!err)
goto found_alt;
}
@@ -1937,7 +1937,7 @@ upstream submission.
}
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -5540,8 +5540,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
+@@ -5637,8 +5637,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
/* Load firmware blob. */
blob = qla2x00_request_firmware(vha);
if (!blob) {
@@ -1946,7 +1946,7 @@ upstream submission.
ql_log(ql_log_info, vha, 0x0084,
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
return QLA_FUNCTION_FAILED;
-@@ -5643,8 +5641,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
+@@ -5740,8 +5738,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
/* Load firmware blob. */
blob = qla2x00_request_firmware(vha);
if (!blob) {
@@ -1972,7 +1972,7 @@ upstream submission.
if (qla82xx_validate_firmware_blob(vha,
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -5529,8 +5529,6 @@ qla2x00_request_firmware(scsi_qla_host_t
+@@ -5539,8 +5539,6 @@ qla2x00_request_firmware(scsi_qla_host_t
goto out;
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
@@ -2093,7 +2093,7 @@ upstream submission.
MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
--- a/drivers/staging/slicoss/slicoss.c
+++ b/drivers/staging/slicoss/slicoss.c
-@@ -408,11 +408,8 @@ static int slic_card_download_gbrcv(stru
+@@ -404,11 +404,8 @@ static int slic_card_download_gbrcv(stru
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@@ -2106,7 +2106,7 @@ upstream submission.
rcvucodelen = *(u32 *)(fw->data + index);
index += 4;
-@@ -486,11 +483,8 @@ static int slic_card_download(struct ada
+@@ -482,11 +479,8 @@ static int slic_card_download(struct ada
return -ENOENT;
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@@ -2137,7 +2137,7 @@ upstream submission.
if (!buffer)
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
-@@ -3509,10 +3509,8 @@ static int cyz_load_fw(struct pci_dev *p
+@@ -3507,10 +3507,8 @@ static int cyz_load_fw(struct pci_dev *p
int retval;
retval = request_firmware(&fw, "cyzfirm.bin", &pdev->dev);
@@ -2208,7 +2208,7 @@ upstream submission.
--- a/drivers/usb/atm/cxacru.c
+++ b/drivers/usb/atm/cxacru.c
-@@ -1086,8 +1086,6 @@ static int cxacru_find_firmware(struct c
+@@ -1088,8 +1088,6 @@ static int cxacru_find_firmware(struct c
return -ENOENT;
}
@@ -2402,7 +2402,7 @@ upstream submission.
if ((fw_entry->size < 8*1024) || (fw_entry->size > 64*1024)) {
--- a/drivers/video/fbdev/metronomefb.c
+++ b/drivers/video/fbdev/metronomefb.c
-@@ -677,10 +677,8 @@ static int metronomefb_probe(struct plat
+@@ -679,10 +679,8 @@ static int metronomefb_probe(struct plat
a) request the waveform file from userspace
b) process waveform and decode into metromem */
retval = request_firmware(&fw_entry, "metronome.wbf", &dev->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 abb0b70..b8a829f 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,41 +23,37 @@ format to detect missing firmware.
---
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
-@@ -340,16 +340,19 @@ static int fw_get_filesystem_firmware(st
- rc = fw_read_file_contents(file, buf);
- fput(file);
- if (rc)
-- dev_warn(device, "firmware, attempted to load %s, but failed with error %d\n",
-+ dev_dbg(device, "firmware, attempted to load %s, but failed with error %d\n",
- path, rc);
- else
- break;
+@@ -329,21 +329,22 @@ static int fw_get_filesystem_firmware(st
+ rc = kernel_read_file_from_path(path, &buf->data, &size,
+ INT_MAX, READING_FIRMWARE);
+ if (rc) {
+- if (rc == -ENOENT)
+- dev_dbg(device, "loading %s failed with error %d\n",
+- path, rc);
+- else
+- dev_warn(device, "loading %s failed with error %d\n",
+- path, rc);
++ dev_dbg(device, "loading %s failed with error %d\n",
++ path, rc);
+ continue;
+ }
+- dev_dbg(device, "direct-loading %s\n", buf->fw_id);
++ dev_info(device, "firmware: direct-loading firmware %s\n",
++ buf->fw_id);
+ buf->size = size;
+ fw_finish_direct_load(device, buf);
+ break;
}
__putname(path);
-- if (!rc) {
-- dev_dbg(device, "firmware: direct-loading firmware %s\n",
-- buf->fw_id);
-+ if (rc) {
++ if (rc)
+ dev_err(device, "firmware: failed to load %s (%d)\n",
+ buf->fw_id, rc);
-+ } else {
-+ dev_info(device, "firmware: direct-loading firmware %s\n",
-+ buf->fw_id);
- mutex_lock(&fw_lock);
- set_bit(FW_STATUS_DONE, &buf->status);
- complete_all(&buf->completion);
-@@ -1026,7 +1029,8 @@ _request_firmware_prepare(struct firmwar
- }
-
- if (fw_get_builtin_firmware(firmware, name)) {
-- dev_dbg(device, "firmware: using built-in firmware %s\n", name);
-+ dev_info(device, "firmware: using built-in firmware %s\n",
-+ name);
- return 0; /* assigned */
- }
++
+ return rc;
+ }
-@@ -1109,7 +1113,7 @@ _request_firmware(const struct firmware
+@@ -1114,7 +1115,7 @@ _request_firmware(const struct firmware
if (opt_flags & FW_OPT_NOWAIT) {
timeout = usermodehelper_read_lock_wait(timeout);
if (!timeout) {
diff --git a/debian/patches/bugfix/all/firmware_class-return-specific-errors-from-file-read.patch b/debian/patches/bugfix/all/firmware_class-return-specific-errors-from-file-read.patch
deleted file mode 100644
index 46a3fe5..0000000
--- a/debian/patches/bugfix/all/firmware_class-return-specific-errors-from-file-read.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sat, 14 Dec 2013 17:14:39 +0000
-Subject: firmware_class: Return specific errors from file read
-Forwarded: no
-
-Currently several failure cases are not distinguished and are
-incorrectly reported as -EINVAL or -ENOENT.
-
-Change fw_file_size() to return an error code on failure and
-adjust fw_read_file_contents() and fw_get_filesystem_firmware()
-
-Change _request_firmware() to return the error code from
-fw_get_filesystem_firmware() if CONFIG_FW_LOADER_USER_HELPER is not
-enabled. (If it is enabled and also fails, unfortunately we can't
-tell why.)
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
---- a/drivers/base/firmware_class.c
-+++ b/drivers/base/firmware_class.c
-@@ -298,7 +298,7 @@ static int fw_read_file_contents(struct
- int rc;
-
- if (!S_ISREG(file_inode(file)->i_mode))
-- return -EINVAL;
-+ return -ENOTTY;
- size = i_size_read(file_inode(file));
- if (size <= 0)
- return -EINVAL;
-@@ -307,7 +307,7 @@ static int fw_read_file_contents(struct
- return -ENOMEM;
- rc = kernel_read(file, 0, buf, size);
- if (rc != size) {
-- if (rc > 0)
-+ if (rc >= 0)
- rc = -EIO;
- goto fail;
- }
-@@ -348,8 +348,10 @@ static int fw_get_filesystem_firmware(st
- }
-
- file = filp_open(path, O_RDONLY, 0);
-- if (IS_ERR(file))
-+ if (IS_ERR(file)) {
-+ rc = PTR_ERR(file);
- continue;
-+ }
- rc = fw_read_file_contents(file, buf);
- fput(file);
- if (rc)
-@@ -994,13 +996,6 @@ static void kill_requests_without_uevent
- #endif
-
- #else /* CONFIG_FW_LOADER_USER_HELPER */
--static inline int
--fw_load_from_user_helper(struct firmware *firmware, const char *name,
-- struct device *device, unsigned int opt_flags,
-- long timeout)
--{
-- return -ENOENT;
--}
-
- /* No abort during direct loading */
- #define is_fw_load_aborted(buf) false
-@@ -1152,6 +1147,7 @@ _request_firmware(const struct firmware
- }
-
- ret = fw_get_filesystem_firmware(device, fw->priv);
-+#ifdef CONFIG_FW_LOADER_USER_HELPER
- if (ret) {
- if (!(opt_flags & FW_OPT_NO_WARN))
- dev_warn(device,
-@@ -1163,6 +1159,7 @@ _request_firmware(const struct firmware
- opt_flags, timeout);
- }
- }
-+#endif
-
- if (!ret)
- ret = assign_firmware_buf(fw, device, opt_flags);
diff --git a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
index 29151d1..86b8e33 100644
--- a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
+++ b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
@@ -13,9 +13,9 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
fs/cifs/link.c | 2 ++
fs/cifs/smb2transport.c | 2 ++
fs/cifs/smbencrypt.c | 2 ++
+ fs/crypto/keyinfo.c | 2 ++
fs/ext4/crypto_key.c | 2 ++
fs/ext4/super.c | 2 ++
- fs/f2fs/crypto_key.c | 2 ++
fs/f2fs/super.c | 2 ++
fs/jbd2/journal.c | 2 ++
fs/nfsd/nfs4recover.c | 2 ++
@@ -39,7 +39,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+MODULE_SOFTDEP("pre: crypto-crc32c");
--- a/fs/cifs/cifsencrypt.c
+++ b/fs/cifs/cifsencrypt.c
-@@ -865,3 +865,5 @@ cifs_crypto_shash_release(struct TCP_Ser
+@@ -875,3 +875,5 @@ cifs_crypto_shash_release(struct TCP_Ser
kfree(server->secmech.sdescmd5);
server->secmech.sdescmd5 = NULL;
}
@@ -63,14 +63,14 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+MODULE_SOFTDEP("pre: crypto-aes crypto-cmac crypto-hmac crypto-sha256");
--- a/fs/cifs/smbencrypt.c
+++ b/fs/cifs/smbencrypt.c
-@@ -247,3 +247,5 @@ SMBNTencrypt(unsigned char *passwd, unsi
+@@ -259,3 +259,5 @@ SMBNTencrypt(unsigned char *passwd, unsi
rc = E_P24(p21, c8, p24);
return rc;
}
+
+MODULE_SOFTDEP("pre: crypto-des crypto-ecb crypto-md4");
---- a/fs/ext4/crypto_key.c
-+++ b/fs/ext4/crypto_key.c
+--- a/fs/crypto/keyinfo.c
++++ b/fs/crypto/keyinfo.c
@@ -10,6 +10,7 @@
#include <keys/encrypted-type.h>
@@ -79,7 +79,23 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
#include <linux/random.h>
#include <linux/scatterlist.h>
#include <uapi/linux/keyctl.h>
-@@ -274,3 +275,5 @@ int ext4_has_encryption_key(struct inode
+@@ -270,3 +271,5 @@ int fscrypt_get_encryption_info(struct i
+ return 0;
+ }
+ EXPORT_SYMBOL(fscrypt_get_encryption_info);
++
++MODULE_SOFTDEP("pre: crypto-aes crypto-ecb");
+--- a/fs/ext4/crypto_key.c
++++ b/fs/ext4/crypto_key.c
+@@ -11,6 +11,7 @@
+ #include <crypto/skcipher.h>
+ #include <keys/encrypted-type.h>
+ #include <keys/user-type.h>
++#include <linux/module.h>
+ #include <linux/random.h>
+ #include <linux/scatterlist.h>
+ #include <uapi/linux/keyctl.h>
+@@ -272,3 +273,5 @@ int ext4_has_encryption_key(struct inode
return (ei->i_crypt_info != NULL);
}
@@ -87,7 +103,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+MODULE_SOFTDEP("pre: crypto-aes crypto-ecb");
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
-@@ -5404,6 +5404,8 @@ static void __exit ext4_exit_fs(void)
+@@ -5438,6 +5438,8 @@ static void __exit ext4_exit_fs(void)
ext4_exit_es();
}
@@ -96,25 +112,9 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
MODULE_DESCRIPTION("Fourth Extended Filesystem");
MODULE_LICENSE("GPL");
---- a/fs/f2fs/crypto_key.c
-+++ b/fs/f2fs/crypto_key.c
-@@ -11,6 +11,7 @@
- */
- #include <keys/encrypted-type.h>
- #include <keys/user-type.h>
-+#include <linux/module.h>
- #include <linux/random.h>
- #include <linux/scatterlist.h>
- #include <uapi/linux/keyctl.h>
-@@ -252,3 +253,5 @@ int f2fs_has_encryption_key(struct inode
-
- return (fi->i_crypt_info != NULL);
- }
-+
-+MODULE_SOFTDEP("pre: crypto-aes crypto-ecb");
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
-@@ -1640,6 +1640,8 @@ static void __exit exit_f2fs_fs(void)
+@@ -1736,6 +1736,8 @@ static void __exit exit_f2fs_fs(void)
f2fs_destroy_trace_ios();
}
@@ -125,7 +125,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
-@@ -2693,6 +2693,8 @@ static void __exit journal_exit(void)
+@@ -2715,6 +2715,8 @@ static void __exit journal_exit(void)
jbd2_journal_destroy_caches();
}
@@ -136,7 +136,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
module_exit(journal_exit);
--- a/fs/nfsd/nfs4recover.c
+++ b/fs/nfsd/nfs4recover.c
-@@ -1553,3 +1553,5 @@ unregister_cld_notifier(void)
+@@ -1560,3 +1560,5 @@ unregister_cld_notifier(void)
{
rpc_pipefs_notifier_unregister(&nfsd4_cld_block);
}
diff --git a/debian/patches/bugfix/all/ipv4-don-t-do-expensive-useless-work-during-inetdev-.patch b/debian/patches/bugfix/all/ipv4-don-t-do-expensive-useless-work-during-inetdev-.patch
deleted file mode 100644
index 581301c..0000000
--- a/debian/patches/bugfix/all/ipv4-don-t-do-expensive-useless-work-during-inetdev-.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From: "David S. Miller" <davem at davemloft.net>
-Date: Sun, 13 Mar 2016 23:28:00 -0400
-Subject: ipv4: Don't do expensive useless work during inetdev destroy.
-Origin: https://git.kernel.org/linus/fbd40ea0180a2d328c5adc61414dc8bab9335ce2
-
-When an inetdev is destroyed, every address assigned to the interface
-is removed. And in this scenerio we do two pointless things which can
-be very expensive if the number of assigned interfaces is large:
-
-1) Address promotion. We are deleting all addresses, so there is no
- point in doing this.
-
-2) A full nf conntrack table purge for every address. We only need to
- do this once, as is already caught by the existing
- masq_dev_notifier so masq_inet_event() can skip this.
-
-Reported-by: Solar Designer <solar at openwall.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
-Tested-by: Cyrill Gorcunov <gorcunov at openvz.org>
----
- net/ipv4/devinet.c | 4 ++++
- net/ipv4/fib_frontend.c | 4 ++++
- net/ipv4/netfilter/nf_nat_masquerade_ipv4.c | 12 ++++++++++--
- 3 files changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
-index 65e76a48382c..e333bc86bd39 100644
---- a/net/ipv4/devinet.c
-+++ b/net/ipv4/devinet.c
-@@ -334,6 +334,9 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
-
- ASSERT_RTNL();
-
-+ if (in_dev->dead)
-+ goto no_promotions;
-+
- /* 1. Deleting primary ifaddr forces deletion all secondaries
- * unless alias promotion is set
- **/
-@@ -380,6 +383,7 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
- fib_del_ifaddr(ifa, ifa1);
- }
-
-+no_promotions:
- /* 2. Unlink it */
-
- *ifap = ifa1->ifa_next;
-diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
-index 473447593060..21add552e56a 100644
---- a/net/ipv4/fib_frontend.c
-+++ b/net/ipv4/fib_frontend.c
-@@ -922,6 +922,9 @@ void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim)
- subnet = 1;
- }
-
-+ if (in_dev->dead)
-+ goto no_promotions;
-+
- /* Deletion is more complicated than add.
- * We should take care of not to delete too much :-)
- *
-@@ -997,6 +1000,7 @@ void fib_del_ifaddr(struct in_ifaddr *ifa, struct in_ifaddr *iprim)
- }
- }
-
-+no_promotions:
- if (!(ok & BRD_OK))
- fib_magic(RTM_DELROUTE, RTN_BROADCAST, ifa->ifa_broadcast, 32, prim);
- if (subnet && ifa->ifa_prefixlen < 31) {
-diff --git a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-index c6eb42100e9a..ea91058b5f6f 100644
---- a/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-+++ b/net/ipv4/netfilter/nf_nat_masquerade_ipv4.c
-@@ -108,10 +108,18 @@ static int masq_inet_event(struct notifier_block *this,
- unsigned long event,
- void *ptr)
- {
-- struct net_device *dev = ((struct in_ifaddr *)ptr)->ifa_dev->dev;
-+ struct in_device *idev = ((struct in_ifaddr *)ptr)->ifa_dev;
- struct netdev_notifier_info info;
-
-- netdev_notifier_info_init(&info, dev);
-+ /* The masq_dev_notifier will catch the case of the device going
-+ * down. So if the inetdev is dead and being destroyed we have
-+ * no work to do. Otherwise this is an individual address removal
-+ * and we have to perform the flush.
-+ */
-+ if (idev->dead)
-+ return NOTIFY_DONE;
-+
-+ netdev_notifier_info_init(&info, idev->dev);
- return masq_device_event(this, event, &info);
- }
-
diff --git a/debian/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch b/debian/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch
index 5427902..65ca43e 100644
--- a/debian/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch
+++ b/debian/patches/bugfix/all/kbuild-fix-recordmcount-dependency.patch
@@ -8,7 +8,7 @@ sources.
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
-@@ -240,6 +240,11 @@ cmd_record_mcount = \
+@@ -241,6 +241,11 @@ cmd_record_mcount = \
fi;
endif
@@ -17,6 +17,6 @@ sources.
+recordmcount_source :=
+endif
+
- define rule_cc_o_c
- $(call echo-cmd,checksrc) $(cmd_checksrc) \
- $(call echo-cmd,cc_o_c) $(cmd_cc_o_c); \
+ ifdef CONFIG_STACK_VALIDATION
+ ifneq ($(SKIP_STACK_VALIDATION),1)
+
diff --git a/debian/patches/bugfix/all/lockdep-add-missing-macros.patch b/debian/patches/bugfix/all/lockdep-add-missing-macros.patch
index e45a3e7..42f0589 100644
--- a/debian/patches/bugfix/all/lockdep-add-missing-macros.patch
+++ b/debian/patches/bugfix/all/lockdep-add-missing-macros.patch
@@ -17,18 +17,8 @@ doesn't have substitutes for.
#define container_of(ptr, type, member) ({ \
--- a/tools/lib/lockdep/uinclude/linux/list.h
+++ b/tools/lib/lockdep/uinclude/linux/list.h
-@@ -1 +1,4 @@
+@@ -1,1 +1,4 @@
#include "../../../include/linux/list.h"
+#define hlist_add_head_rcu hlist_add_head
+#define hlist_del_rcu hlist_del
+#define hlist_for_each_entry_rcu hlist_for_each_entry
---- a/tools/lib/lockdep/uinclude/linux/compiler.h
-+++ b/tools/lib/lockdep/uinclude/linux/compiler.h
-@@ -3,6 +3,7 @@
-
- #define __used __attribute__((__unused__))
- #define unlikely
-+#define READ_ONCE(x) (x)
- #define WRITE_ONCE(x, val) x=(val)
- #define RCU_INIT_POINTER(p, v) p=(v)
-
diff --git a/debian/patches/bugfix/all/lockdep-fix-oot-build.patch b/debian/patches/bugfix/all/lockdep-fix-oot-build.patch
index c1b82e2..2d2efd2 100644
--- a/debian/patches/bugfix/all/lockdep-fix-oot-build.patch
+++ b/debian/patches/bugfix/all/lockdep-fix-oot-build.patch
@@ -10,8 +10,8 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
do_compile_shared_library = \
($(print_shared_lib_compile) \
-- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$@"';$(shell ln -s $@ liblockdep.so))
-+ $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$(@F)"';$(shell ln -s $(@F) $(@D)/liblockdep.so))
+- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$@"';$(shell ln -sf $@ liblockdep.so))
++ $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$(@F)"';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
do_build_static_lib = \
($(print_static_lib_build) \
diff --git a/debian/patches/bugfix/all/lockdep-fix-soname.patch b/debian/patches/bugfix/all/lockdep-fix-soname.patch
index a3ac90b..a65b198 100644
--- a/debian/patches/bugfix/all/lockdep-fix-soname.patch
+++ b/debian/patches/bugfix/all/lockdep-fix-soname.patch
@@ -6,12 +6,12 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
--- a/tools/lib/lockdep/Makefile
+++ b/tools/lib/lockdep/Makefile
-@@ -98,7 +98,7 @@ build := -f $(srctree)/tools/build/Makef
+@@ -100,7 +100,7 @@ include $(srctree)/tools/build/Makefile.
do_compile_shared_library = \
($(print_shared_lib_compile) \
-- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$(@F)"';$(shell ln -s $(@F) $(@D)/liblockdep.so))
-+ $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -s $(@F) $(@D)/liblockdep.so))
+- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='"$(@F)"';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
++ $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
do_build_static_lib = \
($(print_static_lib_build) \
diff --git a/debian/patches/bugfix/all/misc-bmp085-Enable-building-as-a-module.patch b/debian/patches/bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
deleted file mode 100644
index c3c5a62..0000000
--- a/debian/patches/bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Mon, 24 Jun 2013 05:28:00 +0100
-Subject: misc/bmp085: Enable building as a module
-Forwarded: http://thread.gmane.org/gmane.linux.kernel/1514281
-
-Commit 985087dbcb02 'misc: add support for bmp18x chips to the bmp085
-driver' changed the BMP085 config symbol to a boolean. I see no
-reason why the shared code cannot be built as a module, so change it
-back to tristate.
-
-Cc: Eric Andersson <eric.andersson at unixphere.com>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- drivers/misc/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index c002d86..7a68184 100644
---- a/drivers/misc/Kconfig
-+++ b/drivers/misc/Kconfig
-@@ -451,7 +451,7 @@ config ARM_CHARLCD
- still useful.
-
- config BMP085
-- bool
-+ tristate
- depends on SYSFS
-
- config BMP085_I2C
diff --git a/debian/patches/bugfix/all/mm-zone_device-depends-on-sparsemem_vmemmap.patch b/debian/patches/bugfix/all/mm-zone_device-depends-on-sparsemem_vmemmap.patch
deleted file mode 100644
index 8747653..0000000
--- a/debian/patches/bugfix/all/mm-zone_device-depends-on-sparsemem_vmemmap.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Wed, 16 Mar 2016 14:16:28 +1100
-Subject: mm: ZONE_DEVICE depends on SPARSEMEM_VMEMMAP
-Origin: http://article.gmane.org/gmane.linux.kernel.mm/147702
-
-The primary use case for devm_memremap_pages() is to allocate an memmap
-array from persistent memory. That capabilty requires vmem_altmap which
-requires SPARSEMEM_VMEMMAP.
-
-Also, without SPARSEMEM_VMEMMAP the addition of ZONE_DEVICE expands
-ZONES_WIDTH and triggers the:
-
-"Unfortunate NUMA and NUMA Balancing config, growing page-frame for
-last_cpupid."
-
-...warning in mm/memory.c. SPARSEMEM_VMEMMAP=n && ZONE_DEVICE=y is not
-a configuration we should worry about supporting.
-
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Reported-by: Vlastimil Babka <vbabka at suse.cz>
-Acked-by: Vlastimil Babka <vbabka at suse.cz>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
----
- mm/Kconfig | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/mm/Kconfig
-+++ b/mm/Kconfig
-@@ -656,6 +656,7 @@ config ZONE_DEVICE
- depends on !ZONE_DMA
- depends on MEMORY_HOTPLUG
- depends on MEMORY_HOTREMOVE
-+ depends on SPARSEMEM_VMEMMAP
- depends on X86_64 #arch_add_memory() comprehends device memory
-
- help
diff --git a/debian/patches/bugfix/all/netfilter-x_tables-check-for-size-overflow.patch b/debian/patches/bugfix/all/netfilter-x_tables-check-for-size-overflow.patch
deleted file mode 100644
index 914a9f0..0000000
--- a/debian/patches/bugfix/all/netfilter-x_tables-check-for-size-overflow.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Florian Westphal <fw at strlen.de>
-Date: Thu, 10 Mar 2016 01:56:23 +0100
-Subject: netfilter: x_tables: check for size overflow
-Origin: https://git.kernel.org/cgit/linux/kernel/git/pablo/nf-next.git/commit?id=d157bd761585605b7882935ffb86286919f62ea1
-
-Ben Hawkes says:
- integer overflow in xt_alloc_table_info, which on 32-bit systems can
- lead to small structure allocation and a copy_from_user based heap
- corruption.
-
-Reported-by: Ben Hawkes <hawkes at google.com>
-Signed-off-by: Florian Westphal <fw at strlen.de>
-Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
----
- net/netfilter/x_tables.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/net/netfilter/x_tables.c
-+++ b/net/netfilter/x_tables.c
-@@ -658,6 +658,9 @@ struct xt_table_info *xt_alloc_table_inf
- struct xt_table_info *info = NULL;
- size_t sz = sizeof(*info) + size;
-
-+ if (sz < sizeof(*info))
-+ return NULL;
-+
- /* Pedantry: prevent them from hitting BUG() in vmalloc.c --RR */
- if ((SMP_ALIGN(size) >> PAGE_SHIFT) + 2 > totalram_pages)
- return NULL;
diff --git a/debian/patches/bugfix/all/netfilter-x_tables-make-sure-e-next_offset-covers-re.patch b/debian/patches/bugfix/all/netfilter-x_tables-make-sure-e-next_offset-covers-re.patch
deleted file mode 100644
index 5b29f88..0000000
--- a/debian/patches/bugfix/all/netfilter-x_tables-make-sure-e-next_offset-covers-re.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From: Florian Westphal <fw at strlen.de>
-Date: Tue, 22 Mar 2016 18:02:50 +0100
-Subject: [2/2] netfilter: x_tables: make sure e->next_offset covers remaining
- blob size
-Origin: https://git.kernel.org/linus/6e94e0cfb0887e4013b3b930fa6ab1fe6bb6ba91
-
-Otherwise this function may read data beyond the ruleset blob.
-
-Signed-off-by: Florian Westphal <fw at strlen.de>
-Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
----
- net/ipv4/netfilter/arp_tables.c | 6 ++++--
- net/ipv4/netfilter/ip_tables.c | 6 ++++--
- net/ipv6/netfilter/ip6_tables.c | 6 ++++--
- 3 files changed, 12 insertions(+), 6 deletions(-)
-
-diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
-index 830bbe8ec13d..51d4fe56b807 100644
---- a/net/ipv4/netfilter/arp_tables.c
-+++ b/net/ipv4/netfilter/arp_tables.c
-@@ -573,7 +573,8 @@ static inline int check_entry_size_and_hooks(struct arpt_entry *e,
- int err;
-
- if ((unsigned long)e % __alignof__(struct arpt_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct arpt_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct arpt_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p\n", e);
- return -EINVAL;
- }
-@@ -1232,7 +1233,8 @@ check_compat_entry_size_and_hooks(struct compat_arpt_entry *e,
-
- duprintf("check_compat_entry_size_and_hooks %p\n", e);
- if ((unsigned long)e % __alignof__(struct compat_arpt_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct compat_arpt_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct compat_arpt_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p, limit = %p\n", e, limit);
- return -EINVAL;
- }
-diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
-index 1d72a3c4a7e7..fb7694e6663e 100644
---- a/net/ipv4/netfilter/ip_tables.c
-+++ b/net/ipv4/netfilter/ip_tables.c
-@@ -738,7 +738,8 @@ check_entry_size_and_hooks(struct ipt_entry *e,
- int err;
-
- if ((unsigned long)e % __alignof__(struct ipt_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct ipt_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct ipt_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p\n", e);
- return -EINVAL;
- }
-@@ -1492,7 +1493,8 @@ check_compat_entry_size_and_hooks(struct compat_ipt_entry *e,
-
- duprintf("check_compat_entry_size_and_hooks %p\n", e);
- if ((unsigned long)e % __alignof__(struct compat_ipt_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct compat_ipt_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct compat_ipt_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p, limit = %p\n", e, limit);
- return -EINVAL;
- }
-diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
-index 26a5ad1cc4fd..b248528f2a17 100644
---- a/net/ipv6/netfilter/ip6_tables.c
-+++ b/net/ipv6/netfilter/ip6_tables.c
-@@ -750,7 +750,8 @@ check_entry_size_and_hooks(struct ip6t_entry *e,
- int err;
-
- if ((unsigned long)e % __alignof__(struct ip6t_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct ip6t_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct ip6t_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p\n", e);
- return -EINVAL;
- }
-@@ -1504,7 +1505,8 @@ check_compat_entry_size_and_hooks(struct compat_ip6t_entry *e,
-
- duprintf("check_compat_entry_size_and_hooks %p\n", e);
- if ((unsigned long)e % __alignof__(struct compat_ip6t_entry) != 0 ||
-- (unsigned char *)e + sizeof(struct compat_ip6t_entry) >= limit) {
-+ (unsigned char *)e + sizeof(struct compat_ip6t_entry) >= limit ||
-+ (unsigned char *)e + e->next_offset > limit) {
- duprintf("Bad offset %p, limit = %p\n", e, limit);
- return -EINVAL;
- }
diff --git a/debian/patches/bugfix/all/netfilter-x_tables-validate-e-target_offset-early.patch b/debian/patches/bugfix/all/netfilter-x_tables-validate-e-target_offset-early.patch
deleted file mode 100644
index 6db0739..0000000
--- a/debian/patches/bugfix/all/netfilter-x_tables-validate-e-target_offset-early.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From: Florian Westphal <fw at strlen.de>
-Date: Tue, 22 Mar 2016 18:02:49 +0100
-Subject: [1/2] netfilter: x_tables: validate e->target_offset early
-Origin: https://git.kernel.org/linus/bdf533de6968e9686df777dc178486f600c6e617
-
-We should check that e->target_offset is sane before
-mark_source_chains gets called since it will fetch the target entry
-for loop detection.
-
-Signed-off-by: Florian Westphal <fw at strlen.de>
-Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
----
- net/ipv4/netfilter/arp_tables.c | 17 ++++++++---------
- net/ipv4/netfilter/ip_tables.c | 17 ++++++++---------
- net/ipv6/netfilter/ip6_tables.c | 17 ++++++++---------
- 3 files changed, 24 insertions(+), 27 deletions(-)
-
-diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
-index bf081927e06b..830bbe8ec13d 100644
---- a/net/ipv4/netfilter/arp_tables.c
-+++ b/net/ipv4/netfilter/arp_tables.c
-@@ -474,14 +474,12 @@ next:
- return 1;
- }
-
--static inline int check_entry(const struct arpt_entry *e, const char *name)
-+static inline int check_entry(const struct arpt_entry *e)
- {
- const struct xt_entry_target *t;
-
-- if (!arp_checkentry(&e->arp)) {
-- duprintf("arp_tables: arp check failed %p %s.\n", e, name);
-+ if (!arp_checkentry(&e->arp))
- return -EINVAL;
-- }
-
- if (e->target_offset + sizeof(struct xt_entry_target) > e->next_offset)
- return -EINVAL;
-@@ -522,10 +520,6 @@ find_check_entry(struct arpt_entry *e, const char *name, unsigned int size)
- struct xt_target *target;
- int ret;
-
-- ret = check_entry(e, name);
-- if (ret)
-- return ret;
--
- e->counters.pcnt = xt_percpu_counter_alloc();
- if (IS_ERR_VALUE(e->counters.pcnt))
- return -ENOMEM;
-@@ -576,6 +570,7 @@ static inline int check_entry_size_and_hooks(struct arpt_entry *e,
- unsigned int valid_hooks)
- {
- unsigned int h;
-+ int err;
-
- if ((unsigned long)e % __alignof__(struct arpt_entry) != 0 ||
- (unsigned char *)e + sizeof(struct arpt_entry) >= limit) {
-@@ -590,6 +585,10 @@ static inline int check_entry_size_and_hooks(struct arpt_entry *e,
- return -EINVAL;
- }
-
-+ err = check_entry(e);
-+ if (err)
-+ return err;
-+
- /* Check hooks & underflows */
- for (h = 0; h < NF_ARP_NUMHOOKS; h++) {
- if (!(valid_hooks & (1 << h)))
-@@ -1246,7 +1245,7 @@ check_compat_entry_size_and_hooks(struct compat_arpt_entry *e,
- }
-
- /* For purposes of check_entry casting the compat entry is fine */
-- ret = check_entry((struct arpt_entry *)e, name);
-+ ret = check_entry((struct arpt_entry *)e);
- if (ret)
- return ret;
-
-diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
-index e53f8d6f326d..1d72a3c4a7e7 100644
---- a/net/ipv4/netfilter/ip_tables.c
-+++ b/net/ipv4/netfilter/ip_tables.c
-@@ -569,14 +569,12 @@ static void cleanup_match(struct xt_entry_match *m, struct net *net)
- }
-
- static int
--check_entry(const struct ipt_entry *e, const char *name)
-+check_entry(const struct ipt_entry *e)
- {
- const struct xt_entry_target *t;
-
-- if (!ip_checkentry(&e->ip)) {
-- duprintf("ip check failed %p %s.\n", e, name);
-+ if (!ip_checkentry(&e->ip))
- return -EINVAL;
-- }
-
- if (e->target_offset + sizeof(struct xt_entry_target) >
- e->next_offset)
-@@ -666,10 +664,6 @@ find_check_entry(struct ipt_entry *e, struct net *net, const char *name,
- struct xt_mtchk_param mtpar;
- struct xt_entry_match *ematch;
-
-- ret = check_entry(e, name);
-- if (ret)
-- return ret;
--
- e->counters.pcnt = xt_percpu_counter_alloc();
- if (IS_ERR_VALUE(e->counters.pcnt))
- return -ENOMEM;
-@@ -741,6 +735,7 @@ check_entry_size_and_hooks(struct ipt_entry *e,
- unsigned int valid_hooks)
- {
- unsigned int h;
-+ int err;
-
- if ((unsigned long)e % __alignof__(struct ipt_entry) != 0 ||
- (unsigned char *)e + sizeof(struct ipt_entry) >= limit) {
-@@ -755,6 +750,10 @@ check_entry_size_and_hooks(struct ipt_entry *e,
- return -EINVAL;
- }
-
-+ err = check_entry(e);
-+ if (err)
-+ return err;
-+
- /* Check hooks & underflows */
- for (h = 0; h < NF_INET_NUMHOOKS; h++) {
- if (!(valid_hooks & (1 << h)))
-@@ -1506,7 +1505,7 @@ check_compat_entry_size_and_hooks(struct compat_ipt_entry *e,
- }
-
- /* For purposes of check_entry casting the compat entry is fine */
-- ret = check_entry((struct ipt_entry *)e, name);
-+ ret = check_entry((struct ipt_entry *)e);
- if (ret)
- return ret;
-
-diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
-index 84f9baf7aee8..26a5ad1cc4fd 100644
---- a/net/ipv6/netfilter/ip6_tables.c
-+++ b/net/ipv6/netfilter/ip6_tables.c
-@@ -581,14 +581,12 @@ static void cleanup_match(struct xt_entry_match *m, struct net *net)
- }
-
- static int
--check_entry(const struct ip6t_entry *e, const char *name)
-+check_entry(const struct ip6t_entry *e)
- {
- const struct xt_entry_target *t;
-
-- if (!ip6_checkentry(&e->ipv6)) {
-- duprintf("ip_tables: ip check failed %p %s.\n", e, name);
-+ if (!ip6_checkentry(&e->ipv6))
- return -EINVAL;
-- }
-
- if (e->target_offset + sizeof(struct xt_entry_target) >
- e->next_offset)
-@@ -679,10 +677,6 @@ find_check_entry(struct ip6t_entry *e, struct net *net, const char *name,
- struct xt_mtchk_param mtpar;
- struct xt_entry_match *ematch;
-
-- ret = check_entry(e, name);
-- if (ret)
-- return ret;
--
- e->counters.pcnt = xt_percpu_counter_alloc();
- if (IS_ERR_VALUE(e->counters.pcnt))
- return -ENOMEM;
-@@ -753,6 +747,7 @@ check_entry_size_and_hooks(struct ip6t_entry *e,
- unsigned int valid_hooks)
- {
- unsigned int h;
-+ int err;
-
- if ((unsigned long)e % __alignof__(struct ip6t_entry) != 0 ||
- (unsigned char *)e + sizeof(struct ip6t_entry) >= limit) {
-@@ -767,6 +762,10 @@ check_entry_size_and_hooks(struct ip6t_entry *e,
- return -EINVAL;
- }
-
-+ err = check_entry(e);
-+ if (err)
-+ return err;
-+
- /* Check hooks & underflows */
- for (h = 0; h < NF_INET_NUMHOOKS; h++) {
- if (!(valid_hooks & (1 << h)))
-@@ -1518,7 +1517,7 @@ check_compat_entry_size_and_hooks(struct compat_ip6t_entry *e,
- }
-
- /* For purposes of check_entry casting the compat entry is fine */
-- ret = check_entry((struct ip6t_entry *)e, name);
-+ ret = check_entry((struct ip6t_entry *)e);
- if (ret)
- return ret;
-
diff --git a/debian/patches/bugfix/all/perf-fix-misleadingly-indented-assignment-whitespace.patch b/debian/patches/bugfix/all/perf-fix-misleadingly-indented-assignment-whitespace.patch
deleted file mode 100644
index a9bf089..0000000
--- a/debian/patches/bugfix/all/perf-fix-misleadingly-indented-assignment-whitespace.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Markus Trippelsdorf <markus at trippelsdorf.de>
-Subject: Fix misleadingly indented assignment (whitespace)
-Date: Mon, 14 Dec 2015 16:44:40 +0100
-Origin: http://article.gmane.org/gmane.linux.kernel/2108042
-
-Fix misleadingly indented assignment.
-This is just a simple whitespace fix.
-
-The issue was pointed out by gcc-6's -Wmisleading-indentation.
-
-Acked-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Markus Trippelsdorf <markus at trippelsdorf.de>
----
-diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
-index e4b173dec4b9..c900b664ab8f 100644
---- a/tools/perf/util/pmu.c
-+++ b/tools/perf/util/pmu.c
-@@ -153,7 +153,7 @@ static int perf_pmu__parse_unit(struct perf_pmu_alias *alias, char *dir, char *n
- if (fd == -1)
- return -1;
-
-- sret = read(fd, alias->unit, UNIT_MAX_LEN);
-+ sret = read(fd, alias->unit, UNIT_MAX_LEN);
- if (sret < 0)
- goto error;
-
diff --git a/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch b/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
index 65a4005..4f5f678 100644
--- a/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
+++ b/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
@@ -26,7 +26,7 @@ missing, except for the pre-R600 case.
---
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -42,6 +42,8 @@
+@@ -44,6 +44,8 @@
#include "drm_crtc_helper.h"
#include "radeon_kfd.h"
@@ -35,7 +35,7 @@ missing, except for the pre-R600 case.
/*
* KMS wrapper.
-@@ -293,6 +295,29 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
+@@ -295,6 +297,29 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
static struct drm_driver kms_driver;
@@ -65,9 +65,9 @@ missing, except for the pre-R600 case.
static int radeon_kick_out_firmware_fb(struct pci_dev *pdev)
{
struct apertures_struct *ap;
-@@ -319,6 +344,12 @@ static int radeon_pci_probe(struct pci_d
- {
- int ret;
+@@ -338,6 +363,12 @@ static int radeon_pci_probe(struct pci_d
+ !vga_switcheroo_handler_flags())
+ return -EPROBE_DEFER;
+ if ((ent->driver_data & RADEON_FAMILY_MASK) >= CHIP_R600 &&
+ !radeon_firmware_installed()) {
diff --git a/debian/patches/bugfix/all/scripts-fix-x.509-pem-support-in-sign-file.patch b/debian/patches/bugfix/all/scripts-fix-x.509-pem-support-in-sign-file.patch
index 36990d8..3f235d1 100644
--- a/debian/patches/bugfix/all/scripts-fix-x.509-pem-support-in-sign-file.patch
+++ b/debian/patches/bugfix/all/scripts-fix-x.509-pem-support-in-sign-file.patch
@@ -17,7 +17,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
--- a/scripts/sign-file.c
+++ b/scripts/sign-file.c
-@@ -229,10 +229,14 @@ int main(int argc, char **argv)
+@@ -174,7 +174,13 @@ static X509 *read_x509(const char *x509_
ERR(!b, "%s", x509_name);
x509 = d2i_X509_bio(b, NULL); /* Binary encoded X.509 */
if (!x509) {
@@ -29,9 +29,6 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+ */
+ drain_openssl_errors();
+ ERR(BIO_reset(b) != 0, "%s", x509_name);
- x509 = PEM_read_bio_X509(b, NULL, NULL, NULL); /* PEM encoded X.509 */
-- if (x509)
-- drain_openssl_errors();
- }
- BIO_free(b);
- ERR(!x509, "%s", x509_name);
+ x509 = PEM_read_bio_X509(b, NULL, NULL,
+ NULL); /* PEM encoded X.509 */
+ if (x509)
diff --git a/debian/patches/bugfix/all/tools-lib-lockdep-use-ldflags.patch b/debian/patches/bugfix/all/tools-lib-lockdep-use-ldflags.patch
index c4ebd3e..7ab950f 100644
--- a/debian/patches/bugfix/all/tools-lib-lockdep-use-ldflags.patch
+++ b/debian/patches/bugfix/all/tools-lib-lockdep-use-ldflags.patch
@@ -6,12 +6,12 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
--- a/tools/lib/lockdep/Makefile
+++ b/tools/lib/lockdep/Makefile
-@@ -98,7 +98,7 @@ build := -f $(srctree)/tools/build/Makef
+@@ -100,7 +100,7 @@ include $(srctree)/tools/build/Makefile.
do_compile_shared_library = \
($(print_shared_lib_compile) \
-- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -s $(@F) $(@D)/liblockdep.so))
-+ $(CC) $(LDFLAGS) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -s $(@F) $(@D)/liblockdep.so))
+- $(CC) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
++ $(CC) $(LDFLAGS) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
do_build_static_lib = \
($(print_static_lib_build) \
diff --git a/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch b/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch
deleted file mode 100644
index cc527fa..0000000
--- a/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From: Srinivas Pandruvada <srinivas.pandruvada at linux.intel.com>
-Date: Wed, 23 Mar 2016 21:07:39 -0700
-Subject: ACPI / processor: Request native thermal interrupt handling via _OSC
-Origin: https://git.kernel.org/linus/a21211672c9a1d730a39aa65d4a5b3414700adfb
-Bug-Debian: https://bugs.debian.org/817016
-
-There are several reports of freeze on enabling HWP (Hardware PStates)
-feature on Skylake-based systems by the Intel P-states driver. The root
-cause is identified as the HWP interrupts causing BIOS code to freeze.
-
-HWP interrupts use the thermal LVT which can be handled by Linux
-natively, but on the affected Skylake-based systems SMM will respond
-to it by default. This is a problem for several reasons:
- - On the affected systems the SMM thermal LVT handler is broken (it
- will crash when invoked) and a BIOS update is necessary to fix it.
- - With thermal interrupt handled in SMM we lose all of the reporting
- features of the arch/x86/kernel/cpu/mcheck/therm_throt driver.
- - Some thermal drivers like x86-package-temp depend on the thermal
- threshold interrupts signaled via the thermal LVT.
- - The HWP interrupts are useful for debugging and tuning
- performance (if the kernel can handle them).
-The native handling of thermal interrupts needs to be enabled
-because of that.
-
-This requires some way to tell SMM that the OS can handle thermal
-interrupts. That can be done by using _OSC/_PDC in processor
-scope very early during ACPI initialization.
-
-The meaning of _OSC/_PDC bit 12 in processor scope is whether or
-not the OS supports native handling of interrupts for Collaborative
-Processor Performance Control (CPPC) notifications. Since on
-HWP-capable systems CPPC is a firmware interface to HWP, setting
-this bit effectively tells the firmware that the OS will handle
-thermal interrupts natively going forward.
-
-For details on _OSC/_PDC refer to:
-http://www.intel.com/content/www/us/en/standards/processor-vendor-specific-acpi-specification.html
-
-To implement the _OSC/_PDC handshake as described, introduce a new
-function, acpi_early_processor_osc(), that walks the ACPI
-namespace looking for ACPI processor objects and invokes _OSC for
-them with bit 12 in the capabilities buffer set and terminates the
-namespace walk on the first success.
-
-Also modify intel_thermal_interrupt() to clear HWP status bits in
-the HWP_STATUS MSR to acknowledge HWP interrupts (which prevents
-them from firing continuously).
-
-Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada at linux.intel.com>
-[ rjw: Subject & changelog, function rename ]
-Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki at intel.com>
----
- arch/x86/kernel/cpu/mcheck/therm_throt.c | 3 ++
- drivers/acpi/acpi_processor.c | 52 ++++++++++++++++++++++++++++++++
- drivers/acpi/bus.c | 3 ++
- drivers/acpi/internal.h | 6 ++++
- 4 files changed, 64 insertions(+)
-
-diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
-index 2c5aaf8c2e2f..05538582a809 100644
---- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
-+++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
-@@ -385,6 +385,9 @@ static void intel_thermal_interrupt(void)
- {
- __u64 msr_val;
-
-+ if (static_cpu_has(X86_FEATURE_HWP))
-+ wrmsrl_safe(MSR_HWP_STATUS, 0);
-+
- rdmsrl(MSR_IA32_THERM_STATUS, msr_val);
-
- /* Check for violation of core thermal thresholds*/
-diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
-index b5e54f2da53d..0d92d0f915e9 100644
---- a/drivers/acpi/acpi_processor.c
-+++ b/drivers/acpi/acpi_processor.c
-@@ -491,6 +491,58 @@ static void acpi_processor_remove(struct acpi_device *device)
- }
- #endif /* CONFIG_ACPI_HOTPLUG_CPU */
-
-+#ifdef CONFIG_X86
-+static bool acpi_hwp_native_thermal_lvt_set;
-+static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle,
-+ u32 lvl,
-+ void *context,
-+ void **rv)
-+{
-+ u8 sb_uuid_str[] = "4077A616-290C-47BE-9EBD-D87058713953";
-+ u32 capbuf[2];
-+ struct acpi_osc_context osc_context = {
-+ .uuid_str = sb_uuid_str,
-+ .rev = 1,
-+ .cap.length = 8,
-+ .cap.pointer = capbuf,
-+ };
-+
-+ if (acpi_hwp_native_thermal_lvt_set)
-+ return AE_CTRL_TERMINATE;
-+
-+ capbuf[0] = 0x0000;
-+ capbuf[1] = 0x1000; /* set bit 12 */
-+
-+ if (ACPI_SUCCESS(acpi_run_osc(handle, &osc_context))) {
-+ if (osc_context.ret.pointer && osc_context.ret.length > 1) {
-+ u32 *capbuf_ret = osc_context.ret.pointer;
-+
-+ if (capbuf_ret[1] & 0x1000) {
-+ acpi_handle_info(handle,
-+ "_OSC native thermal LVT Acked\n");
-+ acpi_hwp_native_thermal_lvt_set = true;
-+ }
-+ }
-+ kfree(osc_context.ret.pointer);
-+ }
-+
-+ return AE_OK;
-+}
-+
-+void __init acpi_early_processor_osc(void)
-+{
-+ if (boot_cpu_has(X86_FEATURE_HWP)) {
-+ acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
-+ ACPI_UINT32_MAX,
-+ acpi_hwp_native_thermal_lvt_osc,
-+ NULL, NULL, NULL);
-+ acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID,
-+ acpi_hwp_native_thermal_lvt_osc,
-+ NULL, NULL);
-+ }
-+}
-+#endif
-+
- /*
- * The following ACPI IDs are known to be suitable for representing as
- * processor devices.
-diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
-index 891c42d1cd65..f9081b791b81 100644
---- a/drivers/acpi/bus.c
-+++ b/drivers/acpi/bus.c
-@@ -1005,6 +1005,9 @@ static int __init acpi_bus_init(void)
- goto error1;
- }
-
-+ /* Set capability bits for _OSC under processor scope */
-+ acpi_early_processor_osc();
-+
- /*
- * _OSC method may exist in module level code,
- * so it must be run after ACPI_FULL_INITIALIZATION
-diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
-index 1e6833a5cd44..6f41c73f82bb 100644
---- a/drivers/acpi/internal.h
-+++ b/drivers/acpi/internal.h
-@@ -138,6 +138,12 @@ void acpi_early_processor_set_pdc(void);
- static inline void acpi_early_processor_set_pdc(void) {}
- #endif
-
-+#ifdef CONFIG_X86
-+void acpi_early_processor_osc(void);
-+#else
-+static inline void acpi_early_processor_osc(void) {}
-+#endif
-+
- /* --------------------------------------------------------------------------
- Embedded Controller
- -------------------------------------------------------------------------- */
diff --git a/debian/patches/bugfix/x86/vmxnet3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch b/debian/patches/bugfix/x86/vmxnet3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch
deleted file mode 100644
index dba2581..0000000
--- a/debian/patches/bugfix/x86/vmxnet3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Arnd Bergmann <arnd at arndb.de>
-Date: Mon, 14 Mar 2016 15:53:57 +0100
-Subject: vmxnet3: fix lock imbalance in vmxnet3_tq_xmit()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/davem/net.git/commit?id=efc21d95067f658a20e51e24c4c86d68f23b7f7f
-
-A recent bug fix rearranged the code in vmxnet3_tq_xmit() in a
-way that left the error handling for oversized headers unlock
-a lock that had not been taken yet. Gcc warns about the incorrect
-use of the 'flags' variable because of that:
-
-drivers/net/vmxnet3/vmxnet3_drv.c: In function 'vmxnet3_tq_xmit.constprop':
-include/linux/spinlock.h:246:3: error: 'flags' may be used uninitialized in this function [-Werror=maybe-uninitialized]
-
-This changes the error handling path to 'goto' the end of the function
-beyond the lock/unlock pair.
-
-Signed-off-by: Arnd Bergmann <arnd at arndb.de>
-Fixes: cec05562fb1d ("vmxnet3: avoid calling pskb_may_pull with interrupts disabled")
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/vmxnet3/vmxnet3_drv.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c
-index fc895d0e85d9..b2348f67b00a 100644
---- a/drivers/net/vmxnet3/vmxnet3_drv.c
-+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
-@@ -1022,14 +1022,16 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq,
- if (ctx.mss) {
- if (unlikely(ctx.eth_ip_hdr_size + ctx.l4_hdr_size >
- VMXNET3_MAX_TX_BUF_SIZE)) {
-- goto hdr_too_big;
-+ tq->stats.drop_oversized_hdr++;
-+ goto drop_pkt;
- }
- } else {
- if (skb->ip_summed == CHECKSUM_PARTIAL) {
- if (unlikely(ctx.eth_ip_hdr_size +
- skb->csum_offset >
- VMXNET3_MAX_CSUM_OFFSET)) {
-- goto hdr_too_big;
-+ tq->stats.drop_oversized_hdr++;
-+ goto drop_pkt;
- }
- }
- }
-@@ -1123,8 +1125,6 @@ vmxnet3_tq_xmit(struct sk_buff *skb, struct vmxnet3_tx_queue *tq,
-
- return NETDEV_TX_OK;
-
--hdr_too_big:
-- tq->stats.drop_oversized_hdr++;
- unlock_drop_pkt:
- spin_unlock_irqrestore(&tq->tx_lock, flags);
- drop_pkt:
diff --git a/debian/patches/bugfix/x86/x86-efi-bgrt-fix-kernel-panic-when-mapping-bgrt-data.patch b/debian/patches/bugfix/x86/x86-efi-bgrt-fix-kernel-panic-when-mapping-bgrt-data.patch
deleted file mode 100644
index bcba95b..0000000
--- a/debian/patches/bugfix/x86/x86-efi-bgrt-fix-kernel-panic-when-mapping-bgrt-data.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From: Sai Praneeth <sai.praneeth.prakhya at intel.com>
-Date: Wed, 9 Dec 2015 15:41:08 -0800
-Subject: x86/efi-bgrt: Fix kernel panic when mapping BGRT data
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=50a0cb565246f20d59cdb161778531e4b19d35ac
-Bug-Debian: https://bugs.debian.org/815125
-
-Starting with this commit 35eb8b81edd4 ("x86/efi: Build our own page
-table structures") efi regions have a separate page directory called
-"efi_pgd". In order to access any efi region we have to first shift %cr3
-to this page table. In the bgrt code we are trying to copy bgrt_header
-and image, but these regions fall under "EFI_BOOT_SERVICES_DATA"
-and to access these regions we have to shift %cr3 to efi_pgd and not
-doing so will cause page fault as shown below.
-
-[ 0.251599] Last level dTLB entries: 4KB 64, 2MB 0, 4MB 0, 1GB 4
-[ 0.259126] Freeing SMP alternatives memory: 32K (ffffffff8230e000 - ffffffff82316000)
-[ 0.271803] BUG: unable to handle kernel paging request at fffffffefce35002
-[ 0.279740] IP: [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
-[ 0.286383] PGD 300f067 PUD 0
-[ 0.289879] Oops: 0000 [#1] SMP
-[ 0.293566] Modules linked in:
-[ 0.297039] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.0-rc1-eywa-eywa-built-in-47041+ #2
-[ 0.306619] Hardware name: Intel Corporation Skylake Client platform/Skylake Y LPDDR3 RVP3, BIOS SKLSE2R1.R00.B104.B01.1511110114 11/11/2015
-[ 0.320925] task: ffffffff820134c0 ti: ffffffff82000000 task.ti: ffffffff82000000
-[ 0.329420] RIP: 0010:[<ffffffff821bca49>] [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
-[ 0.338821] RSP: 0000:ffffffff82003f18 EFLAGS: 00010246
-[ 0.344852] RAX: fffffffefce35000 RBX: fffffffefce35000 RCX: fffffffefce2b000
-[ 0.352952] RDX: 000000008a82b000 RSI: ffffffff8235bb80 RDI: 000000008a835000
-[ 0.361050] RBP: ffffffff82003f30 R08: 000000008a865000 R09: ffffffffff202850
-[ 0.369149] R10: ffffffff811ad62f R11: 0000000000000000 R12: 0000000000000000
-[ 0.377248] R13: ffff88016dbaea40 R14: ffffffff822622c0 R15: ffffffff82003fb0
-[ 0.385348] FS: 0000000000000000(0000) GS:ffff88016d800000(0000) knlGS:0000000000000000
-[ 0.394533] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-[ 0.401054] CR2: fffffffefce35002 CR3: 000000000300c000 CR4: 00000000003406f0
-[ 0.409153] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
-[ 0.417252] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
-[ 0.425350] Stack:
-[ 0.427638] ffffffffffffffff ffffffff82256900 ffff88016dbaea40 ffffffff82003f40
-[ 0.436086] ffffffff821bbce0 ffffffff82003f88 ffffffff8219c0c2 0000000000000000
-[ 0.444533] ffffffff8219ba4a ffffffff822622c0 0000000000083000 00000000ffffffff
-[ 0.452978] Call Trace:
-[ 0.455763] [<ffffffff821bbce0>] efi_late_init+0x9/0xb
-[ 0.461697] [<ffffffff8219c0c2>] start_kernel+0x463/0x47f
-[ 0.467928] [<ffffffff8219ba4a>] ? set_init_arg+0x55/0x55
-[ 0.474159] [<ffffffff8219b120>] ? early_idt_handler_array+0x120/0x120
-[ 0.481669] [<ffffffff8219b5ee>] x86_64_start_reservations+0x2a/0x2c
-[ 0.488982] [<ffffffff8219b72d>] x86_64_start_kernel+0x13d/0x14c
-[ 0.495897] Code: 00 41 b4 01 48 8b 78 28 e8 09 36 01 00 48 85 c0 48 89 c3 75 13 48 c7 c7 f8 ac d3 81 31 c0 e8 d7 3b fb fe e9 b5 00 00 00 45 84 e4 <44> 8b 6b 02 74 0d be 06 00 00 00 48 89 df e8 ae 34 0$
-[ 0.518151] RIP [<ffffffff821bca49>] efi_bgrt_init+0x144/0x1fd
-[ 0.524888] RSP <ffffffff82003f18>
-[ 0.528851] CR2: fffffffefce35002
-[ 0.532615] ---[ end trace 7b06521e6ebf2aea ]---
-[ 0.537852] Kernel panic - not syncing: Attempted to kill the idle task!
-
-As said above one way to fix this bug is to shift %cr3 to efi_pgd but we
-are not doing that way because it leaks inner details of how we switch
-to EFI page tables into a new call site and it also adds duplicate code.
-Instead, we remove the call to efi_lookup_mapped_addr() and always
-perform early_mem*() instead of early_io*() because we want to remap RAM
-regions and not I/O regions. We also delete efi_lookup_mapped_addr()
-because we are no longer using it.
-
-Signed-off-by: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Reported-by: Wendy Wang <wendy.wang at intel.com>
-Cc: Borislav Petkov <bp at suse.de>
-Cc: Josh Triplett <josh at joshtriplett.org>
-Cc: Ricardo Neri <ricardo.neri at intel.com>
-Cc: Ravi Shankar <ravi.v.shankar at intel.com>
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
----
- arch/x86/platform/efi/efi-bgrt.c | 39 ++++++++++++++-------------------------
- drivers/firmware/efi/efi.c | 32 --------------------------------
- 2 files changed, 14 insertions(+), 57 deletions(-)
-
---- a/arch/x86/platform/efi/efi-bgrt.c
-+++ b/arch/x86/platform/efi/efi-bgrt.c
-@@ -28,8 +28,7 @@ struct bmp_header {
- void __init efi_bgrt_init(void)
- {
- acpi_status status;
-- void __iomem *image;
-- bool ioremapped = false;
-+ void *image;
- struct bmp_header bmp_header;
-
- if (acpi_disabled)
-@@ -70,20 +69,14 @@ void __init efi_bgrt_init(void)
- return;
- }
-
-- image = efi_lookup_mapped_addr(bgrt_tab->image_address);
-+ image = early_memremap(bgrt_tab->image_address, sizeof(bmp_header));
- if (!image) {
-- image = early_ioremap(bgrt_tab->image_address,
-- sizeof(bmp_header));
-- ioremapped = true;
-- if (!image) {
-- pr_err("Ignoring BGRT: failed to map image header memory\n");
-- return;
-- }
-+ pr_err("Ignoring BGRT: failed to map image header memory\n");
-+ return;
- }
-
-- memcpy_fromio(&bmp_header, image, sizeof(bmp_header));
-- if (ioremapped)
-- early_iounmap(image, sizeof(bmp_header));
-+ memcpy(&bmp_header, image, sizeof(bmp_header));
-+ early_memunmap(image, sizeof(bmp_header));
- bgrt_image_size = bmp_header.size;
-
- bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN);
-@@ -93,18 +86,14 @@ void __init efi_bgrt_init(void)
- return;
- }
-
-- if (ioremapped) {
-- image = early_ioremap(bgrt_tab->image_address,
-- bmp_header.size);
-- if (!image) {
-- pr_err("Ignoring BGRT: failed to map image memory\n");
-- kfree(bgrt_image);
-- bgrt_image = NULL;
-- return;
-- }
-+ image = early_memremap(bgrt_tab->image_address, bmp_header.size);
-+ if (!image) {
-+ pr_err("Ignoring BGRT: failed to map image memory\n");
-+ kfree(bgrt_image);
-+ bgrt_image = NULL;
-+ return;
- }
-
-- memcpy_fromio(bgrt_image, image, bgrt_image_size);
-- if (ioremapped)
-- early_iounmap(image, bmp_header.size);
-+ memcpy(bgrt_image, image, bgrt_image_size);
-+ early_memunmap(image, bmp_header.size);
- }
---- a/drivers/firmware/efi/efi.c
-+++ b/drivers/firmware/efi/efi.c
-@@ -324,38 +324,6 @@ u64 __init efi_mem_desc_end(efi_memory_d
- return end;
- }
-
--/*
-- * We can't ioremap data in EFI boot services RAM, because we've already mapped
-- * it as RAM. So, look it up in the existing EFI memory map instead. Only
-- * callable after efi_enter_virtual_mode and before efi_free_boot_services.
-- */
--void __iomem *efi_lookup_mapped_addr(u64 phys_addr)
--{
-- struct efi_memory_map *map;
-- void *p;
-- map = efi.memmap;
-- if (!map)
-- return NULL;
-- if (WARN_ON(!map->map))
-- return NULL;
-- for (p = map->map; p < map->map_end; p += map->desc_size) {
-- efi_memory_desc_t *md = p;
-- u64 size = md->num_pages << EFI_PAGE_SHIFT;
-- u64 end = md->phys_addr + size;
-- if (!(md->attribute & EFI_MEMORY_RUNTIME) &&
-- md->type != EFI_BOOT_SERVICES_CODE &&
-- md->type != EFI_BOOT_SERVICES_DATA)
-- continue;
-- if (!md->virt_addr)
-- continue;
-- if (phys_addr >= md->phys_addr && phys_addr < end) {
-- phys_addr += md->virt_addr - md->phys_addr;
-- return (__force void __iomem *)(unsigned long)phys_addr;
-- }
-- }
-- return NULL;
--}
--
- static __initdata efi_config_table_type_t common_tables[] = {
- {ACPI_20_TABLE_GUID, "ACPI 2.0", &efi.acpi20},
- {ACPI_TABLE_GUID, "ACPI", &efi.acpi},
diff --git a/debian/patches/bugfix/x86/x86-efi-bgrt-replace-early_memremap-with-memremap.patch b/debian/patches/bugfix/x86/x86-efi-bgrt-replace-early_memremap-with-memremap.patch
deleted file mode 100644
index e695fd9..0000000
--- a/debian/patches/bugfix/x86/x86-efi-bgrt-replace-early_memremap-with-memremap.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Mon, 21 Dec 2015 14:12:52 +0000
-Subject: x86/efi-bgrt: Replace early_memremap() with memremap()
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=e2c90dd7e11e3025b46719a79fb4bb1e7a5cef9f
-Bug-Debian: https://bugs.debian.org/815125
-
-Môshe reported the following warning triggered on his machine since
-commit 50a0cb565246 ("x86/efi-bgrt: Fix kernel panic when mapping BGRT
-data"),
-
- [ 0.026936] ------------[ cut here ]------------
- [ 0.026941] WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:137 __early_ioremap+0x102/0x1bb()
- [ 0.026941] Modules linked in:
- [ 0.026944] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.4.0-rc1 #2
- [ 0.026945] Hardware name: Dell Inc. XPS 13 9343/09K8G1, BIOS A05 07/14/2015
- [ 0.026946] 0000000000000000 900f03d5a116524d ffffffff81c03e60 ffffffff813a3fff
- [ 0.026948] 0000000000000000 ffffffff81c03e98 ffffffff810a0852 00000000d7b76000
- [ 0.026949] 0000000000000000 0000000000000001 0000000000000001 000000000000017c
- [ 0.026951] Call Trace:
- [ 0.026955] [<ffffffff813a3fff>] dump_stack+0x44/0x55
- [ 0.026958] [<ffffffff810a0852>] warn_slowpath_common+0x82/0xc0
- [ 0.026959] [<ffffffff810a099a>] warn_slowpath_null+0x1a/0x20
- [ 0.026961] [<ffffffff81d8c395>] __early_ioremap+0x102/0x1bb
- [ 0.026962] [<ffffffff81d8c602>] early_memremap+0x13/0x15
- [ 0.026964] [<ffffffff81d78361>] efi_bgrt_init+0x162/0x1ad
- [ 0.026966] [<ffffffff81d778ec>] efi_late_init+0x9/0xb
- [ 0.026968] [<ffffffff81d58ff5>] start_kernel+0x46f/0x49f
- [ 0.026970] [<ffffffff81d58120>] ? early_idt_handler_array+0x120/0x120
- [ 0.026972] [<ffffffff81d58339>] x86_64_start_reservations+0x2a/0x2c
- [ 0.026974] [<ffffffff81d58485>] x86_64_start_kernel+0x14a/0x16d
- [ 0.026977] ---[ end trace f9b3812eb8e24c58 ]---
- [ 0.026978] efi_bgrt: Ignoring BGRT: failed to map image memory
-
-early_memremap() has an upper limit on the size of mapping it can
-handle which is ~200KB. Clearly the BGRT image on Môshe's machine is
-much larger than that.
-
-There's actually no reason to restrict ourselves to using the early_*
-version of memremap() - the ACPI BGRT driver is invoked late enough in
-boot that we can use the standard version, with the benefit that the
-late version allows mappings of arbitrary size.
-
-Reported-by: Môshe van der Sterre <me at moshe.nl>
-Tested-by: Môshe van der Sterre <me at moshe.nl>
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Cc: Josh Triplett <josh at joshtriplett.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Borislav Petkov <bp at suse.de>
-Link: http://lkml.kernel.org/r/1450707172-12561-1-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
----
- arch/x86/platform/efi/efi-bgrt.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
---- a/arch/x86/platform/efi/efi-bgrt.c
-+++ b/arch/x86/platform/efi/efi-bgrt.c
-@@ -69,14 +69,14 @@ void __init efi_bgrt_init(void)
- return;
- }
-
-- image = early_memremap(bgrt_tab->image_address, sizeof(bmp_header));
-+ image = memremap(bgrt_tab->image_address, sizeof(bmp_header), MEMREMAP_WB);
- if (!image) {
- pr_err("Ignoring BGRT: failed to map image header memory\n");
- return;
- }
-
- memcpy(&bmp_header, image, sizeof(bmp_header));
-- early_memunmap(image, sizeof(bmp_header));
-+ memunmap(image);
- bgrt_image_size = bmp_header.size;
-
- bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN);
-@@ -86,7 +86,7 @@ void __init efi_bgrt_init(void)
- return;
- }
-
-- image = early_memremap(bgrt_tab->image_address, bmp_header.size);
-+ image = memremap(bgrt_tab->image_address, bmp_header.size, MEMREMAP_WB);
- if (!image) {
- pr_err("Ignoring BGRT: failed to map image memory\n");
- kfree(bgrt_image);
-@@ -95,5 +95,5 @@ void __init efi_bgrt_init(void)
- }
-
- memcpy(bgrt_image, image, bgrt_image_size);
-- early_memunmap(image, bmp_header.size);
-+ memunmap(image);
- }
diff --git a/debian/patches/bugfix/x86/x86-efi-build-our-own-page-table-structures.patch b/debian/patches/bugfix/x86/x86-efi-build-our-own-page-table-structures.patch
deleted file mode 100644
index 2c61994..0000000
--- a/debian/patches/bugfix/x86/x86-efi-build-our-own-page-table-structures.patch
+++ /dev/null
@@ -1,319 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Fri, 27 Nov 2015 21:09:34 +0000
-Subject: [5/5] x86/efi: Build our own page table structures
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=67a9108ed4313b85a9c53406d80dc1ae3f8c3e36
-
-With commit e1a58320a38d ("x86/mm: Warn on W^X mappings") all
-users booting on 64-bit UEFI machines see the following warning,
-
- ------------[ cut here ]------------
- WARNING: CPU: 7 PID: 1 at arch/x86/mm/dump_pagetables.c:225 note_page+0x5dc/0x780()
- x86/mm: Found insecure W+X mapping at address ffff88000005f000/0xffff88000005f000
- ...
- x86/mm: Checked W+X mappings: FAILED, 165660 W+X pages found.
- ...
-
-This is caused by mapping EFI regions with RWX permissions.
-There isn't much we can do to restrict the permissions for these
-regions due to the way the firmware toolchains mix code and
-data, but we can at least isolate these mappings so that they do
-not appear in the regular kernel page tables.
-
-In commit d2f7cbe7b26a ("x86/efi: Runtime services virtual
-mapping") we started using 'trampoline_pgd' to map the EFI
-regions because there was an existing identity mapping there
-which we use during the SetVirtualAddressMap() call and for
-broken firmware that accesses those addresses.
-
-But 'trampoline_pgd' shares some PGD entries with
-'swapper_pg_dir' and does not provide the isolation we require.
-Notably the virtual address for __START_KERNEL_map and
-MODULES_START are mapped by the same PGD entry so we need to be
-more careful when copying changes over in
-efi_sync_low_kernel_mappings().
-
-This patch doesn't go the full mile, we still want to share some
-PGD entries with 'swapper_pg_dir'. Having completely separate
-page tables brings its own issues such as synchronising new
-mappings after memory hotplug and module loading. Sharing also
-keeps memory usage down.
-
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Reviewed-by: Borislav Petkov <bp at suse.de>
-Acked-by: Borislav Petkov <bp at suse.de>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Andy Lutomirski <luto at kernel.org>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Dave Jones <davej at codemonkey.org.uk>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Stephen Smalley <sds at tycho.nsa.gov>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: linux-efi at vger.kernel.org
-Link: http://lkml.kernel.org/r/1448658575-17029-6-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/include/asm/efi.h | 1 +
- arch/x86/platform/efi/efi.c | 39 ++++++-----------
- arch/x86/platform/efi/efi_32.c | 5 +++
- arch/x86/platform/efi/efi_64.c | 97 +++++++++++++++++++++++++++++++++++-------
- 4 files changed, 102 insertions(+), 40 deletions(-)
-
-diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
-index 347eeacb06a8..8fd9e637629a 100644
---- a/arch/x86/include/asm/efi.h
-+++ b/arch/x86/include/asm/efi.h
-@@ -136,6 +136,7 @@ extern void __init efi_memory_uc(u64 addr, unsigned long size);
- extern void __init efi_map_region(efi_memory_desc_t *md);
- extern void __init efi_map_region_fixed(efi_memory_desc_t *md);
- extern void efi_sync_low_kernel_mappings(void);
-+extern int __init efi_alloc_page_tables(void);
- extern int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages);
- extern void __init efi_cleanup_page_tables(unsigned long pa_memmap, unsigned num_pages);
- extern void __init old_map_region(efi_memory_desc_t *md);
-diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
-index ad285404ea7f..3c1f3cd7b2ba 100644
---- a/arch/x86/platform/efi/efi.c
-+++ b/arch/x86/platform/efi/efi.c
-@@ -869,7 +869,7 @@ static void __init kexec_enter_virtual_mode(void)
- * This function will switch the EFI runtime services to virtual mode.
- * Essentially, we look through the EFI memmap and map every region that
- * has the runtime attribute bit set in its memory descriptor into the
-- * ->trampoline_pgd page table using a top-down VA allocation scheme.
-+ * efi_pgd page table.
- *
- * The old method which used to update that memory descriptor with the
- * virtual address obtained from ioremap() is still supported when the
-@@ -879,8 +879,8 @@ static void __init kexec_enter_virtual_mode(void)
- *
- * The new method does a pagetable switch in a preemption-safe manner
- * so that we're in a different address space when calling a runtime
-- * function. For function arguments passing we do copy the PGDs of the
-- * kernel page table into ->trampoline_pgd prior to each call.
-+ * function. For function arguments passing we do copy the PUDs of the
-+ * kernel page table into efi_pgd prior to each call.
- *
- * Specially for kexec boot, efi runtime maps in previous kernel should
- * be passed in via setup_data. In that case runtime ranges will be mapped
-@@ -895,6 +895,12 @@ static void __init __efi_enter_virtual_mode(void)
-
- efi.systab = NULL;
-
-+ if (efi_alloc_page_tables()) {
-+ pr_err("Failed to allocate EFI page tables\n");
-+ clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
-+ return;
-+ }
-+
- efi_merge_regions();
- new_memmap = efi_map_regions(&count, &pg_shift);
- if (!new_memmap) {
-@@ -954,28 +960,11 @@ static void __init __efi_enter_virtual_mode(void)
- efi_runtime_mkexec();
-
- /*
-- * We mapped the descriptor array into the EFI pagetable above but we're
-- * not unmapping it here. Here's why:
-- *
-- * We're copying select PGDs from the kernel page table to the EFI page
-- * table and when we do so and make changes to those PGDs like unmapping
-- * stuff from them, those changes appear in the kernel page table and we
-- * go boom.
-- *
-- * From setup_real_mode():
-- *
-- * ...
-- * trampoline_pgd[0] = init_level4_pgt[pgd_index(__PAGE_OFFSET)].pgd;
-- *
-- * In this particular case, our allocation is in PGD 0 of the EFI page
-- * table but we've copied that PGD from PGD[272] of the EFI page table:
-- *
-- * pgd_index(__PAGE_OFFSET = 0xffff880000000000) = 272
-- *
-- * where the direct memory mapping in kernel space is.
-- *
-- * new_memmap's VA comes from that direct mapping and thus clearing it,
-- * it would get cleared in the kernel page table too.
-+ * We mapped the descriptor array into the EFI pagetable above
-+ * but we're not unmapping it here because if we're running in
-+ * EFI mixed mode we need all of memory to be accessible when
-+ * we pass parameters to the EFI runtime services in the
-+ * thunking code.
- *
- * efi_cleanup_page_tables(__pa(new_memmap), 1 << pg_shift);
- */
-diff --git a/arch/x86/platform/efi/efi_32.c b/arch/x86/platform/efi/efi_32.c
-index ed5b67338294..58d669bc8250 100644
---- a/arch/x86/platform/efi/efi_32.c
-+++ b/arch/x86/platform/efi/efi_32.c
-@@ -38,6 +38,11 @@
- * say 0 - 3G.
- */
-
-+int __init efi_alloc_page_tables(void)
-+{
-+ return 0;
-+}
-+
- void efi_sync_low_kernel_mappings(void) {}
- void __init efi_dump_pagetable(void) {}
- int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
-diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
-index b19cdac959b2..4897f518760f 100644
---- a/arch/x86/platform/efi/efi_64.c
-+++ b/arch/x86/platform/efi/efi_64.c
-@@ -40,6 +40,7 @@
- #include <asm/fixmap.h>
- #include <asm/realmode.h>
- #include <asm/time.h>
-+#include <asm/pgalloc.h>
-
- /*
- * We allocate runtime services regions bottom-up, starting from -4G, i.e.
-@@ -121,22 +122,92 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd)
- early_code_mapping_set_exec(0);
- }
-
-+static pgd_t *efi_pgd;
-+
-+/*
-+ * We need our own copy of the higher levels of the page tables
-+ * because we want to avoid inserting EFI region mappings (EFI_VA_END
-+ * to EFI_VA_START) into the standard kernel page tables. Everything
-+ * else can be shared, see efi_sync_low_kernel_mappings().
-+ */
-+int __init efi_alloc_page_tables(void)
-+{
-+ pgd_t *pgd;
-+ pud_t *pud;
-+ gfp_t gfp_mask;
-+
-+ if (efi_enabled(EFI_OLD_MEMMAP))
-+ return 0;
-+
-+ gfp_mask = GFP_KERNEL | __GFP_NOTRACK | __GFP_REPEAT | __GFP_ZERO;
-+ efi_pgd = (pgd_t *)__get_free_page(gfp_mask);
-+ if (!efi_pgd)
-+ return -ENOMEM;
-+
-+ pgd = efi_pgd + pgd_index(EFI_VA_END);
-+
-+ pud = pud_alloc_one(NULL, 0);
-+ if (!pud) {
-+ free_page((unsigned long)efi_pgd);
-+ return -ENOMEM;
-+ }
-+
-+ pgd_populate(NULL, pgd, pud);
-+
-+ return 0;
-+}
-+
- /*
- * Add low kernel mappings for passing arguments to EFI functions.
- */
- void efi_sync_low_kernel_mappings(void)
- {
-- unsigned num_pgds;
-- pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd);
-+ unsigned num_entries;
-+ pgd_t *pgd_k, *pgd_efi;
-+ pud_t *pud_k, *pud_efi;
-
- if (efi_enabled(EFI_OLD_MEMMAP))
- return;
-
-- num_pgds = pgd_index(MODULES_END - 1) - pgd_index(PAGE_OFFSET);
-+ /*
-+ * We can share all PGD entries apart from the one entry that
-+ * covers the EFI runtime mapping space.
-+ *
-+ * Make sure the EFI runtime region mappings are guaranteed to
-+ * only span a single PGD entry and that the entry also maps
-+ * other important kernel regions.
-+ */
-+ BUILD_BUG_ON(pgd_index(EFI_VA_END) != pgd_index(MODULES_END));
-+ BUILD_BUG_ON((EFI_VA_START & PGDIR_MASK) !=
-+ (EFI_VA_END & PGDIR_MASK));
-+
-+ pgd_efi = efi_pgd + pgd_index(PAGE_OFFSET);
-+ pgd_k = pgd_offset_k(PAGE_OFFSET);
-+
-+ num_entries = pgd_index(EFI_VA_END) - pgd_index(PAGE_OFFSET);
-+ memcpy(pgd_efi, pgd_k, sizeof(pgd_t) * num_entries);
-
-- memcpy(pgd + pgd_index(PAGE_OFFSET),
-- init_mm.pgd + pgd_index(PAGE_OFFSET),
-- sizeof(pgd_t) * num_pgds);
-+ /*
-+ * We share all the PUD entries apart from those that map the
-+ * EFI regions. Copy around them.
-+ */
-+ BUILD_BUG_ON((EFI_VA_START & ~PUD_MASK) != 0);
-+ BUILD_BUG_ON((EFI_VA_END & ~PUD_MASK) != 0);
-+
-+ pgd_efi = efi_pgd + pgd_index(EFI_VA_END);
-+ pud_efi = pud_offset(pgd_efi, 0);
-+
-+ pgd_k = pgd_offset_k(EFI_VA_END);
-+ pud_k = pud_offset(pgd_k, 0);
-+
-+ num_entries = pud_index(EFI_VA_END);
-+ memcpy(pud_efi, pud_k, sizeof(pud_t) * num_entries);
-+
-+ pud_efi = pud_offset(pgd_efi, EFI_VA_START);
-+ pud_k = pud_offset(pgd_k, EFI_VA_START);
-+
-+ num_entries = PTRS_PER_PUD - pud_index(EFI_VA_START);
-+ memcpy(pud_efi, pud_k, sizeof(pud_t) * num_entries);
- }
-
- int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
-@@ -150,8 +221,8 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- if (efi_enabled(EFI_OLD_MEMMAP))
- return 0;
-
-- efi_scratch.efi_pgt = (pgd_t *)(unsigned long)real_mode_header->trampoline_pgd;
-- pgd = __va(efi_scratch.efi_pgt);
-+ efi_scratch.efi_pgt = (pgd_t *)__pa(efi_pgd);
-+ pgd = efi_pgd;
-
- /*
- * It can happen that the physical address of new_memmap lands in memory
-@@ -216,16 +287,14 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
-
- void __init efi_cleanup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- {
-- pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd);
--
-- kernel_unmap_pages_in_pgd(pgd, pa_memmap, num_pages);
-+ kernel_unmap_pages_in_pgd(efi_pgd, pa_memmap, num_pages);
- }
-
- static void __init __map_region(efi_memory_desc_t *md, u64 va)
- {
-- pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd);
- unsigned long flags = 0;
- unsigned long pfn;
-+ pgd_t *pgd = efi_pgd;
-
- if (!(md->attribute & EFI_MEMORY_WB))
- flags |= _PAGE_PCD;
-@@ -334,9 +403,7 @@ void __init efi_runtime_mkexec(void)
- void __init efi_dump_pagetable(void)
- {
- #ifdef CONFIG_EFI_PGT_DUMP
-- pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd);
--
-- ptdump_walk_pgd_level(NULL, pgd);
-+ ptdump_walk_pgd_level(NULL, efi_pgd);
- #endif
- }
-
diff --git a/debian/patches/bugfix/x86/x86-efi-hoist-page-table-switching-code-into-efi_cal.patch b/debian/patches/bugfix/x86/x86-efi-hoist-page-table-switching-code-into-efi_cal.patch
deleted file mode 100644
index 4b3230e..0000000
--- a/debian/patches/bugfix/x86/x86-efi-hoist-page-table-switching-code-into-efi_cal.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Fri, 27 Nov 2015 21:09:33 +0000
-Subject: [4/5] x86/efi: Hoist page table switching code into efi_call_virt()
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=c9f2a9a65e4855b74d92cdad688f6ee4a1a323ff
-
-This change is a prerequisite for pending patches that switch to
-a dedicated EFI page table, instead of using 'trampoline_pgd'
-which shares PGD entries with 'swapper_pg_dir'. The pending
-patches make it impossible to dereference the runtime service
-function pointer without first switching %cr3.
-
-It's true that we now have duplicated switching code in
-efi_call_virt() and efi_call_phys_{prolog,epilog}() but we are
-sacrificing code duplication for a little more clarity and the
-ease of writing the page table switching code in C instead of
-asm.
-
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Reviewed-by: Borislav Petkov <bp at suse.de>
-Acked-by: Borislav Petkov <bp at suse.de>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Andy Lutomirski <luto at kernel.org>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Dave Jones <davej at codemonkey.org.uk>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Stephen Smalley <sds at tycho.nsa.gov>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: linux-efi at vger.kernel.org
-Link: http://lkml.kernel.org/r/1448658575-17029-5-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/include/asm/efi.h | 25 +++++++++++++++++++++
- arch/x86/platform/efi/efi_64.c | 24 ++++++++++-----------
- arch/x86/platform/efi/efi_stub_64.S | 43 -------------------------------------
- 3 files changed, 36 insertions(+), 56 deletions(-)
-
-diff --git a/arch/x86/include/asm/efi.h b/arch/x86/include/asm/efi.h
-index 0010c78c4998..347eeacb06a8 100644
---- a/arch/x86/include/asm/efi.h
-+++ b/arch/x86/include/asm/efi.h
-@@ -3,6 +3,7 @@
-
- #include <asm/fpu/api.h>
- #include <asm/pgtable.h>
-+#include <asm/tlb.h>
-
- /*
- * We map the EFI regions needed for runtime services non-contiguously,
-@@ -64,6 +65,17 @@ extern u64 asmlinkage efi_call(void *fp, ...);
-
- #define efi_call_phys(f, args...) efi_call((f), args)
-
-+/*
-+ * Scratch space used for switching the pagetable in the EFI stub
-+ */
-+struct efi_scratch {
-+ u64 r15;
-+ u64 prev_cr3;
-+ pgd_t *efi_pgt;
-+ bool use_pgd;
-+ u64 phys_stack;
-+} __packed;
-+
- #define efi_call_virt(f, ...) \
- ({ \
- efi_status_t __s; \
-@@ -71,7 +83,20 @@ extern u64 asmlinkage efi_call(void *fp, ...);
- efi_sync_low_kernel_mappings(); \
- preempt_disable(); \
- __kernel_fpu_begin(); \
-+ \
-+ if (efi_scratch.use_pgd) { \
-+ efi_scratch.prev_cr3 = read_cr3(); \
-+ write_cr3((unsigned long)efi_scratch.efi_pgt); \
-+ __flush_tlb_all(); \
-+ } \
-+ \
- __s = efi_call((void *)efi.systab->runtime->f, __VA_ARGS__); \
-+ \
-+ if (efi_scratch.use_pgd) { \
-+ write_cr3(efi_scratch.prev_cr3); \
-+ __flush_tlb_all(); \
-+ } \
-+ \
- __kernel_fpu_end(); \
- preempt_enable(); \
- __s; \
-diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
-index 102976dda8c4..b19cdac959b2 100644
---- a/arch/x86/platform/efi/efi_64.c
-+++ b/arch/x86/platform/efi/efi_64.c
-@@ -47,16 +47,7 @@
- */
- static u64 efi_va = EFI_VA_START;
-
--/*
-- * Scratch space used for switching the pagetable in the EFI stub
-- */
--struct efi_scratch {
-- u64 r15;
-- u64 prev_cr3;
-- pgd_t *efi_pgt;
-- bool use_pgd;
-- u64 phys_stack;
--} __packed;
-+struct efi_scratch efi_scratch;
-
- static void __init early_code_mapping_set_exec(int executable)
- {
-@@ -83,8 +74,11 @@ pgd_t * __init efi_call_phys_prolog(void)
- int pgd;
- int n_pgds;
-
-- if (!efi_enabled(EFI_OLD_MEMMAP))
-- return NULL;
-+ if (!efi_enabled(EFI_OLD_MEMMAP)) {
-+ save_pgd = (pgd_t *)read_cr3();
-+ write_cr3((unsigned long)efi_scratch.efi_pgt);
-+ goto out;
-+ }
-
- early_code_mapping_set_exec(1);
-
-@@ -96,6 +90,7 @@ pgd_t * __init efi_call_phys_prolog(void)
- vaddress = (unsigned long)__va(pgd * PGDIR_SIZE);
- set_pgd(pgd_offset_k(pgd * PGDIR_SIZE), *pgd_offset_k(vaddress));
- }
-+out:
- __flush_tlb_all();
-
- return save_pgd;
-@@ -109,8 +104,11 @@ void __init efi_call_phys_epilog(pgd_t *save_pgd)
- int pgd_idx;
- int nr_pgds;
-
-- if (!save_pgd)
-+ if (!efi_enabled(EFI_OLD_MEMMAP)) {
-+ write_cr3((unsigned long)save_pgd);
-+ __flush_tlb_all();
- return;
-+ }
-
- nr_pgds = DIV_ROUND_UP((max_pfn << PAGE_SHIFT) , PGDIR_SIZE);
-
-diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
-index 86d0f9e08dd9..32020cb8bb08 100644
---- a/arch/x86/platform/efi/efi_stub_64.S
-+++ b/arch/x86/platform/efi/efi_stub_64.S
-@@ -38,41 +38,6 @@
- mov %rsi, %cr0; \
- mov (%rsp), %rsp
-
-- /* stolen from gcc */
-- .macro FLUSH_TLB_ALL
-- movq %r15, efi_scratch(%rip)
-- movq %r14, efi_scratch+8(%rip)
-- movq %cr4, %r15
-- movq %r15, %r14
-- andb $0x7f, %r14b
-- movq %r14, %cr4
-- movq %r15, %cr4
-- movq efi_scratch+8(%rip), %r14
-- movq efi_scratch(%rip), %r15
-- .endm
--
-- .macro SWITCH_PGT
-- cmpb $0, efi_scratch+24(%rip)
-- je 1f
-- movq %r15, efi_scratch(%rip) # r15
-- # save previous CR3
-- movq %cr3, %r15
-- movq %r15, efi_scratch+8(%rip) # prev_cr3
-- movq efi_scratch+16(%rip), %r15 # EFI pgt
-- movq %r15, %cr3
-- 1:
-- .endm
--
-- .macro RESTORE_PGT
-- cmpb $0, efi_scratch+24(%rip)
-- je 2f
-- movq efi_scratch+8(%rip), %r15
-- movq %r15, %cr3
-- movq efi_scratch(%rip), %r15
-- FLUSH_TLB_ALL
-- 2:
-- .endm
--
- ENTRY(efi_call)
- SAVE_XMM
- mov (%rsp), %rax
-@@ -83,16 +48,8 @@ ENTRY(efi_call)
- mov %r8, %r9
- mov %rcx, %r8
- mov %rsi, %rcx
-- SWITCH_PGT
- call *%rdi
-- RESTORE_PGT
- addq $48, %rsp
- RESTORE_XMM
- ret
- ENDPROC(efi_call)
--
-- .data
--ENTRY(efi_scratch)
-- .fill 3,8,0
-- .byte 0
-- .quad 0
diff --git a/debian/patches/bugfix/x86/x86-efi-map-ram-into-the-identity-page-table-for-mix.patch b/debian/patches/bugfix/x86/x86-efi-map-ram-into-the-identity-page-table-for-mix.patch
deleted file mode 100644
index 8d2bddc..0000000
--- a/debian/patches/bugfix/x86/x86-efi-map-ram-into-the-identity-page-table-for-mix.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Fri, 27 Nov 2015 21:09:32 +0000
-Subject: [3/5] x86/efi: Map RAM into the identity page table for mixed mode
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=b61a76f8850d2979550abc42d7e09154ebb8d785
-
-We are relying on the pre-existing mappings in 'trampoline_pgd'
-when accessing function arguments in the EFI mixed mode thunking
-code.
-
-Instead let's map memory explicitly so that things will continue
-to work when we move to a separate page table in the future.
-
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Reviewed-by: Borislav Petkov <bp at suse.de>
-Acked-by: Borislav Petkov <bp at suse.de>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: linux-efi at vger.kernel.org
-Link: http://lkml.kernel.org/r/1448658575-17029-4-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/platform/efi/efi_64.c | 20 ++++++++++++++++++++
- 1 file changed, 20 insertions(+)
-
-diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
-index 5aa186db59e3..102976dda8c4 100644
---- a/arch/x86/platform/efi/efi_64.c
-+++ b/arch/x86/platform/efi/efi_64.c
-@@ -144,6 +144,7 @@ void efi_sync_low_kernel_mappings(void)
- int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- {
- unsigned long pfn, text;
-+ efi_memory_desc_t *md;
- struct page *page;
- unsigned npages;
- pgd_t *pgd;
-@@ -177,6 +178,25 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- if (!IS_ENABLED(CONFIG_EFI_MIXED))
- return 0;
-
-+ /*
-+ * Map all of RAM so that we can access arguments in the 1:1
-+ * mapping when making EFI runtime calls.
-+ */
-+ for_each_efi_memory_desc(&memmap, md) {
-+ if (md->type != EFI_CONVENTIONAL_MEMORY &&
-+ md->type != EFI_LOADER_DATA &&
-+ md->type != EFI_LOADER_CODE)
-+ continue;
-+
-+ pfn = md->phys_addr >> PAGE_SHIFT;
-+ npages = md->num_pages;
-+
-+ if (kernel_map_pages_in_pgd(pgd, pfn, md->phys_addr, npages, 0)) {
-+ pr_err("Failed to map 1:1 memory\n");
-+ return 1;
-+ }
-+ }
-+
- page = alloc_page(GFP_KERNEL|__GFP_DMA32);
- if (!page)
- panic("Unable to allocate EFI runtime stack < 4GB\n");
diff --git a/debian/patches/bugfix/x86/x86-efi-setup-separate-efi-page-tables-in-kexec-path.patch b/debian/patches/bugfix/x86/x86-efi-setup-separate-efi-page-tables-in-kexec-path.patch
deleted file mode 100644
index b95ee8f..0000000
--- a/debian/patches/bugfix/x86/x86-efi-setup-separate-efi-page-tables-in-kexec-path.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Thu, 21 Jan 2016 14:11:59 +0000
-Subject: x86/efi: Setup separate EFI page tables in kexec paths
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=753b11ef8e92a1c1bbe97f2a5ec14bdd1ef2e6fe
-
-The switch to using a new dedicated page table for EFI runtime
-calls in commit commit 67a9108ed431 ("x86/efi: Build our own
-page table structures") failed to take into account changes
-required for the kexec code paths, which are unfortunately
-duplicated in the EFI code.
-
-Call the allocation and setup functions in
-kexec_enter_virtual_mode() just like we do for
-__efi_enter_virtual_mode() to avoid hitting NULL-pointer
-dereferences when making EFI runtime calls.
-
-At the very least, the call to efi_setup_page_tables() should
-have existed for kexec before the following commit:
-
- 67a9108ed431 ("x86/efi: Build our own page table structures")
-
-Things just magically worked because we were actually using
-the kernel's page tables that contained the required mappings.
-
-Reported-by: Srikar Dronamraju <srikar at linux.vnet.ibm.com>
-Tested-by: Srikar Dronamraju <srikar at linux.vnet.ibm.com>
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Dave Young <dyoung at redhat.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Raghavendra K T <raghavendra.kt at linux.vnet.ibm.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Link: http://lkml.kernel.org/r/1453385519-11477-1-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/platform/efi/efi.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
-index 3c1f3cd7b2ba..bdd9477f937c 100644
---- a/arch/x86/platform/efi/efi.c
-+++ b/arch/x86/platform/efi/efi.c
-@@ -815,6 +815,7 @@ static void __init kexec_enter_virtual_mode(void)
- {
- #ifdef CONFIG_KEXEC_CORE
- efi_memory_desc_t *md;
-+ unsigned int num_pages;
- void *p;
-
- efi.systab = NULL;
-@@ -829,6 +830,12 @@ static void __init kexec_enter_virtual_mode(void)
- return;
- }
-
-+ if (efi_alloc_page_tables()) {
-+ pr_err("Failed to allocate EFI page tables\n");
-+ clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
-+ return;
-+ }
-+
- /*
- * Map efi regions which were passed via setup_data. The virt_addr is a
- * fixed addr which was used in first kernel of a kexec boot.
-@@ -843,6 +850,14 @@ static void __init kexec_enter_virtual_mode(void)
-
- BUG_ON(!efi.systab);
-
-+ num_pages = ALIGN(memmap.nr_map * memmap.desc_size, PAGE_SIZE);
-+ num_pages >>= PAGE_SHIFT;
-+
-+ if (efi_setup_page_tables(memmap.phys_map, num_pages)) {
-+ clear_bit(EFI_RUNTIME_SERVICES, &efi.flags);
-+ return;
-+ }
-+
- efi_sync_low_kernel_mappings();
-
- /*
diff --git a/debian/patches/bugfix/x86/x86-mm-32-enable-full-randomization-on-i386-and-x86_.patch b/debian/patches/bugfix/x86/x86-mm-32-enable-full-randomization-on-i386-and-x86_.patch
deleted file mode 100644
index 8520d38..0000000
--- a/debian/patches/bugfix/x86/x86-mm-32-enable-full-randomization-on-i386-and-x86_.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From: Hector Marco-Gisbert <hecmargi at upv.es>
-Date: Thu, 10 Mar 2016 20:51:00 +0100
-Subject: x86/mm/32: Enable full randomization on i386 and X86_32
-Origin: https://git.kernel.org/linus/8b8addf891de8a00e4d39fc32f93f7c5eb8feceb
-
-Currently on i386 and on X86_64 when emulating X86_32 in legacy mode, only
-the stack and the executable are randomized but not other mmapped files
-(libraries, vDSO, etc.). This patch enables randomization for the
-libraries, vDSO and mmap requests on i386 and in X86_32 in legacy mode.
-
-By default on i386 there are 8 bits for the randomization of the libraries,
-vDSO and mmaps which only uses 1MB of VA.
-
-This patch preserves the original randomness, using 1MB of VA out of 3GB or
-4GB. We think that 1MB out of 3GB is not a big cost for having the ASLR.
-
-The first obvious security benefit is that all objects are randomized (not
-only the stack and the executable) in legacy mode which highly increases
-the ASLR effectiveness, otherwise the attackers may use these
-non-randomized areas. But also sensitive setuid/setgid applications are
-more secure because currently, attackers can disable the randomization of
-these applications by setting the ulimit stack to "unlimited". This is a
-very old and widely known trick to disable the ASLR in i386 which has been
-allowed for too long.
-
-Another trick used to disable the ASLR was to set the ADDR_NO_RANDOMIZE
-personality flag, but fortunately this doesn't work on setuid/setgid
-applications because there is security checks which clear Security-relevant
-flags.
-
-This patch always randomizes the mmap_legacy_base address, removing the
-possibility to disable the ASLR by setting the stack to "unlimited".
-
-Signed-off-by: Hector Marco-Gisbert <hecmargi at upv.es>
-Acked-by: Ismael Ripoll Ripoll <iripoll at upv.es>
-Acked-by: Kees Cook <keescook at chromium.org>
-Acked-by: Arjan van de Ven <arjan at linux.intel.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: akpm at linux-foundation.org
-Cc: kees Cook <keescook at chromium.org>
-Link: http://lkml.kernel.org/r/1457639460-5242-1-git-send-email-hecmargi@upv.es
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/mm/mmap.c | 14 +-------------
- 1 file changed, 1 insertion(+), 13 deletions(-)
-
-diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
-index 96bd1e2bffaf..389939f74dd5 100644
---- a/arch/x86/mm/mmap.c
-+++ b/arch/x86/mm/mmap.c
-@@ -94,18 +94,6 @@ static unsigned long mmap_base(unsigned long rnd)
- }
-
- /*
-- * Bottom-up (legacy) layout on X86_32 did not support randomization, X86_64
-- * does, but not when emulating X86_32
-- */
--static unsigned long mmap_legacy_base(unsigned long rnd)
--{
-- if (mmap_is_ia32())
-- return TASK_UNMAPPED_BASE;
-- else
-- return TASK_UNMAPPED_BASE + rnd;
--}
--
--/*
- * This function, called very early during the creation of a new
- * process VM image, sets up which VM layout function to use:
- */
-@@ -116,7 +104,7 @@ void arch_pick_mmap_layout(struct mm_struct *mm)
- if (current->flags & PF_RANDOMIZE)
- random_factor = arch_mmap_rnd();
-
-- mm->mmap_legacy_base = mmap_legacy_base(random_factor);
-+ mm->mmap_legacy_base = TASK_UNMAPPED_BASE + random_factor;
-
- if (mmap_is_legacy()) {
- mm->mmap_base = mm->mmap_legacy_base;
diff --git a/debian/patches/bugfix/x86/x86-mm-page-align-the-_end-symbol-to-avoid-pfn-conve.patch b/debian/patches/bugfix/x86/x86-mm-page-align-the-_end-symbol-to-avoid-pfn-conve.patch
deleted file mode 100644
index 0fb24e0..0000000
--- a/debian/patches/bugfix/x86/x86-mm-page-align-the-_end-symbol-to-avoid-pfn-conve.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Fri, 27 Nov 2015 21:09:30 +0000
-Subject: [1/5] x86/mm: Page align the '_end' symbol to avoid pfn conversion
- bugs
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=21cdb6b568435738cc0b303b2b3b82742396310c
-
-Ingo noted that if we can guarantee _end is aligned to PAGE_SIZE
-we can automatically avoid bugs along the lines of,
-
- size = _end - _text >> PAGE_SHIFT
-
-which is missing a call to PFN_ALIGN(). The EFI mixed mode
-contains this bug, for example.
-
-_text is already aligned to PAGE_SIZE through the use of
-LOAD_PHYSICAL_ADDR, and the BSS and BRK sections are explicitly
-aligned in the linker script, so it makes sense to align _end to
-match.
-
-Reported-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Acked-by: Borislav Petkov <bp at suse.de>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Dave Hansen <dave.hansen at intel.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: linux-efi at vger.kernel.org
-Link: http://lkml.kernel.org/r/1448658575-17029-2-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/kernel/vmlinux.lds.S | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
-index 74e4bf11f562..4f1994257a18 100644
---- a/arch/x86/kernel/vmlinux.lds.S
-+++ b/arch/x86/kernel/vmlinux.lds.S
-@@ -325,6 +325,7 @@ SECTIONS
- __brk_limit = .;
- }
-
-+ . = ALIGN(PAGE_SIZE);
- _end = .;
-
- STABS_DEBUG
diff --git a/debian/patches/bugfix/x86/x86-mm-pat-ensure-cpa-pfn-only-contains-page-frame-n.patch b/debian/patches/bugfix/x86/x86-mm-pat-ensure-cpa-pfn-only-contains-page-frame-n.patch
deleted file mode 100644
index b7db9a3..0000000
--- a/debian/patches/bugfix/x86/x86-mm-pat-ensure-cpa-pfn-only-contains-page-frame-n.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Fri, 27 Nov 2015 21:09:31 +0000
-Subject: [2/5] x86/mm/pat: Ensure cpa->pfn only contains page frame numbers
-Origin: https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit?id=edc3b9129cecd0f0857112136f5b8b1bc1d45918
-
-The x86 pageattr code is confused about the data that is stored
-in cpa->pfn, sometimes it's treated as a page frame number,
-sometimes it's treated as an unshifted physical address, and in
-one place it's treated as a pte.
-
-The result of this is that the mapping functions do not map the
-intended physical address.
-
-This isn't a problem in practice because most of the addresses
-we're mapping in the EFI code paths are already mapped in
-'trampoline_pgd' and so the pageattr mapping functions don't
-actually do anything in this case. But when we move to using a
-separate page table for the EFI runtime this will be an issue.
-
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
-Reviewed-by: Borislav Petkov <bp at suse.de>
-Acked-by: Borislav Petkov <bp at suse.de>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Dave Hansen <dave.hansen at intel.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya at intel.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: linux-efi at vger.kernel.org
-Link: http://lkml.kernel.org/r/1448658575-17029-3-git-send-email-matt@codeblueprint.co.uk
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
----
- arch/x86/mm/pageattr.c | 17 ++++++-----------
- arch/x86/platform/efi/efi_64.c | 16 ++++++++++------
- 2 files changed, 16 insertions(+), 17 deletions(-)
-
-diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c
-index a3137a4feed1..c70e42014101 100644
---- a/arch/x86/mm/pageattr.c
-+++ b/arch/x86/mm/pageattr.c
-@@ -905,15 +905,10 @@ static void populate_pte(struct cpa_data *cpa,
- pte = pte_offset_kernel(pmd, start);
-
- while (num_pages-- && start < end) {
--
-- /* deal with the NX bit */
-- if (!(pgprot_val(pgprot) & _PAGE_NX))
-- cpa->pfn &= ~_PAGE_NX;
--
-- set_pte(pte, pfn_pte(cpa->pfn >> PAGE_SHIFT, pgprot));
-+ set_pte(pte, pfn_pte(cpa->pfn, pgprot));
-
- start += PAGE_SIZE;
-- cpa->pfn += PAGE_SIZE;
-+ cpa->pfn++;
- pte++;
- }
- }
-@@ -969,11 +964,11 @@ static int populate_pmd(struct cpa_data *cpa,
-
- pmd = pmd_offset(pud, start);
-
-- set_pmd(pmd, __pmd(cpa->pfn | _PAGE_PSE |
-+ set_pmd(pmd, __pmd(cpa->pfn << PAGE_SHIFT | _PAGE_PSE |
- massage_pgprot(pmd_pgprot)));
-
- start += PMD_SIZE;
-- cpa->pfn += PMD_SIZE;
-+ cpa->pfn += PMD_SIZE >> PAGE_SHIFT;
- cur_pages += PMD_SIZE >> PAGE_SHIFT;
- }
-
-@@ -1042,11 +1037,11 @@ static int populate_pud(struct cpa_data *cpa, unsigned long start, pgd_t *pgd,
- * Map everything starting from the Gb boundary, possibly with 1G pages
- */
- while (end - start >= PUD_SIZE) {
-- set_pud(pud, __pud(cpa->pfn | _PAGE_PSE |
-+ set_pud(pud, __pud(cpa->pfn << PAGE_SHIFT | _PAGE_PSE |
- massage_pgprot(pud_pgprot)));
-
- start += PUD_SIZE;
-- cpa->pfn += PUD_SIZE;
-+ cpa->pfn += PUD_SIZE >> PAGE_SHIFT;
- cur_pages += PUD_SIZE >> PAGE_SHIFT;
- pud++;
- }
-diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
-index a0ac0f9c307f..5aa186db59e3 100644
---- a/arch/x86/platform/efi/efi_64.c
-+++ b/arch/x86/platform/efi/efi_64.c
-@@ -143,7 +143,7 @@ void efi_sync_low_kernel_mappings(void)
-
- int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- {
-- unsigned long text;
-+ unsigned long pfn, text;
- struct page *page;
- unsigned npages;
- pgd_t *pgd;
-@@ -160,7 +160,8 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- * and ident-map those pages containing the map before calling
- * phys_efi_set_virtual_address_map().
- */
-- if (kernel_map_pages_in_pgd(pgd, pa_memmap, pa_memmap, num_pages, _PAGE_NX)) {
-+ pfn = pa_memmap >> PAGE_SHIFT;
-+ if (kernel_map_pages_in_pgd(pgd, pfn, pa_memmap, num_pages, _PAGE_NX)) {
- pr_err("Error ident-mapping new memmap (0x%lx)!\n", pa_memmap);
- return 1;
- }
-@@ -185,8 +186,9 @@ int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages)
-
- npages = (_end - _text) >> PAGE_SHIFT;
- text = __pa(_text);
-+ pfn = text >> PAGE_SHIFT;
-
-- if (kernel_map_pages_in_pgd(pgd, text >> PAGE_SHIFT, text, npages, 0)) {
-+ if (kernel_map_pages_in_pgd(pgd, pfn, text, npages, 0)) {
- pr_err("Failed to map kernel text 1:1\n");
- return 1;
- }
-@@ -204,12 +206,14 @@ void __init efi_cleanup_page_tables(unsigned long pa_memmap, unsigned num_pages)
- static void __init __map_region(efi_memory_desc_t *md, u64 va)
- {
- pgd_t *pgd = (pgd_t *)__va(real_mode_header->trampoline_pgd);
-- unsigned long pf = 0;
-+ unsigned long flags = 0;
-+ unsigned long pfn;
-
- if (!(md->attribute & EFI_MEMORY_WB))
-- pf |= _PAGE_PCD;
-+ flags |= _PAGE_PCD;
-
-- if (kernel_map_pages_in_pgd(pgd, md->phys_addr, va, md->num_pages, pf))
-+ pfn = md->phys_addr >> PAGE_SHIFT;
-+ if (kernel_map_pages_in_pgd(pgd, pfn, va, md->num_pages, flags))
- pr_warn("Error mapping PA 0x%llx -> VA 0x%llx!\n",
- md->phys_addr, va);
- }
diff --git a/debian/patches/bugfix/x86/x86-mm-pat-fix-boot-crash-when-1gb-pages-are-not-supported.patch b/debian/patches/bugfix/x86/x86-mm-pat-fix-boot-crash-when-1gb-pages-are-not-supported.patch
deleted file mode 100644
index bae631e..0000000
--- a/debian/patches/bugfix/x86/x86-mm-pat-fix-boot-crash-when-1gb-pages-are-not-supported.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From: Matt Fleming <matt at codeblueprint.co.uk>
-Date: Mon, 14 Mar 2016 10:33:01 +0000
-Subject: x86/mm/pat: Fix boot crash when 1GB pages are not supported by cpu
-Origin: http://mid.gmane.org/1457951581-27353-2-git-send-email-matt@codeblueprint.co.uk
-
-Scott reports that with the new separate EFI page tables he's seeing
-the following error on boot, caused by setting reserved bits in the
-page table structures (fault code is PF_RSVD | PF_PROT),
-
- swapper/0: Corrupted page table at address 17b102020
- PGD 17b0e5063 PUD 1400000e3
- Bad pagetable: 0009 [#1] SMP
-
-On first inspection the PUD is using a 1GB page size (_PAGE_PSE) and
-looks fine but that's only true if support for 1GB PUD pages
-("pdpe1gb") is present in the cpu.
-
-Scott's Intel Celeron N2820 does not have that feature and so the
-_PAGE_PSE bit is reserved. Fix this issue by making the 1GB mapping
-code in conditional on "cpu_has_gbpages".
-
-This issue didn't come up in the past because the required mapping for
-the faulting address (0x17b102020) will already have been setup by the
-kernel in early boot before we got to efi_map_regions(), but we no
-longer use the standard kernel page tables during EFI calls.
-
-Reported-by: Scott Ashcroft <scott.ashcroft at talk21.com>
-Tested-by: Scott Ashcroft <scott.ashcroft at talk21.com>
-Cc: Ard Biesheuvel <ard.biesheuvel at linaro.org>
-Cc: Ben Hutchings <ben at decadent.org.uk>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: "H. Peter Anvin" <hpa at zytor.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
-Cc: Matthew Garrett <mjg59 at srcf.ucam.org>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Raphael Hertzog <hertzog at debian.org>
-Cc: Roger Shimizu <rogershimizu at gmail.com>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: linux-efi at vger.kernel.org
-Signed-off-by: Matt Fleming <matt at codeblueprint.co.uk>
----
- arch/x86/mm/pageattr.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/x86/mm/pageattr.c
-+++ b/arch/x86/mm/pageattr.c
-@@ -1036,7 +1036,7 @@ static int populate_pud(struct cpa_data
- /*
- * Map everything starting from the Gb boundary, possibly with 1G pages
- */
-- while (end - start >= PUD_SIZE) {
-+ while (cpu_has_gbpages && end - start >= PUD_SIZE) {
- set_pud(pud, __pud(cpa->pfn << PAGE_SHIFT | _PAGE_PSE |
- massage_pgprot(pud_pgprot)));
-
diff --git a/debian/patches/debian/kernelvariables.patch b/debian/patches/debian/kernelvariables.patch
index a10a953..1b6ee17 100644
--- a/debian/patches/debian/kernelvariables.patch
+++ b/debian/patches/debian/kernelvariables.patch
@@ -14,7 +14,7 @@ use of $(ARCH) needs to be moved after this.
--- a/Makefile
+++ b/Makefile
-@@ -195,42 +195,6 @@ export KBUILD_BUILDHOST := $(SUBARCH)
+@@ -251,42 +251,6 @@ SUBARCH := $(shell uname -m | sed -e s/i
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
@@ -57,9 +57,9 @@ use of $(ARCH) needs to be moved after this.
KCONFIG_CONFIG ?= .config
export KCONFIG_CONFIG
-@@ -349,6 +313,44 @@ CFLAGS_KERNEL =
- AFLAGS_KERNEL =
+@@ -367,6 +331,44 @@ AFLAGS_KERNEL =
CFLAGS_GCOV = -fprofile-arcs -ftest-coverage
+ CFLAGS_KCOV = -fsanitize-coverage=trace-pc
+-include $(obj)/.kernelvariables
+
diff --git a/debian/patches/features/all/aufs4/aufs4-base.patch b/debian/patches/features/all/aufs4/aufs4-base.patch
index edf0933..432f9fb 100644
--- a/debian/patches/features/all/aufs4/aufs4-base.patch
+++ b/debian/patches/features/all/aufs4/aufs4-base.patch
@@ -1,18 +1,18 @@
From: J. R. Okajima <hooanon05 at yahoo.co.jp>
-Date: Wed Mar 16 17:10:20 2016 +0900
-Subject: aufs4.5 base patch
-Origin: https://github.com/sfjro/aufs4-standalone/tree/91164538a2f52c72b79a657ca3675cb55152413d
+Date: Wed Mar 23 20:35:31 2016 +0900
+Subject: aufs4.x-rcN base patch
+Origin: https://github.com/sfjro/aufs4-standalone/tree/751023bb49e09b10f7ab4c8742eb4cee234506f4
Bug-Debian: https://bugs.debian.org/541828
Patch headers added by debian/patches/features/all/aufs4/gen-patch
-aufs4.5 base patch
+aufs4.x-rcN base patch
diff --git a/MAINTAINERS b/MAINTAINERS
-index 6ee06ea..3147250 100644
+index f17159a..532681a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -2082,6 +2082,19 @@ F: include/linux/audit.h
+@@ -2120,6 +2120,19 @@ F: include/linux/audit.h
F: include/uapi/linux/audit.h
F: kernel/audit*
@@ -62,7 +62,7 @@ index 423f4ca..0b816b2 100644
static ssize_t loop_attr_show(struct device *dev, char *page,
diff --git a/fs/dcache.c b/fs/dcache.c
-index 2398f9f9..318c329 100644
+index 32ceae3..bc599d0 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1156,7 +1156,7 @@ enum d_walk_ret {
@@ -97,7 +97,7 @@ index 350a2c8..6f42279 100644
return error;
diff --git a/fs/read_write.c b/fs/read_write.c
-index dadf24e..c8b5b7a 100644
+index cf377cf..0ebcdc5 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -534,6 +534,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
@@ -130,10 +130,10 @@ index dadf24e..c8b5b7a 100644
{
mm_segment_t old_fs;
diff --git a/fs/splice.c b/fs/splice.c
-index 82bc0d6..93aee51 100644
+index 9947b5c..9037c8c 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -1108,8 +1108,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
+@@ -1111,8 +1111,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
/*
* Attempt to initiate a splice from pipe to file.
*/
@@ -144,7 +144,7 @@ index 82bc0d6..93aee51 100644
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
loff_t *, size_t, unsigned int);
-@@ -1125,9 +1125,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -1128,9 +1128,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
/*
* Attempt to initiate a splice from a file to a pipe.
*/
@@ -170,10 +170,10 @@ index f87d308..9a290b3 100644
static inline void fput_light(struct file *file, int fput_needed)
{
diff --git a/include/linux/fs.h b/include/linux/fs.h
-index ae68100..99fc2bd 100644
+index bb703ef..aff4f16 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
-@@ -1260,6 +1260,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1261,6 +1261,7 @@ extern void fasync_free(struct fasync_struct *);
/* can be called from interrupts */
extern void kill_fasync(struct fasync_struct **, int, int);
@@ -181,7 +181,7 @@ index ae68100..99fc2bd 100644
extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
extern void f_setown(struct file *filp, unsigned long arg, int force);
extern void f_delown(struct file *filp);
-@@ -1646,6 +1647,7 @@ struct file_operations {
+@@ -1642,6 +1643,7 @@ struct file_operations {
ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
int (*check_flags)(int);
@@ -189,7 +189,7 @@ index ae68100..99fc2bd 100644
int (*flock) (struct file *, int, struct file_lock *);
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
-@@ -1704,6 +1706,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
+@@ -1700,6 +1702,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
struct iovec *fast_pointer,
struct iovec **ret_pointer);
diff --git a/debian/patches/features/all/aufs4/aufs4-mmap.patch b/debian/patches/features/all/aufs4/aufs4-mmap.patch
index 6f91c6c..59718df 100644
--- a/debian/patches/features/all/aufs4/aufs4-mmap.patch
+++ b/debian/patches/features/all/aufs4/aufs4-mmap.patch
@@ -1,18 +1,16 @@
From: J. R. Okajima <hooanon05 at yahoo.co.jp>
-Date: Wed Mar 16 17:10:20 2016 +0900
-Subject: aufs4.5 mmap patch
-Origin: https://github.com/sfjro/aufs4-standalone/tree/91164538a2f52c72b79a657ca3675cb55152413d
+Date: Wed Mar 23 20:35:31 2016 +0900
+Subject: aufs4.x-rcN mmap patch
+Origin: https://github.com/sfjro/aufs4-standalone/tree/751023bb49e09b10f7ab4c8742eb4cee234506f4
Bug-Debian: https://bugs.debian.org/541828
Patch headers added by debian/patches/features/all/aufs4/gen-patch
-aufs4.5 mmap patch
+aufs4.x-rcN mmap patch
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 4f764c2..229de5e 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
-@@ -1933,7 +1933,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -1933,7 +1933,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) {
@@ -21,11 +19,9 @@ index 4f764c2..229de5e 100644
path_get(path);
rc = 0;
}
-diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
-index f8595e8..cb8eda0 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) {
@@ -37,11 +33,9 @@ index f8595e8..cb8eda0 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 fa95ab2..d440354 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
-@@ -298,7 +298,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -298,7 +298,10 @@ show_map_vma(struct seq_file *m, struct
const char *name = NULL;
if (file) {
@@ -53,7 +47,7 @@ index fa95ab2..d440354 100644
dev = inode->i_sb->s_dev;
ino = inode->i_ino;
pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1576,7 +1579,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+@@ -1590,7 +1593,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;
@@ -62,11 +56,9 @@ index fa95ab2..d440354 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 faacb0c..17b43be 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
-@@ -163,7 +163,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
+@@ -163,7 +163,10 @@ static int nommu_vma_show(struct seq_fil
file = vma->vm_file;
if (file) {
@@ -78,11 +70,9 @@ index faacb0c..17b43be 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 516e149..ddd5454 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
-@@ -1217,6 +1217,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
+@@ -1238,6 +1238,28 @@ static inline int fixup_user_fault(struc
}
#endif
@@ -111,8 +101,6 @@ index 516e149..ddd5454 100644
extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
void *buf, int len, int write);
-diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 624b78b..1be91c5 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -269,6 +269,7 @@ struct vm_region {
@@ -125,17 +113,15 @@ index 624b78b..1be91c5 100644
bool vm_icache_flushed : 1; /* true if the icache has been flushed for
@@ -343,6 +344,7 @@ struct vm_area_struct {
unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE
- units, *not* PAGE_CACHE_SIZE */
+ units */
struct file * vm_file; /* File we map to (can be NULL). */
+ struct file *vm_prfile; /* shadow of vm_file */
void * vm_private_data; /* was vm_pte (shared mem) */
#ifndef CONFIG_MMU
-diff --git a/kernel/fork.c b/kernel/fork.c
-index 2e391c7..6c4215c 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
-@@ -464,7 +464,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -475,7 +475,7 @@ static int dup_mmap(struct mm_struct *mm
struct inode *inode = file_inode(file);
struct address_space *mapping = file->f_mapping;
@@ -144,11 +130,9 @@ index 2e391c7..6c4215c 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 2ed4319..e3a53f5 100644
--- a/mm/Makefile
+++ b/mm/Makefile
-@@ -21,7 +21,7 @@ obj-y := filemap.o mempool.o oom_kill.o \
+@@ -37,7 +37,7 @@ obj-y := filemap.o mempool.o oom_kill.
mm_init.o mmu_context.o percpu.o slab_common.o \
compaction.o vmacache.o \
interval_tree.o list_lru.o workingset.o \
@@ -157,11 +141,9 @@ index 2ed4319..e3a53f5 100644
obj-y += init-mm.o
-diff --git a/mm/filemap.c b/mm/filemap.c
-index da7a35d..f800f87 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
-@@ -2229,7 +2229,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -2211,7 +2211,7 @@ int filemap_page_mkwrite(struct vm_area_
int ret = VM_FAULT_LOCKED;
sb_start_pagefault(inode->i_sb);
@@ -170,11 +152,9 @@ index da7a35d..f800f87 100644
lock_page(page);
if (page->mapping != inode->i_mapping) {
unlock_page(page);
-diff --git a/mm/memory.c b/mm/memory.c
-index 8132787..3f7de66 100644
--- a/mm/memory.c
+++ b/mm/memory.c
-@@ -2042,7 +2042,7 @@ static inline int wp_page_reuse(struct mm_struct *mm,
+@@ -2065,7 +2065,7 @@ static inline int wp_page_reuse(struct m
}
if (!page_mkwrite)
@@ -183,11 +163,9 @@ index 8132787..3f7de66 100644
}
return VM_FAULT_WRITE;
-diff --git a/mm/mmap.c b/mm/mmap.c
-index 76d1ec2..fdd163e 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
-@@ -290,7 +290,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
+@@ -166,7 +166,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)
@@ -196,7 +174,7 @@ index 76d1ec2..fdd163e 100644
mpol_put(vma_policy(vma));
kmem_cache_free(vm_area_cachep, vma);
return next;
-@@ -909,7 +909,7 @@ again: remove_next = 1 + (end > next->vm_end);
+@@ -785,7 +785,7 @@ again: remove_next = 1 + (end > next->
if (remove_next) {
if (file) {
uprobe_munmap(next, next->vm_start, next->vm_end);
@@ -205,7 +183,7 @@ index 76d1ec2..fdd163e 100644
}
if (next->anon_vma)
anon_vma_merge(vma, next);
-@@ -1683,8 +1683,8 @@ out:
+@@ -1566,8 +1566,8 @@ out:
return addr;
unmap_and_free_vma:
@@ -215,7 +193,7 @@ index 76d1ec2..fdd163e 100644
/* Undo any partial mapping done by a device driver. */
unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
-@@ -2479,7 +2479,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2362,7 +2362,7 @@ static int __split_vma(struct mm_struct
goto out_free_mpol;
if (new->vm_file)
@@ -224,7 +202,7 @@ index 76d1ec2..fdd163e 100644
if (new->vm_ops && new->vm_ops->open)
new->vm_ops->open(new);
-@@ -2498,7 +2498,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2381,7 +2381,7 @@ static int __split_vma(struct mm_struct
if (new->vm_ops && new->vm_ops->close)
new->vm_ops->close(new);
if (new->vm_file)
@@ -233,15 +211,15 @@ index 76d1ec2..fdd163e 100644
unlink_anon_vmas(new);
out_free_mpol:
mpol_put(vma_policy(new));
-@@ -2640,7 +2640,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2523,7 +2523,6 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
struct vm_area_struct *vma;
unsigned long populate = 0;
unsigned long ret = -EINVAL;
- struct file *file;
- pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. "
- "See Documentation/vm/remap_file_pages.txt.\n",
-@@ -2708,10 +2707,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+ pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
+ current->comm, current->pid);
+@@ -2590,10 +2589,10 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
}
}
@@ -254,7 +232,7 @@ index 76d1ec2..fdd163e 100644
out:
up_write(&mm->mmap_sem);
if (populate)
-@@ -2982,7 +2981,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -2864,7 +2863,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)
@@ -263,11 +241,9 @@ index 76d1ec2..fdd163e 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 fbf6f0f1..1a4a06d 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
-@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm_region *region)
+@@ -646,7 +646,7 @@ static void __put_nommu_region(struct vm
up_write(&nommu_region_sem);
if (region->vm_file)
@@ -276,7 +252,7 @@ index fbf6f0f1..1a4a06d 100644
/* IO memory and memory shared directly out of the pagecache
* from ramfs/tmpfs mustn't be released here */
-@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -804,7 +804,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)
@@ -285,7 +261,7 @@ index fbf6f0f1..1a4a06d 100644
put_nommu_region(vma->vm_region);
kmem_cache_free(vm_area_cachep, vma);
}
-@@ -1355,7 +1355,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1330,7 +1330,7 @@ unsigned long do_mmap(struct file *file,
goto error_just_free;
}
}
@@ -294,7 +270,7 @@ index fbf6f0f1..1a4a06d 100644
kmem_cache_free(vm_region_jar, region);
region = pregion;
result = start;
-@@ -1430,10 +1430,10 @@ error_just_free:
+@@ -1405,10 +1405,10 @@ error_just_free:
up_write(&nommu_region_sem);
error:
if (region->vm_file)
@@ -307,9 +283,6 @@ index fbf6f0f1..1a4a06d 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..b323b8a
--- /dev/null
+++ b/mm/prfile.c
@@ -0,0 +1,86 @@
diff --git a/debian/patches/features/all/aufs4/aufs4-standalone.patch b/debian/patches/features/all/aufs4/aufs4-standalone.patch
index 3ab29fc..f6d0e16 100644
--- a/debian/patches/features/all/aufs4/aufs4-standalone.patch
+++ b/debian/patches/features/all/aufs4/aufs4-standalone.patch
@@ -1,15 +1,15 @@
From: J. R. Okajima <hooanon05 at yahoo.co.jp>
-Date: Wed Mar 16 17:10:20 2016 +0900
-Subject: aufs4.5 standalone patch
-Origin: https://github.com/sfjro/aufs4-standalone/tree/91164538a2f52c72b79a657ca3675cb55152413d
+Date: Wed Mar 23 20:35:31 2016 +0900
+Subject: aufs4.x-rcN standalone patch
+Origin: https://github.com/sfjro/aufs4-standalone/tree/751023bb49e09b10f7ab4c8742eb4cee234506f4
Bug-Debian: https://bugs.debian.org/541828
Patch headers added by debian/patches/features/all/aufs4/gen-patch
-aufs4.5 standalone patch
+aufs4.x-rcN standalone patch
diff --git a/fs/dcache.c b/fs/dcache.c
-index 318c329..72d3cc8 100644
+index bc599d0..1b735a9 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -1261,6 +1261,7 @@ rename_retry:
@@ -21,10 +21,10 @@ index 318c329..72d3cc8 100644
/*
* Search for at least 1 mount point in the dentry's subdirs.
diff --git a/fs/exec.c b/fs/exec.c
-index dcd4ac7..09a7818 100644
+index 9bdf0ed..8c87f6c 100644
--- a/fs/exec.c
+++ b/fs/exec.c
-@@ -103,6 +103,7 @@ bool path_noexec(const struct path *path)
+@@ -104,6 +104,7 @@ bool path_noexec(const struct path *path)
return (path->mnt->mnt_flags & MNT_NOEXEC) ||
(path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
}
@@ -193,7 +193,7 @@ index 55bdc75..fd1df73 100644
static int do_dentry_open(struct file *f,
struct inode *inode,
diff --git a/fs/read_write.c b/fs/read_write.c
-index c8b5b7a..9461d12 100644
+index 0ebcdc5..0a43d7b 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -544,6 +544,7 @@ vfs_readf_t vfs_readf(struct file *file)
@@ -213,10 +213,10 @@ index c8b5b7a..9461d12 100644
ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
{
diff --git a/fs/splice.c b/fs/splice.c
-index 93aee51..52d2f5b 100644
+index 9037c8c..72cc871 100644
--- a/fs/splice.c
+++ b/fs/splice.c
-@@ -1121,6 +1121,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -1124,6 +1124,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
return splice_write(pipe, out, ppos, len, flags);
}
@@ -224,7 +224,7 @@ index 93aee51..52d2f5b 100644
/*
* Attempt to initiate a splice from a file to a pipe.
-@@ -1147,6 +1148,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -1150,6 +1151,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
return splice_read(in, ppos, pipe, len, flags);
}
@@ -293,7 +293,7 @@ index 03c1652..f88c84b 100644
int devcgroup_inode_mknod(int mode, dev_t dev)
{
diff --git a/security/security.c b/security/security.c
-index e8ffd92..51fa026 100644
+index 3644b03..593879b 100644
--- a/security/security.c
+++ b/security/security.c
@@ -433,6 +433,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)
diff --git a/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch b/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch
index 450d13e..7969b32 100644
--- a/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch
+++ b/debian/patches/features/all/cgroups-Allow-memory-cgroup-support-to-be-included-b.patch
@@ -13,7 +13,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
---
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
-@@ -597,8 +597,8 @@ bytes respectively. Such letter suffixes
+@@ -603,8 +603,8 @@ bytes respectively. Such letter suffixes
ccw_timeout_log [S390]
See Documentation/s390/CommonIO for details.
@@ -26,7 +26,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
a single hierarchy
--- a/init/Kconfig
+++ b/init/Kconfig
-@@ -945,6 +945,14 @@ config MEMCG
+@@ -946,6 +946,14 @@ config MEMCG
help
Provides control over the memory footprint of tasks in a cgroup.
@@ -43,19 +43,19 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
depends on MEMCG && SWAP
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
-@@ -5269,7 +5269,11 @@ int __init cgroup_init_early(void)
+@@ -5521,7 +5521,11 @@ int __init cgroup_init_early(void)
return 0;
}
+#ifdef CONFIG_MEMCG_DISABLED
-+static unsigned long cgroup_disable_mask __initdata = 1 << memory_cgrp_id;
++static u16 cgroup_disable_mask __initdata = 1 << memory_cgrp_id;
+#else
- static unsigned long cgroup_disable_mask __initdata;
+ static u16 cgroup_disable_mask __initdata;
+#endif
/**
* cgroup_init - cgroup initialization
-@@ -5729,7 +5733,7 @@ out_free:
+@@ -6003,7 +6007,7 @@ out_free:
kfree(pathbuf);
}
@@ -64,7 +64,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
{
struct cgroup_subsys *ss;
char *token;
-@@ -5743,13 +5747,27 @@ static int __init cgroup_disable(char *s
+@@ -6017,13 +6021,27 @@ static int __init cgroup_disable(char *s
if (strcmp(token, ss->name) &&
strcmp(token, ss->legacy_name))
continue;
@@ -90,6 +90,6 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+}
+__setup("cgroup_enable=", cgroup_enable);
+
- /**
- * css_tryget_online_from_dir - get corresponding css from a cgroup dentry
- * @dentry: directory dentry of interest
+ static int __init cgroup_no_v1(char *str)
+ {
+ struct cgroup_subsys *ss;
diff --git a/debian/patches/features/all/mm-exclude-zone_device-from-gfp_zone_table.patch b/debian/patches/features/all/mm-exclude-zone_device-from-gfp_zone_table.patch
deleted file mode 100644
index 78f4a57..0000000
--- a/debian/patches/features/all/mm-exclude-zone_device-from-gfp_zone_table.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From: Dan Williams <dan.j.williams at intel.com>
-Date: Wed, 16 Mar 2016 14:16:26 +1100
-Subject: mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE
-Origin: http://article.gmane.org/gmane.linux.kernel.mm/147399
-
-ZONE_DEVICE (merged in 4.3) and ZONE_CMA (proposed) are examples of new mm
-zones that are bumping up against the current maximum limit of 4 zones,
-i.e. 2 bits in page->flags for the GFP_ZONE_TABLE.
-
-The GFP_ZONE_TABLE poses an interesting constraint since
-include/linux/gfp.h gets included by the 32-bit portion of a 64-bit build.
-We need to be careful to only build the table for zones that have a
-corresponding gfp_t flag. GFP_ZONES_SHIFT is introduced for this purpose.
-This patch does not attempt to solve the problem of adding a new zone
-that also has a corresponding GFP_ flag.
-
-Vlastimil points out that ZONE_DEVICE, by depending on x86_64 and
-SPARSEMEM_VMEMMAP implies that SECTIONS_WIDTH is zero. In other words
-even though ZONE_DEVICE does not fit in GFP_ZONE_TABLE it is free to
-consume another bit in page->flags (expand ZONES_WIDTH) with room to
-spare.
-
-Link: https://bugzilla.kernel.org/show_bug.cgi?id=110931
-Fixes: 033fbae988fc ("mm: ZONE_DEVICE for "device memory"")
-Signed-off-by: Dan Williams <dan.j.williams at intel.com>
-Reported-by: Mark <markk at clara.co.uk>
-Reported-by: Vlastimil Babka <vbabka at suse.cz>
-Cc: Mel Gorman <mgorman at suse.de>
-Cc: Rik van Riel <riel at redhat.com>
-Cc: Joonsoo Kim <iamjoonsoo.kim at lge.com>
-Cc: Dave Hansen <dave.hansen at linux.intel.com>
-Cc: Sudip Mukherjee <sudipm.mukherjee at gmail.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
----
- include/linux/gfp.h | 33 ++++++++++++++++++++-------------
- include/linux/page-flags-layout.h | 2 ++
- mm/Kconfig | 2 --
- 3 files changed, 22 insertions(+), 15 deletions(-)
-
---- a/include/linux/gfp.h
-+++ b/include/linux/gfp.h
-@@ -329,22 +329,29 @@ static inline bool gfpflags_allow_blocki
- * 0xe => BAD (MOVABLE+DMA32+HIGHMEM)
- * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA)
- *
-- * ZONES_SHIFT must be <= 2 on 32 bit platforms.
-+ * GFP_ZONES_SHIFT must be <= 2 on 32 bit platforms.
- */
-
--#if 16 * ZONES_SHIFT > BITS_PER_LONG
--#error ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
-+#if defined(CONFIG_ZONE_DEVICE) && (MAX_NR_ZONES-1) <= 4
-+/* ZONE_DEVICE is not a valid GFP zone specifier */
-+#define GFP_ZONES_SHIFT 2
-+#else
-+#define GFP_ZONES_SHIFT ZONES_SHIFT
-+#endif
-+
-+#if 16 * GFP_ZONES_SHIFT > BITS_PER_LONG
-+#error GFP_ZONES_SHIFT too large to create GFP_ZONE_TABLE integer
- #endif
-
- #define GFP_ZONE_TABLE ( \
-- (ZONE_NORMAL << 0 * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA << ___GFP_DMA * ZONES_SHIFT) \
-- | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA32 << ___GFP_DMA32 * ZONES_SHIFT) \
-- | (ZONE_NORMAL << ___GFP_MOVABLE * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * ZONES_SHIFT) \
-- | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * ZONES_SHIFT) \
-- | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * ZONES_SHIFT) \
-+ (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_HIGHMEM << ___GFP_HIGHMEM * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA32 << ___GFP_DMA32 * GFP_ZONES_SHIFT) \
-+ | (ZONE_NORMAL << ___GFP_MOVABLE * GFP_ZONES_SHIFT) \
-+ | (OPT_ZONE_DMA << (___GFP_MOVABLE | ___GFP_DMA) * GFP_ZONES_SHIFT) \
-+ | (ZONE_MOVABLE << (___GFP_MOVABLE | ___GFP_HIGHMEM) * GFP_ZONES_SHIFT)\
-+ | (OPT_ZONE_DMA32 << (___GFP_MOVABLE | ___GFP_DMA32) * GFP_ZONES_SHIFT)\
- )
-
- /*
-@@ -369,8 +376,8 @@ static inline enum zone_type gfp_zone(gf
- enum zone_type z;
- int bit = (__force int) (flags & GFP_ZONEMASK);
-
-- z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) &
-- ((1 << ZONES_SHIFT) - 1);
-+ z = (GFP_ZONE_TABLE >> (bit * GFP_ZONES_SHIFT)) &
-+ ((1 << GFP_ZONES_SHIFT) - 1);
- VM_BUG_ON((GFP_ZONE_BAD >> bit) & 1);
- return z;
- }
---- a/include/linux/page-flags-layout.h
-+++ b/include/linux/page-flags-layout.h
-@@ -17,6 +17,8 @@
- #define ZONES_SHIFT 1
- #elif MAX_NR_ZONES <= 4
- #define ZONES_SHIFT 2
-+#elif MAX_NR_ZONES <= 8
-+#define ZONES_SHIFT 3
- #else
- #error ZONES_SHIFT -- too many zones configured adjust calculation
- #endif
---- a/mm/Kconfig
-+++ b/mm/Kconfig
-@@ -652,8 +652,6 @@ config IDLE_PAGE_TRACKING
-
- config ZONE_DEVICE
- bool "Device memory (pmem, etc...) hotplug support" if EXPERT
-- default !ZONE_DMA
-- depends on !ZONE_DMA
- depends on MEMORY_HOTPLUG
- depends on MEMORY_HOTREMOVE
- depends on SPARSEMEM_VMEMMAP
diff --git a/debian/patches/features/all/nbd-create-size-change-events-for-userspace.patch b/debian/patches/features/all/nbd-create-size-change-events-for-userspace.patch
deleted file mode 100644
index 0e6ef99..0000000
--- a/debian/patches/features/all/nbd-create-size-change-events-for-userspace.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From: Markus Pargmann <mpa at pengutronix.de>
-Date: Mon, 27 Jul 2015 07:36:49 +0200
-Subject: nbd: Create size change events for userspace
-Origin: https://git.kernel.org/linus/37091fdd831f28a6509008542174ed324dd645bc
-Bug-Debian: https://bugs.debian.org/812487
-
-The userspace needs to know when nbd devices are ready for use.
-Currently no events are created for the userspace which doesn't work for
-systemd.
-
-See the discussion here: https://github.com/systemd/systemd/pull/358
-
-This patch uses a central point to setup the nbd-internal sizes. A ioctl
-to set a size does not lead to a visible size change. The size of the
-block device will be kept at 0 until nbd is connected. As soon as it
-connects, the size will be changed to the real value and a uevent is
-created. When disconnecting, the blockdevice is set to 0 size and
-another uevent is generated.
-
-Signed-off-by: Markus Pargmann <mpa at pengutronix.de>
----
- drivers/block/nbd.c | 79 +++++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 58 insertions(+), 21 deletions(-)
-
---- a/drivers/block/nbd.c
-+++ b/drivers/block/nbd.c
-@@ -98,6 +98,11 @@ static inline struct device *nbd_to_dev(
- return disk_to_dev(nbd->disk);
- }
-
-+static bool nbd_is_connected(struct nbd_device *nbd)
-+{
-+ return !!nbd->task_recv;
-+}
-+
- static const char *nbdcmd_to_ascii(int cmd)
- {
- switch (cmd) {
-@@ -110,6 +115,42 @@ static const char *nbdcmd_to_ascii(int c
- return "invalid";
- }
-
-+static int nbd_size_clear(struct nbd_device *nbd, struct block_device *bdev)
-+{
-+ bdev->bd_inode->i_size = 0;
-+ set_capacity(nbd->disk, 0);
-+ kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE);
-+
-+ return 0;
-+}
-+
-+static void nbd_size_update(struct nbd_device *nbd, struct block_device *bdev)
-+{
-+ if (!nbd_is_connected(nbd))
-+ return;
-+
-+ bdev->bd_inode->i_size = nbd->bytesize;
-+ set_capacity(nbd->disk, nbd->bytesize >> 9);
-+ kobject_uevent(&nbd_to_dev(nbd)->kobj, KOBJ_CHANGE);
-+}
-+
-+static int nbd_size_set(struct nbd_device *nbd, struct block_device *bdev,
-+ int blocksize, int nr_blocks)
-+{
-+ int ret;
-+
-+ ret = set_blocksize(bdev, blocksize);
-+ if (ret)
-+ return ret;
-+
-+ nbd->blksize = blocksize;
-+ nbd->bytesize = (loff_t)blocksize * (loff_t)nr_blocks;
-+
-+ nbd_size_update(nbd, bdev);
-+
-+ return 0;
-+}
-+
- static void nbd_end_request(struct nbd_device *nbd, struct request *req)
- {
- int error = req->errors ? -EIO : 0;
-@@ -402,7 +443,7 @@ static struct device_attribute pid_attr
- .show = pid_show,
- };
-
--static int nbd_thread_recv(struct nbd_device *nbd)
-+static int nbd_thread_recv(struct nbd_device *nbd, struct block_device *bdev)
- {
- struct request *req;
- int ret;
-@@ -427,6 +468,8 @@ static int nbd_thread_recv(struct nbd_de
- return ret;
- }
-
-+ nbd_size_update(nbd, bdev);
-+
- while (1) {
- req = nbd_read_stat(nbd);
- if (IS_ERR(req)) {
-@@ -437,6 +480,8 @@ static int nbd_thread_recv(struct nbd_de
- nbd_end_request(nbd, req);
- }
-
-+ nbd_size_clear(nbd, bdev);
-+
- device_remove_file(disk_to_dev(nbd->disk), &pid_attr);
-
- spin_lock_irqsave(&nbd->tasks_lock, flags);
-@@ -696,20 +741,19 @@ static int __nbd_ioctl(struct block_devi
- return -EINVAL;
- }
-
-- case NBD_SET_BLKSIZE:
-- nbd->blksize = arg;
-- nbd->bytesize &= ~(nbd->blksize-1);
-- bdev->bd_inode->i_size = nbd->bytesize;
-- set_blocksize(bdev, nbd->blksize);
-- set_capacity(nbd->disk, nbd->bytesize >> 9);
-- return 0;
-+ case NBD_SET_BLKSIZE: {
-+ loff_t bsize = nbd->bytesize;
-+ do_div(bsize, arg);
-+
-+ return nbd_size_set(nbd, bdev, arg, bsize);
-+ }
-
- case NBD_SET_SIZE:
-- nbd->bytesize = arg & ~(nbd->blksize-1);
-- bdev->bd_inode->i_size = nbd->bytesize;
-- set_blocksize(bdev, nbd->blksize);
-- set_capacity(nbd->disk, nbd->bytesize >> 9);
-- return 0;
-+ return nbd_size_set(nbd, bdev, nbd->blksize,
-+ arg / nbd->blksize);
-+
-+ case NBD_SET_SIZE_BLOCKS:
-+ return nbd_size_set(nbd, bdev, nbd->blksize, arg);
-
- case NBD_SET_TIMEOUT:
- nbd->xmit_timeout = arg * HZ;
-@@ -725,13 +769,6 @@ static int __nbd_ioctl(struct block_devi
- nbd->flags = arg;
- return 0;
-
-- case NBD_SET_SIZE_BLOCKS:
-- nbd->bytesize = ((u64) arg) * nbd->blksize;
-- bdev->bd_inode->i_size = nbd->bytesize;
-- set_blocksize(bdev, nbd->blksize);
-- set_capacity(nbd->disk, nbd->bytesize >> 9);
-- return 0;
--
- case NBD_DO_IT: {
- struct task_struct *thread;
- struct socket *sock;
-@@ -762,7 +799,7 @@ static int __nbd_ioctl(struct block_devi
- }
-
- nbd_dev_dbg_init(nbd);
-- error = nbd_thread_recv(nbd);
-+ error = nbd_thread_recv(nbd, bdev);
- nbd_dev_dbg_close(nbd);
- kthread_stop(thread);
-
diff --git a/debian/patches/features/all/securelevel/acpi-disable-apei-error-injection-if-securelevel-is-.patch b/debian/patches/features/all/securelevel/acpi-disable-apei-error-injection-if-securelevel-is-.patch
index f7736af..2ae1100 100644
--- a/debian/patches/features/all/securelevel/acpi-disable-apei-error-injection-if-securelevel-is-.patch
+++ b/debian/patches/features/all/securelevel/acpi-disable-apei-error-injection-if-securelevel-is-.patch
@@ -35,7 +35,7 @@ Signed-off-by: Linn Crosetto <linn at hpe.com>
#include "apei-internal.h"
@@ -521,6 +522,9 @@ static int einj_error_inject(u32 type, u
int rc;
- unsigned long pfn;
+ u64 base_addr, size;
+ if (get_securelevel() > 0)
+ return -EPERM;
diff --git a/debian/patches/features/all/securelevel/x86-restrict-msr-access-when-securelevel-is-set.patch b/debian/patches/features/all/securelevel/x86-restrict-msr-access-when-securelevel-is-set.patch
index e46e85e..40263e1 100644
--- a/debian/patches/features/all/securelevel/x86-restrict-msr-access-when-securelevel-is-set.patch
+++ b/debian/patches/features/all/securelevel/x86-restrict-msr-access-when-securelevel-is-set.patch
@@ -21,7 +21,7 @@ Signed-off-by: Matthew Garrett <mjg59 at srcf.ucam.org>
#include <linux/gfp.h>
+#include <linux/security.h>
- #include <asm/processor.h>
+ #include <asm/cpufeature.h>
#include <asm/msr.h>
@@ -83,6 +84,9 @@ static ssize_t msr_write(struct file *fi
int err = 0;
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-imx6dlq-wandboard-revb1.dts-use-unique-model-id.patch b/debian/patches/features/arm/device-tree/ARM-dts-imx6dlq-wandboard-revb1.dts-use-unique-model-id.patch
deleted file mode 100644
index 63d2c5e..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-imx6dlq-wandboard-revb1.dts-use-unique-model-id.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Heinrich Schuchardt <xypron.glpk at gmx.de>
-Date: Mon, 8 Feb 2016 01:55:08 +0100
-Subject: [PATCH] ARM: dts: imx6dlq-wandboard-revb1.dts: use unique model id
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=ee10774a9b48e8785f1426e273059c4ba038a27f
-Bug-Debian: https://bugs.debian.org/813881
-
-Downstream packages like Debian flash-kernel use
-/proc/device-tree/model
-to determine which dtb file to install.
-
-Hence each dts in the Linux kernel should provide a unique model
-identifier.
-
-Commit 8536239e371f ("ARM: dts: Restructure imx6qdl-wandboard.dtsi for new
-rev C1 board.")' created new files imx6dl-wandboard-revb1.dts and
-imx6q-wandboard-revb1.dts but used the same model identifier as in
-imx6dl-wandboard.dts and imx6q-wandboard.dts.
-
-This patch provides unique model identifiers for revision B1 of
-the Wandboard Dual and Wandbaord Quad.
-
-The patch leaves imx6dl-wandboard.dts and imx6q-wandboard.dts unchanged
-because it is not foreseeable if the same dts will valid for future
-board revisions or not. Furthermore we should avoid unnecessary
-changes.
-
-Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
-Signed-off-by: Shawn Guo <shawnguo at kernel.org>
----
- arch/arm/boot/dts/imx6dl-wandboard-revb1.dts | 2 +-
- arch/arm/boot/dts/imx6q-wandboard-revb1.dts | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts b/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts
-index f607d4f1d244..8c314eee4fdd 100644
---- a/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts
-+++ b/arch/arm/boot/dts/imx6dl-wandboard-revb1.dts
-@@ -13,7 +13,7 @@
- #include "imx6qdl-wandboard-revb1.dtsi"
-
- / {
-- model = "Wandboard i.MX6 Dual Lite Board";
-+ model = "Wandboard i.MX6 Dual Lite Board rev B1";
- compatible = "wand,imx6dl-wandboard", "fsl,imx6dl";
-
- memory {
-diff --git a/arch/arm/boot/dts/imx6q-wandboard-revb1.dts b/arch/arm/boot/dts/imx6q-wandboard-revb1.dts
-index 20bf3c282623..9207d80f9cfb 100644
---- a/arch/arm/boot/dts/imx6q-wandboard-revb1.dts
-+++ b/arch/arm/boot/dts/imx6q-wandboard-revb1.dts
-@@ -13,7 +13,7 @@
- #include "imx6qdl-wandboard-revb1.dtsi"
-
- / {
-- model = "Wandboard i.MX6 Quad Board";
-+ model = "Wandboard i.MX6 Quad Board rev B1";
- compatible = "wand,imx6q-wandboard", "fsl,imx6q";
-
- memory {
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-add-for-buffalo-linkstation-ls-qvl.patch b/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-add-for-buffalo-linkstation-ls-qvl.patch
deleted file mode 100644
index c6b44d0..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-add-for-buffalo-linkstation-ls-qvl.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-From: Mario Lange <mario_lange at gmx.net>
-Date: Tue, 26 Jan 2016 01:44:10 +0900
-Subject: ARM: dts: kirkwood: add device tree for buffalo linkstation ls-qvl
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=5dda254d0cc5cbdcc81dbce0985c35b68dd5e3b1
-
-Add dts file to support Buffalo Linkstation LS-QVL,
-which is marvell kirkwood based 4-bay 3.5" HDD NAS.
-Product info:
- - (JPN) http://buffalo.jp/product/hdd/network/ls-qvl_r5/
- - (ENG) http://www.buffalotech.com/products/network-storage/home-and-small-office/linkstation-pro-quad
-
-Signed-off-by: Mario Lange <mario_lange at gmx.net>
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- .../devicetree/bindings/arm/marvell,kirkwood.txt | 1 +
- arch/arm/boot/dts/Makefile | 1 +
- arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts | 135 +++++++++++++++++++++
- 3 files changed, 137 insertions(+)
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts
-
-diff --git a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-index 0fc6faa4cddb..7d28fe4bf654 100644
---- a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-+++ b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-@@ -19,6 +19,7 @@ SoC. Currently known SoC compatibles are:
- And in addition, the compatible shall be extended with the specific
- board. Currently known boards are:
-
-+"buffalo,linkstation-lsqvl"
- "buffalo,linkstation-lsvl"
- "buffalo,linkstation-lswsxl"
- "buffalo,linkstation-lswxl"
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index 91833f905aef..30d316dc050f 100644
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -189,6 +189,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
- kirkwood-is2.dtb \
- kirkwood-km_kirkwood.dtb \
- kirkwood-laplug.dtb \
-+ kirkwood-linkstation-lsqvl.dtb \
- kirkwood-linkstation-lsvl.dtb \
- kirkwood-linkstation-lswsxl.dtb \
- kirkwood-linkstation-lswvl.dtb \
-diff --git a/arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts b/arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts
-new file mode 100644
-index 000000000000..6dc0df2969f0
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-lsqvl.dts
-@@ -0,0 +1,135 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-QVL
-+ *
-+ * Copyright (C) 2016, Mario Lange <mario_lange at gmx.net>
-+ *
-+ * Based on kirkwood-linkstation-lswvl.dts,
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "kirkwood-linkstation-6282.dtsi"
-+
-+/ {
-+ model = "Buffalo Linkstation LS-QVL";
-+ compatible = "buffalo,lsqvl", "marvell,kirkwood-88f6282", "marvell,kirkwood";
-+
-+ memory { /* 256 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x10000000>;
-+ };
-+
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_power_hdd1: pmx-power-hdd1 {
-+ marvell,pins = "mpp9";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr0: pmx-led-hdderr0 {
-+ marvell,pins = "mpp34";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr1: pmx-led-hdderr1 {
-+ marvell,pins = "mpp35";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr2: pmx-led-hdderr2 {
-+ marvell,pins = "mpp24";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr3: pmx-led-hdderr3 {
-+ marvell,pins = "mpp25";
-+ marvell,function = "gpio";
-+ };
-+ };
-+
-+ sata at 80000 {
-+ nr-ports = <2>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-+ &pmx_led_info &pmx_led_power
-+ &pmx_led_function_blue
-+ &pmx_led_hdderr0
-+ &pmx_led_hdderr1
-+ &pmx_led_hdderr2
-+ &pmx_led_hdderr3>;
-+
-+ red-hdderr0-led {
-+ label = "linkstation:red:hdderr0";
-+ gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ red-hdderr1-led {
-+ label = "linkstation:red:hdderr1";
-+ gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ red-hdderr2-led {
-+ label = "linkstation:red:hdderr2";
-+ gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ red-hdderr3-led {
-+ label = "linkstation:red:hdderr3";
-+ gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
-+ };
-+ };
-+
-+ regulators {
-+ pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
-+
-+ hdd_power1: regulator at 3 {
-+ compatible = "regulator-fixed";
-+ reg = <3>;
-+ regulator-name = "HDD1 Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+};
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-relicense-dts-of-ls-wvl-vl-and-ls-wxl-ws.patch b/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-relicense-dts-of-ls-wvl-vl-and-ls-wxl-ws.patch
deleted file mode 100644
index fdfdd63..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-relicense-dts-of-ls-wvl-vl-and-ls-wxl-ws.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Thu, 21 Jan 2016 23:38:48 +0900
-Subject: ARM: dts: kirkwood: relicense dts of ls-wvl/vl and ls-wxl/wsxl under GPLv2/X11
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=3e2f2db885fb0cb16ae8949d4d2283f1ac272329
-
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- arch/arm/boot/dts/kirkwood-lswvl.dts | 41 ++++++++++++++++++++++++++++++++----
- arch/arm/boot/dts/kirkwood-lswxl.dts | 41 ++++++++++++++++++++++++++++++++----
- 2 files changed, 74 insertions(+), 8 deletions(-)
-
-diff --git a/arch/arm/boot/dts/kirkwood-lswvl.dts b/arch/arm/boot/dts/kirkwood-lswvl.dts
-index 36eec7392ab4..04bdc4f19a9f 100644
---- a/arch/arm/boot/dts/kirkwood-lswvl.dts
-+++ b/arch/arm/boot/dts/kirkwood-lswvl.dts
-@@ -4,10 +4,43 @@
- * Copyright (C) 2015, 2016
- * Roger Shimizu <rogershimizu at gmail.com>
- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public License
-- * as published by the Free Software Foundation; either version
-- * 2 of the License, or (at your option) any later version.
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
- */
-
- /dts-v1/;
-diff --git a/arch/arm/boot/dts/kirkwood-lswxl.dts b/arch/arm/boot/dts/kirkwood-lswxl.dts
-index b13ec20a7088..930899d13c5d 100644
---- a/arch/arm/boot/dts/kirkwood-lswxl.dts
-+++ b/arch/arm/boot/dts/kirkwood-lswxl.dts
-@@ -4,10 +4,43 @@
- * Copyright (C) 2015, 2016
- * Roger Shimizu <rogershimizu at gmail.com>
- *
-- * This program is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public License
-- * as published by the Free Software Foundation; either version
-- * 2 of the License, or (at your option) any later version.
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
- */
-
- /dts-v1/;
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswvl-dts-to-linkstation-lsvl-and-.patch b/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswvl-dts-to-linkstation-lsvl-and-.patch
deleted file mode 100644
index c7f01bf..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswvl-dts-to-linkstation-lsvl-and-.patch
+++ /dev/null
@@ -1,771 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Thu, 21 Jan 2016 23:38:50 +0900
-Subject: ARM: dts: kirkwood: split lswvl dts to linkstation lsvl and lswvl
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=60ff189ca05dedac97af8d9e51c285a44bc9e5a5
-
-LS-WVL/VL are both kirkwood-6282 based NAS devices, which share
-many MPP pins. However they are slightly different:
- - LS-WVL is 2-Bay NAS, and LS-VL is only 1-Bay.
- - There're two red LED indicator on LS-WVL to show when HDD fails,
- which is similar to LS-WXL, but there's no such on LS-VL.
-
-So after the split, common part goes into .dtsi file:
- - kirkwood-linkstation-6282.dtsi
-while all rest part goes into device specific .dts file:
- - kirkwood-linkstation-lsvl.dts
- - kirkwood-linkstation-lswvl.dts
-
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- .../devicetree/bindings/arm/marvell,kirkwood.txt | 3 +-
- arch/arm/boot/dts/Makefile | 3 +-
- arch/arm/boot/dts/kirkwood-linkstation-6282.dtsi | 192 ++++++++++++
- arch/arm/boot/dts/kirkwood-linkstation-lsvl.dts | 57 ++++
- arch/arm/boot/dts/kirkwood-linkstation-lswvl.dts | 112 +++++++
- arch/arm/boot/dts/kirkwood-lswvl.dts | 335 ---------------------
- 6 files changed, 365 insertions(+), 337 deletions(-)
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-6282.dtsi
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-lsvl.dts
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-lswvl.dts
- delete mode 100644 arch/arm/boot/dts/kirkwood-lswvl.dts
-
---- a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-+++ b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-@@ -19,10 +19,11 @@ SoC. Currently known SoC compatibles are
- And in addition, the compatible shall be extended with the specific
- board. Currently known boards are:
-
-+"buffalo,linkstation-lsvl"
- "buffalo,linkstation-lswsxl"
- "buffalo,linkstation-lswxl"
-+"buffalo,linkstation-lswvl"
- "buffalo,lschlv2"
--"buffalo,lswvl"
- "buffalo,lsxhl"
- "buffalo,lsxl"
- "cloudengines,pogo02"
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -189,10 +189,11 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
- kirkwood-is2.dtb \
- kirkwood-km_kirkwood.dtb \
- kirkwood-laplug.dtb \
-+ kirkwood-linkstation-lsvl.dtb \
- kirkwood-linkstation-lswsxl.dtb \
-+ kirkwood-linkstation-lswvl.dtb \
- kirkwood-linkstation-lswxl.dtb \
- kirkwood-lschlv2.dtb \
-- kirkwood-lswvl.dtb \
- kirkwood-lsxhl.dtb \
- kirkwood-mplcec4.dtb \
- kirkwood-mv88f6281gtw-ge.dtb \
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-6282.dtsi
-@@ -0,0 +1,192 @@
-+/*
-+ * Device Tree common file for kirkwood-6282 based Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include "kirkwood.dtsi"
-+#include "kirkwood-6282.dtsi"
-+#include "kirkwood-linkstation.dtsi"
-+
-+/ {
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_power_hdd0: pmx-power-hdd0 {
-+ marvell,pins = "mpp8";
-+ marvell,function = "gpio";
-+ };
-+ pmx_usb_vbus: pmx-usb-vbus {
-+ marvell,pins = "mpp12";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_high: pmx-fan-high {
-+ marvell,pins = "mpp16";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_low: pmx-fan-low {
-+ marvell,pins = "mpp17";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_alarm: pmx-led-alarm {
-+ marvell,pins = "mpp36";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_red: pmx-led-function-red {
-+ marvell,pins = "mpp37";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_info: pmx-led-info {
-+ marvell,pins = "mpp38";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_blue: pmx-led-function-blue {
-+ marvell,pins = "mpp39";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_power: pmx-led-power {
-+ marvell,pins = "mpp40";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_lock: pmx-fan-lock {
-+ marvell,pins = "mpp43";
-+ marvell,function = "gpio";
-+ };
-+ pmx_button_function: pmx-button-function {
-+ marvell,pins = "mpp45";
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_switch: pmx-power-switch {
-+ marvell,pins = "mpp46";
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_auto_switch: pmx-power-auto-switch {
-+ marvell,pins = "mpp47";
-+ marvell,function = "gpio";
-+ };
-+ };
-+ };
-+
-+ gpio_keys {
-+ function-button {
-+ gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ power-on-switch {
-+ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ power-auto-switch {
-+ gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ red-alarm-led {
-+ label = "linkstation:red:alarm";
-+ gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ red-function-led {
-+ label = "linkstation:red:function";
-+ gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ amber-info-led {
-+ label = "linkstation:amber:info";
-+ gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ blue-function-led {
-+ label = "linkstation:blue:function";
-+ gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ blue-power-led {
-+ label = "linkstation:blue:power";
-+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
-+ default-state = "keep";
-+ };
-+ };
-+
-+ gpio_fan {
-+ compatible = "gpio-fan";
-+ pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-+ pinctrl-names = "default";
-+
-+ gpios = <&gpio0 17 GPIO_ACTIVE_LOW
-+ &gpio0 16 GPIO_ACTIVE_LOW>;
-+
-+ gpio-fan,speed-map = <0 3
-+ 1500 2
-+ 3250 1
-+ 5000 0>;
-+
-+ alarm-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ regulators {
-+ usb_power: regulator at 1 {
-+ gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ hdd_power0: regulator at 2 {
-+ gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+};
-+
-+&mdio {
-+ status = "okay";
-+
-+ ethphy0: ethernet-phy at 0 {
-+ device_type = "ethernet-phy";
-+ reg = <0>;
-+ };
-+};
-+
-+ð0 {
-+ status = "okay";
-+
-+ ethernet0-port at 0 {
-+ phy-handle = <ðphy0>;
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-lsvl.dts
-@@ -0,0 +1,57 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-VL
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "kirkwood-linkstation-6282.dtsi"
-+
-+/ {
-+ model = "Buffalo Linkstation LS-VL";
-+ compatible = "buffalo,lsvl", "marvell,kirkwood-88f6282", "marvell,kirkwood";
-+
-+ memory { /* 256 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x10000000>;
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-lswvl.dts
-@@ -0,0 +1,112 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-WVL
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "kirkwood-linkstation-6282.dtsi"
-+
-+/ {
-+ model = "Buffalo Linkstation LS-WVL";
-+ compatible = "buffalo,lswvl","marvell,kirkwood-88f6282", "marvell,kirkwood";
-+
-+ memory { /* 256 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x10000000>;
-+ };
-+
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_power_hdd1: pmx-power-hdd1 {
-+ marvell,pins = "mpp9";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr0: pmx-led-hdderr0 {
-+ marvell,pins = "mpp34";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr1: pmx-led-hdderr1 {
-+ marvell,pins = "mpp35";
-+ marvell,function = "gpio";
-+ };
-+ };
-+
-+ sata at 80000 {
-+ nr-ports = <2>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-+ &pmx_led_info &pmx_led_power
-+ &pmx_led_function_blue
-+ &pmx_led_hdderr0
-+ &pmx_led_hdderr1>;
-+
-+ red-hdderr0-led {
-+ label = "linkstation:red:hdderr0";
-+ gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ red-hdderr1-led {
-+ label = "linkstation:red:hdderr1";
-+ gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+
-+ regulators {
-+ pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
-+
-+ hdd_power1: regulator at 3 {
-+ compatible = "regulator-fixed";
-+ reg = <3>;
-+ regulator-name = "HDD1 Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+};
---- a/arch/arm/boot/dts/kirkwood-lswvl.dts
-+++ /dev/null
-@@ -1,335 +0,0 @@
--/*
-- * Device Tree file for Buffalo Linkstation LS-WVL/VL
-- *
-- * Copyright (C) 2015, 2016
-- * Roger Shimizu <rogershimizu at gmail.com>
-- *
-- * This file is dual-licensed: you can use it either under the terms
-- * of the GPL or the X11 license, at your option. Note that this dual
-- * licensing only applies to this file, and not this project as a
-- * whole.
-- *
-- * a) This file is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public License as
-- * published by the Free Software Foundation; either version 2 of the
-- * License, or (at your option) any later version.
-- *
-- * This file is distributed in the hope that it will be useful
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * Or, alternatively
-- *
-- * b) Permission is hereby granted, free of charge, to any person
-- * obtaining a copy of this software and associated documentation
-- * files (the "Software"), to deal in the Software without
-- * restriction, including without limitation the rights to use
-- * copy, modify, merge, publish, distribute, sublicense, and/or
-- * sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following
-- * conditions:
-- *
-- * The above copyright notice and this permission notice shall be
-- * included in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-- * OTHER DEALINGS IN THE SOFTWARE.
-- */
--
--/dts-v1/;
--
--#include "kirkwood.dtsi"
--#include "kirkwood-6282.dtsi"
--
--/ {
-- model = "Buffalo Linkstation LS-WVL/VL";
-- compatible = "buffalo,lswvl", "buffalo,lsvl", "marvell,kirkwood-88f6282", "marvell,kirkwood";
--
-- memory { /* 256 MB */
-- device_type = "memory";
-- reg = <0x00000000 0x10000000>;
-- };
--
-- chosen {
-- bootargs = "console=ttyS0,115200n8 earlyprintk";
-- stdout-path = &uart0;
-- };
--
-- mbus {
-- pcie-controller {
-- status = "okay";
-- pcie at 1,0 {
-- status = "okay";
-- };
-- };
-- };
--
-- ocp at f1000000 {
-- pinctrl: pin-controller at 10000 {
-- pmx_power_hdd0: pmx-power-hdd0 {
-- marvell,pins = "mpp8";
-- marvell,function = "gpio";
-- };
-- pmx_power_hdd1: pmx-power-hdd1 {
-- marvell,pins = "mpp9";
-- marvell,function = "gpio";
-- };
-- pmx_usb_vbus: pmx-usb-vbus {
-- marvell,pins = "mpp12";
-- marvell,function = "gpio";
-- };
-- pmx_fan_high: pmx-fan-high {
-- marvell,pins = "mpp16";
-- marvell,function = "gpio";
-- };
-- pmx_fan_low: pmx-fan-low {
-- marvell,pins = "mpp17";
-- marvell,function = "gpio";
-- };
-- pmx_led_hdderr0: pmx-led-hdderr0 {
-- marvell,pins = "mpp34";
-- marvell,function = "gpio";
-- };
-- pmx_led_hdderr1: pmx-led-hdderr1 {
-- marvell,pins = "mpp35";
-- marvell,function = "gpio";
-- };
-- pmx_led_alarm: pmx-led-alarm {
-- marvell,pins = "mpp36";
-- marvell,function = "gpio";
-- };
-- pmx_led_function_red: pmx-led-function-red {
-- marvell,pins = "mpp37";
-- marvell,function = "gpio";
-- };
-- pmx_led_info: pmx-led-info {
-- marvell,pins = "mpp38";
-- marvell,function = "gpio";
-- };
-- pmx_led_function_blue: pmx-led-function-blue {
-- marvell,pins = "mpp39";
-- marvell,function = "gpio";
-- };
-- pmx_led_power: pmx-led-power {
-- marvell,pins = "mpp40";
-- marvell,function = "gpio";
-- };
-- pmx_fan_lock: pmx-fan-lock {
-- marvell,pins = "mpp43";
-- marvell,function = "gpio";
-- };
-- pmx_button_function: pmx-button-function {
-- marvell,pins = "mpp45";
-- marvell,function = "gpio";
-- };
-- pmx_power_switch: pmx-power-switch {
-- marvell,pins = "mpp46";
-- marvell,function = "gpio";
-- };
-- pmx_power_auto_switch: pmx-power-auto-switch {
-- marvell,pins = "mpp47";
-- marvell,function = "gpio";
-- };
-- };
--
-- serial at 12000 {
-- status = "okay";
-- };
--
-- sata at 80000 {
-- status = "okay";
-- nr-ports = <2>;
-- };
--
-- spi at 10600 {
-- status = "okay";
--
-- m25p40 at 0 {
-- #address-cells = <1>;
-- #size-cells = <1>;
-- compatible = "st,m25p40", "jedec,spi-nor";
-- reg = <0>;
-- spi-max-frequency = <25000000>;
-- mode = <0>;
--
-- partition at 0 {
-- reg = <0x0 0x60000>;
-- label = "uboot";
-- read-only;
-- };
--
-- partition at 60000 {
-- reg = <0x60000 0x10000>;
-- label = "dtb";
-- read-only;
-- };
--
-- partition at 70000 {
-- reg = <0x70000 0x10000>;
-- label = "uboot_env";
-- };
-- };
-- };
-- };
--
-- gpio_keys {
-- compatible = "gpio-keys";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_button_function &pmx_power_switch
-- &pmx_power_auto_switch>;
-- pinctrl-names = "default";
--
-- button at 1 {
-- label = "Function Button";
-- linux,code = <KEY_OPTION>;
-- gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
-- };
--
-- button at 2 {
-- label = "Power-on Switch";
-- linux,code = <KEY_RESERVED>;
-- linux,input-type = <5>;
-- gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
-- };
--
-- button at 3 {
-- label = "Power-auto Switch";
-- linux,code = <KEY_ESC>;
-- linux,input-type = <5>;
-- gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
-- };
-- };
--
-- gpio_leds {
-- compatible = "gpio-leds";
-- pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-- &pmx_led_info &pmx_led_power
-- &pmx_led_function_blue
-- &pmx_led_hdderr0
-- &pmx_led_hdderr1>;
-- pinctrl-names = "default";
--
-- led at 1 {
-- label = "lswvl:red:alarm";
-- gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 2 {
-- label = "lswvl:red:func";
-- gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 3 {
-- label = "lswvl:amber:info";
-- gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 4 {
-- label = "lswvl:blue:func";
-- gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 5 {
-- label = "lswvl:blue:power";
-- gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
-- default-state = "keep";
-- };
--
-- led at 6 {
-- label = "lswvl:red:hdderr0";
-- gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 7 {
-- label = "lswvl:red:hdderr1";
-- gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
-- };
-- };
--
-- gpio_fan {
-- compatible = "gpio-fan";
-- pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-- pinctrl-names = "default";
--
-- gpios = <&gpio0 17 GPIO_ACTIVE_LOW
-- &gpio0 16 GPIO_ACTIVE_LOW>;
--
-- gpio-fan,speed-map = <0 3
-- 1500 2
-- 3250 1
-- 5000 0>;
--
-- alarm-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
-- };
--
-- restart_poweroff {
-- compatible = "restart-poweroff";
-- };
--
-- regulators {
-- compatible = "simple-bus";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
-- pinctrl-names = "default";
--
-- usb_power: regulator at 1 {
-- compatible = "regulator-fixed";
-- reg = <1>;
-- regulator-name = "USB Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
-- };
-- hdd_power0: regulator at 2 {
-- compatible = "regulator-fixed";
-- reg = <2>;
-- regulator-name = "HDD0 Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>;
-- };
-- hdd_power1: regulator at 3 {
-- compatible = "regulator-fixed";
-- reg = <3>;
-- regulator-name = "HDD1 Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
-- };
-- };
--};
--
--&mdio {
-- status = "okay";
--
-- ethphy0: ethernet-phy at 0 {
-- device_type = "ethernet-phy";
-- reg = <0>;
-- };
--};
--
--ð0 {
-- status = "okay";
--
-- ethernet0-port at 0 {
-- phy-handle = <ðphy0>;
-- };
--};
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswxl-dts-to-linkstation-lswsxl-an.patch b/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswxl-dts-to-linkstation-lswsxl-an.patch
deleted file mode 100644
index 126df41..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-kirkwood-split-lswxl-dts-to-linkstation-lswsxl-an.patch
+++ /dev/null
@@ -1,975 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Thu, 21 Jan 2016 23:38:49 +0900
-Subject: ARM: dts: kirkwood: split lswxl dts to linkstation lswsxl and lswxl
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=b05465ff5b5e90d6d25d3f6c4e8ac6b2b3159435
-
-LS-WXL/WSXL are both kirkwood-6281 based 2-Bay NAS devices, which share
-many MPP pins. However they are slightly different:
- - There're two red LED indicator on LS-WXL to show when HDD fails,
- but there's no such on LS-WSXL.
- - There's 4-level speed adjustable FAN on LS-WXL, but not LS-WSXL.
-
-So after the split, common part goes into .dtsi file:
- - kirkwood-linkstation.dtsi
- - kirkwood-linkstation-duo-6281.dtsi
-while all rest part goes into device specific .dts file:
- - kirkwood-linkstation-lswsxl.dts
- - kirkwood-linkstation-lswxl.dts
-
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- .../devicetree/bindings/arm/marvell,kirkwood.txt | 3 +-
- arch/arm/boot/dts/Makefile | 3 +-
- .../boot/dts/kirkwood-linkstation-duo-6281.dtsi | 186 ++++++++++++
- arch/arm/boot/dts/kirkwood-linkstation-lswsxl.dts | 57 ++++
- arch/arm/boot/dts/kirkwood-linkstation-lswxl.dts | 116 +++++++
- arch/arm/boot/dts/kirkwood-linkstation.dtsi | 202 +++++++++++++
- arch/arm/boot/dts/kirkwood-lswxl.dts | 335 ---------------------
- 7 files changed, 565 insertions(+), 337 deletions(-)
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-duo-6281.dtsi
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-lswsxl.dts
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation-lswxl.dts
- create mode 100644 arch/arm/boot/dts/kirkwood-linkstation.dtsi
- delete mode 100644 arch/arm/boot/dts/kirkwood-lswxl.dts
-
---- a/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-+++ b/Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
-@@ -19,9 +19,10 @@ SoC. Currently known SoC compatibles are
- And in addition, the compatible shall be extended with the specific
- board. Currently known boards are:
-
-+"buffalo,linkstation-lswsxl"
-+"buffalo,linkstation-lswxl"
- "buffalo,lschlv2"
- "buffalo,lswvl"
--"buffalo,lswxl"
- "buffalo,lsxhl"
- "buffalo,lsxl"
- "cloudengines,pogo02"
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -189,9 +189,10 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
- kirkwood-is2.dtb \
- kirkwood-km_kirkwood.dtb \
- kirkwood-laplug.dtb \
-+ kirkwood-linkstation-lswsxl.dtb \
-+ kirkwood-linkstation-lswxl.dtb \
- kirkwood-lschlv2.dtb \
- kirkwood-lswvl.dtb \
-- kirkwood-lswxl.dtb \
- kirkwood-lsxhl.dtb \
- kirkwood-mplcec4.dtb \
- kirkwood-mv88f6281gtw-ge.dtb \
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-duo-6281.dtsi
-@@ -0,0 +1,186 @@
-+/*
-+ * Device Tree common file for kirkwood-6281 based 2-Bay Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include "kirkwood.dtsi"
-+#include "kirkwood-6281.dtsi"
-+#include "kirkwood-linkstation.dtsi"
-+
-+/ {
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_power_hdd0: pmx-power-hdd0 {
-+ marvell,pins = "mpp28";
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_hdd1: pmx-power-hdd1 {
-+ marvell,pins = "mpp29";
-+ marvell,function = "gpio";
-+ };
-+ pmx_usb_vbus: pmx-usb-vbus {
-+ marvell,pins = "mpp37";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_alarm: pmx-led-alarm {
-+ marvell,pins = "mpp49";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_red: pmx-led-function-red {
-+ marvell,pins = "mpp34";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_blue: pmx-led-function-blue {
-+ marvell,pins = "mpp36";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_info: pmx-led-info {
-+ marvell,pins = "mpp38";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_power: pmx-led-power {
-+ marvell,pins = "mpp39";
-+ marvell,function = "gpio";
-+ };
-+ pmx_button_function: pmx-button-function {
-+ marvell,pins = "mpp41";
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_switch: pmx-power-switch {
-+ marvell,pins = "mpp42";
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_auto_switch: pmx-power-auto-switch {
-+ marvell,pins = "mpp43";
-+ marvell,function = "gpio";
-+ };
-+ };
-+
-+ sata at 80000 {
-+ nr-ports = <2>;
-+ };
-+ };
-+
-+ gpio_keys {
-+ function-button {
-+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ power-on-switch {
-+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ power-auto-switch {
-+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ red-alarm-led {
-+ label = "linkstation:red:alarm";
-+ gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ red-function-led {
-+ label = "linkstation:red:function";
-+ gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ amber-info-led {
-+ label = "linkstation:amber:info";
-+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ blue-function-led {
-+ label = "linkstation:blue:function";
-+ gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
-+ };
-+
-+ blue-power-led {
-+ label = "linkstation:blue:power";
-+ gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-+ default-state = "keep";
-+ };
-+ };
-+
-+ regulators {
-+ pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
-+
-+ usb_power: regulator at 1 {
-+ gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ hdd_power0: regulator at 2 {
-+ gpio = <&gpio0 28 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ hdd_power1: regulator at 3 {
-+ compatible = "regulator-fixed";
-+ reg = <3>;
-+ regulator-name = "HDD1 Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+};
-+
-+&mdio {
-+ status = "okay";
-+
-+ ethphy1: ethernet-phy at 8 {
-+ device_type = "ethernet-phy";
-+ reg = <8>;
-+ };
-+};
-+
-+ð1 {
-+ status = "okay";
-+
-+ ethernet1-port at 0 {
-+ phy-handle = <ðphy1>;
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-lswsxl.dts
-@@ -0,0 +1,57 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-WSXL
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "kirkwood-linkstation-duo-6281.dtsi"
-+
-+/ {
-+ model = "Buffalo Linkstation LS-WSXL";
-+ compatible = "buffalo,lswsxl", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+
-+ memory { /* 128 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x8000000>;
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation-lswxl.dts
-@@ -0,0 +1,116 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-WXL
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "kirkwood-linkstation-duo-6281.dtsi"
-+
-+/ {
-+ model = "Buffalo Linkstation LS-WXL";
-+ compatible = "buffalo,lswxl", "marvell,kirkwood-88f6281", "marvell,kirkwood";
-+
-+ memory { /* 128 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x8000000>;
-+ };
-+
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_led_hdderr0: pmx-led-hdderr0 {
-+ marvell,pins = "mpp8";
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_hdderr1: pmx-led-hdderr1 {
-+ marvell,pins = "mpp46";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_lock: pmx-fan-lock {
-+ marvell,pins = "mpp40";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_high: pmx-fan-high {
-+ marvell,pins = "mpp47";
-+ marvell,function = "gpio";
-+ };
-+ pmx_fan_low: pmx-fan-low {
-+ marvell,pins = "mpp48";
-+ marvell,function = "gpio";
-+ };
-+ };
-+ };
-+
-+ gpio_leds {
-+ pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-+ &pmx_led_info &pmx_led_power
-+ &pmx_led_function_blue
-+ &pmx_led_hdderr0
-+ &pmx_led_hdderr1>;
-+
-+ red-hdderr0-led {
-+ label = "linkstation:red:hdderr0";
-+ gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
-+ };
-+
-+ red-hdderr1-led {
-+ label = "linkstation:red:hdderr1";
-+ gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
-+ };
-+ };
-+
-+ gpio_fan {
-+ compatible = "gpio-fan";
-+ pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-+ pinctrl-names = "default";
-+
-+ gpios = <&gpio1 16 GPIO_ACTIVE_LOW
-+ &gpio1 15 GPIO_ACTIVE_LOW>;
-+
-+ gpio-fan,speed-map = <0 3
-+ 1500 2
-+ 3250 1
-+ 5000 0>;
-+
-+ alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/kirkwood-linkstation.dtsi
-@@ -0,0 +1,202 @@
-+/*
-+ * Device Tree common file for kirkwood based Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/ {
-+ chosen {
-+ bootargs = "console=ttyS0,115200n8 earlyprintk";
-+ stdout-path = &uart0;
-+ };
-+
-+ mbus {
-+ pcie-controller {
-+ status = "okay";
-+ pcie at 1,0 {
-+ status = "okay";
-+ };
-+ };
-+ };
-+
-+ ocp at f1000000 {
-+ pinctrl: pin-controller at 10000 {
-+ pmx_power_hdd0: pmx-power-hdd0 {
-+ marvell,function = "gpio";
-+ };
-+ pmx_usb_vbus: pmx-usb-vbus {
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_alarm: pmx-led-alarm {
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_red: pmx-led-function-red {
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_function_blue: pmx-led-function-blue {
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_info: pmx-led-info {
-+ marvell,function = "gpio";
-+ };
-+ pmx_led_power: pmx-led-power {
-+ marvell,function = "gpio";
-+ };
-+ pmx_button_function: pmx-button-function {
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_switch: pmx-power-switch {
-+ marvell,function = "gpio";
-+ };
-+ pmx_power_auto_switch: pmx-power-auto-switch {
-+ marvell,function = "gpio";
-+ };
-+ };
-+
-+ serial at 12000 {
-+ status = "okay";
-+ };
-+
-+ sata at 80000 {
-+ status = "okay";
-+ nr-ports = <1>;
-+ };
-+
-+ spi at 10600 {
-+ status = "okay";
-+
-+ m25p40 at 0 {
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+ compatible = "st,m25p40", "jedec,spi-nor";
-+ reg = <0>;
-+ spi-max-frequency = <25000000>;
-+ mode = <0>;
-+
-+ partition at 0 {
-+ reg = <0x0 0x60000>;
-+ label = "uboot";
-+ read-only;
-+ };
-+
-+ partition at 60000 {
-+ reg = <0x60000 0x10000>;
-+ label = "dtb";
-+ read-only;
-+ };
-+
-+ partition at 70000 {
-+ reg = <0x70000 0x10000>;
-+ label = "uboot_env";
-+ };
-+ };
-+ };
-+ };
-+
-+ gpio_keys {
-+ compatible = "gpio-keys";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ pinctrl-0 = <&pmx_button_function &pmx_power_switch
-+ &pmx_power_auto_switch>;
-+ pinctrl-names = "default";
-+
-+ function-button {
-+ label = "Function Button";
-+ linux,code = <KEY_OPTION>;
-+ };
-+
-+ power-on-switch {
-+ label = "Power-on Switch";
-+ linux,code = <KEY_RESERVED>;
-+ linux,input-type = <5>;
-+ };
-+
-+ power-auto-switch {
-+ label = "Power-auto Switch";
-+ linux,code = <KEY_ESC>;
-+ linux,input-type = <5>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ compatible = "gpio-leds";
-+ pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-+ &pmx_led_info &pmx_led_power
-+ &pmx_led_function_blue>;
-+ pinctrl-names = "default";
-+ };
-+
-+ restart_poweroff {
-+ compatible = "restart-poweroff";
-+ };
-+
-+ regulators {
-+ compatible = "simple-bus";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ pinctrl-0 = <&pmx_power_hdd0 &pmx_usb_vbus>;
-+ pinctrl-names = "default";
-+
-+ usb_power: regulator at 1 {
-+ compatible = "regulator-fixed";
-+ reg = <1>;
-+ regulator-name = "USB Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ };
-+
-+ hdd_power0: regulator at 2 {
-+ compatible = "regulator-fixed";
-+ reg = <2>;
-+ regulator-name = "HDD0 Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ };
-+ };
-+};
---- a/arch/arm/boot/dts/kirkwood-lswxl.dts
-+++ /dev/null
-@@ -1,335 +0,0 @@
--/*
-- * Device Tree file for Buffalo Linkstation LS-WXL/WSXL
-- *
-- * Copyright (C) 2015, 2016
-- * Roger Shimizu <rogershimizu at gmail.com>
-- *
-- * This file is dual-licensed: you can use it either under the terms
-- * of the GPL or the X11 license, at your option. Note that this dual
-- * licensing only applies to this file, and not this project as a
-- * whole.
-- *
-- * a) This file is free software; you can redistribute it and/or
-- * modify it under the terms of the GNU General Public License as
-- * published by the Free Software Foundation; either version 2 of the
-- * License, or (at your option) any later version.
-- *
-- * This file is distributed in the hope that it will be useful
-- * but WITHOUT ANY WARRANTY; without even the implied warranty of
-- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- * GNU General Public License for more details.
-- *
-- * Or, alternatively
-- *
-- * b) Permission is hereby granted, free of charge, to any person
-- * obtaining a copy of this software and associated documentation
-- * files (the "Software"), to deal in the Software without
-- * restriction, including without limitation the rights to use
-- * copy, modify, merge, publish, distribute, sublicense, and/or
-- * sell copies of the Software, and to permit persons to whom the
-- * Software is furnished to do so, subject to the following
-- * conditions:
-- *
-- * The above copyright notice and this permission notice shall be
-- * included in all copies or substantial portions of the Software.
-- *
-- * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-- * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-- * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-- * OTHER DEALINGS IN THE SOFTWARE.
-- */
--
--/dts-v1/;
--
--#include "kirkwood.dtsi"
--#include "kirkwood-6281.dtsi"
--
--/ {
-- model = "Buffalo Linkstation LS-WXL/WSXL";
-- compatible = "buffalo,lswxl", "marvell,kirkwood-88f6281", "marvell,kirkwood";
--
-- memory { /* 128 MB */
-- device_type = "memory";
-- reg = <0x00000000 0x8000000>;
-- };
--
-- chosen {
-- bootargs = "console=ttyS0,115200n8 earlyprintk";
-- stdout-path = &uart0;
-- };
--
-- mbus {
-- pcie-controller {
-- status = "okay";
-- pcie at 1,0 {
-- status = "okay";
-- };
-- };
-- };
--
-- ocp at f1000000 {
-- pinctrl: pin-controller at 10000 {
-- pmx_power_hdd0: pmx-power-hdd0 {
-- marvell,pins = "mpp28";
-- marvell,function = "gpio";
-- };
-- pmx_power_hdd1: pmx-power-hdd1 {
-- marvell,pins = "mpp29";
-- marvell,function = "gpio";
-- };
-- pmx_usb_vbus: pmx-usb-vbus {
-- marvell,pins = "mpp37";
-- marvell,function = "gpio";
-- };
-- pmx_fan_high: pmx-fan-high {
-- marvell,pins = "mpp47";
-- marvell,function = "gpio";
-- };
-- pmx_fan_low: pmx-fan-low {
-- marvell,pins = "mpp48";
-- marvell,function = "gpio";
-- };
-- pmx_led_hdderr0: pmx-led-hdderr0 {
-- marvell,pins = "mpp8";
-- marvell,function = "gpio";
-- };
-- pmx_led_hdderr1: pmx-led-hdderr1 {
-- marvell,pins = "mpp46";
-- marvell,function = "gpio";
-- };
-- pmx_led_alarm: pmx-led-alarm {
-- marvell,pins = "mpp49";
-- marvell,function = "gpio";
-- };
-- pmx_led_function_red: pmx-led-function-red {
-- marvell,pins = "mpp34";
-- marvell,function = "gpio";
-- };
-- pmx_led_function_blue: pmx-led-function-blue {
-- marvell,pins = "mpp36";
-- marvell,function = "gpio";
-- };
-- pmx_led_info: pmx-led-info {
-- marvell,pins = "mpp38";
-- marvell,function = "gpio";
-- };
-- pmx_led_power: pmx-led-power {
-- marvell,pins = "mpp39";
-- marvell,function = "gpio";
-- };
-- pmx_fan_lock: pmx-fan-lock {
-- marvell,pins = "mpp40";
-- marvell,function = "gpio";
-- };
-- pmx_button_function: pmx-button-function {
-- marvell,pins = "mpp41";
-- marvell,function = "gpio";
-- };
-- pmx_power_switch: pmx-power-switch {
-- marvell,pins = "mpp42";
-- marvell,function = "gpio";
-- };
-- pmx_power_auto_switch: pmx-power-auto-switch {
-- marvell,pins = "mpp43";
-- marvell,function = "gpio";
-- };
-- };
--
-- serial at 12000 {
-- status = "okay";
-- };
--
-- sata at 80000 {
-- status = "okay";
-- nr-ports = <2>;
-- };
--
-- spi at 10600 {
-- status = "okay";
--
-- m25p40 at 0 {
-- #address-cells = <1>;
-- #size-cells = <1>;
-- compatible = "st,m25p40", "jedec,spi-nor";
-- reg = <0>;
-- spi-max-frequency = <25000000>;
-- mode = <0>;
--
-- partition at 0 {
-- reg = <0x0 0x60000>;
-- label = "uboot";
-- read-only;
-- };
--
-- partition at 60000 {
-- reg = <0x60000 0x10000>;
-- label = "dtb";
-- read-only;
-- };
--
-- partition at 70000 {
-- reg = <0x70000 0x10000>;
-- label = "uboot_env";
-- };
-- };
-- };
-- };
--
-- gpio_keys {
-- compatible = "gpio-keys";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_button_function &pmx_power_switch
-- &pmx_power_auto_switch>;
-- pinctrl-names = "default";
--
-- button at 1 {
-- label = "Function Button";
-- linux,code = <KEY_OPTION>;
-- gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
-- };
--
-- button at 2 {
-- label = "Power-on Switch";
-- linux,code = <KEY_RESERVED>;
-- linux,input-type = <5>;
-- gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
-- };
--
-- button at 3 {
-- label = "Power-auto Switch";
-- linux,code = <KEY_ESC>;
-- linux,input-type = <5>;
-- gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
-- };
-- };
--
-- gpio_leds {
-- compatible = "gpio-leds";
-- pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
-- &pmx_led_info &pmx_led_power
-- &pmx_led_function_blue
-- &pmx_led_hdderr0
-- &pmx_led_hdderr1>;
-- pinctrl-names = "default";
--
-- led at 1 {
-- label = "lswxl:blue:func";
-- gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
-- };
--
-- led at 2 {
-- label = "lswxl:red:alarm";
-- gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
-- };
--
-- led at 3 {
-- label = "lswxl:amber:info";
-- gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
-- };
--
-- led at 4 {
-- label = "lswxl:blue:power";
-- gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
-- default-state = "keep";
-- };
--
-- led at 5 {
-- label = "lswxl:red:func";
-- gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 6 {
-- label = "lswxl:red:hdderr0";
-- gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
-- };
--
-- led at 7 {
-- label = "lswxl:red:hdderr1";
-- gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
-- };
-- };
--
-- gpio_fan {
-- compatible = "gpio-fan";
-- pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-- pinctrl-names = "default";
--
-- gpios = <&gpio1 16 GPIO_ACTIVE_LOW
-- &gpio1 15 GPIO_ACTIVE_LOW>;
--
-- gpio-fan,speed-map = <0 3
-- 1500 2
-- 3250 1
-- 5000 0>;
--
-- alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
-- };
--
-- restart_poweroff {
-- compatible = "restart-poweroff";
-- };
--
-- regulators {
-- compatible = "simple-bus";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
-- pinctrl-names = "default";
--
-- usb_power: regulator at 1 {
-- compatible = "regulator-fixed";
-- reg = <1>;
-- regulator-name = "USB Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio1 5 GPIO_ACTIVE_HIGH>;
-- };
-- hdd_power0: regulator at 2 {
-- compatible = "regulator-fixed";
-- reg = <2>;
-- regulator-name = "HDD0 Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio0 28 GPIO_ACTIVE_HIGH>;
-- };
-- hdd_power1: regulator at 3 {
-- compatible = "regulator-fixed";
-- reg = <3>;
-- regulator-name = "HDD1 Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
-- };
-- };
--};
--
--&mdio {
-- status = "okay";
--
-- ethphy1: ethernet-phy at 8 {
-- device_type = "ethernet-phy";
-- reg = <8>;
-- };
--};
--
--ð1 {
-- status = "okay";
--
-- ethernet1-port at 0 {
-- phy-handle = <ðphy1>;
-- };
--};
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-orion5x-add-for-buffalo-linkstation-ls-gl.patch b/debian/patches/features/arm/device-tree/ARM-dts-orion5x-add-for-buffalo-linkstation-ls-gl.patch
deleted file mode 100644
index 8b9049e..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-orion5x-add-for-buffalo-linkstation-ls-gl.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Sat, 6 Feb 2016 14:59:53 +0900
-Subject: ARM: dts: orion5x: add device tree for buffalo linkstation ls-gl
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=b1742ffa9ddb347a8bcb8e5f7dcf4d3a790f9041
-
-Add dts file to support Buffalo Linkstation LS-GL
-(a.k.a Buffalo Linkstation Pro/Live), which is marvell orion5x based
-3.5" HDD NAS.
-
-Product info:
- - (JPN) http://buffalo.jp/products/catalog/item/l/ls-gl/
- - (ENG) http://www.buffalotech.com/products/network-storage/linkstation/linkstation-pro
-
-This device tree is based on the board file:
- arch/arm/mach-orion5x/kurobox_pro-setup.c
-However, that board file also support Kurobox Pro, which is not supported by
-device tree yet. So the board file is not removed.
-
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- arch/arm/boot/dts/Makefile | 1 +
- arch/arm/boot/dts/orion5x-linkstation-lsgl.dts | 87 ++++++++++++++++++++++++++
- 2 files changed, 88 insertions(+)
- create mode 100644 arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index 30d316dc050f..66f464dd814a 100644
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -517,6 +517,7 @@ dtb-$(CONFIG_SOC_DRA7XX) += \
- dtb-$(CONFIG_ARCH_ORION5X) += \
- orion5x-lacie-d2-network.dtb \
- orion5x-lacie-ethernet-disk-mini-v2.dtb \
-+ orion5x-linkstation-lsgl.dtb \
- orion5x-linkstation-lswtgl.dtb \
- orion5x-lswsgl.dtb \
- orion5x-maxtor-shared-storage-2.dtb \
-diff --git a/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts b/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-new file mode 100644
-index 000000000000..1cf644bfd7ea
---- /dev/null
-+++ b/arch/arm/boot/dts/orion5x-linkstation-lsgl.dts
-@@ -0,0 +1,87 @@
-+/*
-+ * Device Tree file for Buffalo Linkstation LS-GL
-+ * (also known as Buffalo Linkstation Pro/Live)
-+ *
-+ * Copyright (C) 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * Based on the board file arch/arm/mach-orion5x/kurobox_pro-setup.c
-+ * Copyright (C) Ronen Shitrit <rshitrit at marvell.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+
-+#include "orion5x-linkstation.dtsi"
-+#include <dt-bindings/gpio/gpio.h>
-+
-+/ {
-+ model = "Buffalo Linkstation Pro/Live";
-+ compatible = "buffalo,lsgl", "marvell,orion5x-88f5182", "marvell,orion5x";
-+
-+ memory { /* 128 MB */
-+ device_type = "memory";
-+ reg = <0x00000000 0x8000000>;
-+ };
-+};
-+
-+&pinctrl {
-+ pmx_power_hdd: pmx-power-hdd {
-+ marvell,pins = "mpp1";
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_power_usb: pmx-power-usb {
-+ marvell,pins = "mpp9";
-+ marvell,function = "gpio";
-+ };
-+};
-+
-+&hdd_power {
-+ gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
-+};
-+
-+&usb_power {
-+ gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
-+};
-+
-+&ehci1 {
-+ status = "okay";
-+};
diff --git a/debian/patches/features/arm/device-tree/ARM-dts-orion5x-split-linkstation-lswtgl-into-common-and-.patch b/debian/patches/features/arm/device-tree/ARM-dts-orion5x-split-linkstation-lswtgl-into-common-and-.patch
deleted file mode 100644
index 837133a..0000000
--- a/debian/patches/features/arm/device-tree/ARM-dts-orion5x-split-linkstation-lswtgl-into-common-and-.patch
+++ /dev/null
@@ -1,699 +0,0 @@
-From: Roger Shimizu <rogershimizu at gmail.com>
-Date: Sat, 6 Feb 2016 14:59:52 +0900
-Subject: ARM: dts: orion5x: split linkstation lswtgl into common and device parts
-Origin: https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=305e0b2a7a85e8bd65818cb3636b205f784ed377
-
-In order to support more linkstation devices, common part of current
-.dts file goes into .dtsi file. Some .dtsi start with "mvebu-" prefix
-because other kirkwood based linkstation devices are similar, and
-will be migrated to use these .dtsi some time later.
- - orion5x-linkstation.dtsi
- - mvebu-linkstation-fan.dtsi
- - mvebu-linkstation-gpio-simple.dtsi
-while all rest part remains in device specific .dts file:
- - orion5x-linkstation-lswtgl.dts
-
-Signed-off-by: Roger Shimizu <rogershimizu at gmail.com>
-Reviewed-by: Andrew Lunn <andrew at lunn.ch>
-Signed-off-by: Gregory CLEMENT <gregory.clement at free-electrons.com>
----
- arch/arm/boot/dts/mvebu-linkstation-fan.dtsi | 72 ++++++
- .../boot/dts/mvebu-linkstation-gpio-simple.dtsi | 105 +++++++++
- arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts | 243 ++++-----------------
- arch/arm/boot/dts/orion5x-linkstation.dtsi | 180 +++++++++++++++
- 4 files changed, 402 insertions(+), 198 deletions(-)
- create mode 100644 arch/arm/boot/dts/mvebu-linkstation-fan.dtsi
- create mode 100644 arch/arm/boot/dts/mvebu-linkstation-gpio-simple.dtsi
- create mode 100644 arch/arm/boot/dts/orion5x-linkstation.dtsi
-
---- /dev/null
-+++ b/arch/arm/boot/dts/mvebu-linkstation-fan.dtsi
-@@ -0,0 +1,72 @@
-+/*
-+ * Device Tree common file for gpio-fan on Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/ {
-+ gpio_fan {
-+ compatible = "gpio-fan";
-+ pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-+ pinctrl-names = "default";
-+
-+ gpio-fan,speed-map =
-+ <0 3
-+ 1500 2
-+ 3250 1
-+ 5000 0>;
-+ };
-+};
-+
-+&pinctrl {
-+ pmx_fan_low: pmx-fan-low {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_fan_high: pmx-fan-high {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_fan_lock: pmx-fan-lock {
-+ marvell,function = "gpio";
-+ };
-+};
---- /dev/null
-+++ b/arch/arm/boot/dts/mvebu-linkstation-gpio-simple.dtsi
-@@ -0,0 +1,105 @@
-+/*
-+ * Device Tree common file for gpio-{keys,leds} on Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include <dt-bindings/input/input.h>
-+
-+/ {
-+ gpio_keys {
-+ compatible = "gpio-keys";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ pinctrl-0 = <&pmx_power_switch>;
-+ pinctrl-names = "default";
-+
-+ power-on-switch {
-+ label = "Power-on Switch";
-+ linux,code = <KEY_RESERVED>;
-+ linux,input-type = <5>;
-+ };
-+
-+ power-auto-switch {
-+ label = "Power-auto Switch";
-+ linux,code = <KEY_ESC>;
-+ linux,input-type = <5>;
-+ };
-+ };
-+
-+ gpio_leds {
-+ compatible = "gpio-leds";
-+ pinctrl-0 = <&pmx_led_power &pmx_led_alarm &pmx_led_info>;
-+ pinctrl-names = "default";
-+
-+ blue-power-led {
-+ label = "linkstation:blue:power";
-+ default-state = "keep";
-+ };
-+
-+ red-alarm-led {
-+ label = "linkstation:red:alarm";
-+ };
-+
-+ amber-info-led {
-+ label = "linkstation:amber:info";
-+ };
-+ };
-+};
-+
-+&pinctrl {
-+ pmx_power_switch: pmx-power-switch {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_led_power: pmx-leds {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_led_alarm: pmx-leds {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_led_info: pmx-leds {
-+ marvell,function = "gpio";
-+ };
-+};
---- a/arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts
-+++ b/arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts
-@@ -45,9 +45,10 @@
-
- /dts-v1/;
-
-+#include "orion5x-linkstation.dtsi"
-+#include "mvebu-linkstation-gpio-simple.dtsi"
-+#include "mvebu-linkstation-fan.dtsi"
- #include <dt-bindings/gpio/gpio.h>
--#include <dt-bindings/input/input.h>
--#include "orion5x-mv88f5182.dtsi"
-
- / {
- model = "Buffalo Linkstation LS-WTGL";
-@@ -58,247 +59,93 @@
- reg = <0x00000000 0x4000000>;
- };
-
-- chosen {
-- bootargs = "console=ttyS0,115200n8 earlyprintk";
-- linux,stdout-path = &uart0;
-- };
--
-- soc {
-- ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>,
-- <MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>,
-- <MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x40000>;
--
-- internal-regs {
-- pinctrl: pinctrl at 10000 {
-- pinctrl-names = "default";
--
-- pmx_led_power: pmx-leds {
-- marvell,pins = "mpp0";
-- marvell,function = "gpio";
-- };
--
-- pmx_led_alarm: pmx-leds {
-- marvell,pins = "mpp2";
-- marvell,function = "gpio";
-- };
--
-- pmx_led_info: pmx-leds {
-- marvell,pins = "mpp3";
-- marvell,function = "gpio";
-- };
--
-- pmx_power_hdd: pmx-power-hdd {
-- marvell,pins = "mpp1";
-- marvell,function = "gpio";
-- };
--
-- pmx_usb_power: pmx-usb-power {
-- marvell,pins = "mpp9";
-- marvell,function = "gpio";
-- };
--
-- pmx_sata0: pmx-sata0 {
-- marvell,pins = "mpp12";
-- marvell,function = "sata0";
-- };
--
-- pmx_sata1: pmx-sata1 {
-- marvell,pins = "mpp13";
-- marvell,function = "sata1";
-- };
--
-- pmx_fan_high: pmx-fan-high {
-- marvell,pins = "mpp14";
-- marvell,function = "gpio";
-- };
--
-- pmx_fan_low: pmx-fan-low {
-- marvell,pins = "mpp17";
-- marvell,function = "gpio";
-- };
--
-- pmx_fan_lock: pmx-fan-lock {
-- marvell,pins = "mpp6";
-- marvell,function = "gpio";
-- };
--
-- pmx_power_switch: pmx-power-switch {
-- marvell,pins = "mpp8", "mpp10";
-- marvell,function = "gpio";
-- };
-- };
-- };
-- };
--
- gpio_keys {
-- compatible = "gpio-keys";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_power_switch>;
-- pinctrl-names = "default";
--
-- button at 1 {
-- label = "Power-on Switch";
-- linux,code = <KEY_RESERVED>;
-- linux,input-type = <5>;
-+ power-on-switch {
- gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
- };
-
-- button at 2 {
-- label = "Power-auto Switch";
-- linux,code = <KEY_ESC>;
-- linux,input-type = <5>;
-+ power-auto-switch {
- gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
- };
- };
-
- gpio_leds {
-- compatible = "gpio-leds";
-- pinctrl-0 = <&pmx_led_power &pmx_led_alarm
-- &pmx_led_info>;
-- pinctrl-names = "default";
--
-- led at 1 {
-- label = "lswtgl:blue:power";
-+ blue-power-led {
- gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
-- default-state = "keep";
- };
-
-- led at 2 {
-- label = "lswtgl:red:alarm";
-+ red-alarm-led {
- gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
- };
-
-- led at 3 {
-- label = "lswtgl:amber:info";
-+ amber-info-led {
- gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
- };
- };
-
- gpio_fan {
-- compatible = "gpio-fan";
-- pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
-- pinctrl-names = "default";
--
- gpios = <&gpio0 14 GPIO_ACTIVE_LOW
- &gpio0 17 GPIO_ACTIVE_LOW>;
-
-- gpio-fan,speed-map = <0 3
-- 1500 2
-- 3250 1
-- 5000 0>;
--
- alarm-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
- };
-+};
-
-- restart_poweroff {
-- compatible = "restart-poweroff";
-+&pinctrl {
-+ pmx_led_power: pmx-leds {
-+ marvell,pins = "mpp0";
-+ marvell,function = "gpio";
- };
-
-- regulators {
-- compatible = "simple-bus";
-- #address-cells = <1>;
-- #size-cells = <0>;
-- pinctrl-0 = <&pmx_power_hdd &pmx_usb_power>;
-- pinctrl-names = "default";
--
-- usb_power: regulator at 1 {
-- compatible = "regulator-fixed";
-- reg = <1>;
-- regulator-name = "USB Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
-- };
-+ pmx_power_hdd: pmx-power-hdd {
-+ marvell,pins = "mpp1";
-+ marvell,function = "gpio";
-+ };
-
-- hdd_power: regulator at 2 {
-- compatible = "regulator-fixed";
-- reg = <2>;
-- regulator-name = "HDD Power";
-- regulator-min-microvolt = <5000000>;
-- regulator-max-microvolt = <5000000>;
-- enable-active-high;
-- regulator-always-on;
-- regulator-boot-on;
-- gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
-- };
-+ pmx_led_alarm: pmx-leds {
-+ marvell,pins = "mpp2";
-+ marvell,function = "gpio";
- };
--};
-
--&devbus_bootcs {
-- status = "okay";
-- devbus,keep-config;
--
-- flash at 0 {
-- compatible = "jedec-flash";
-- reg = <0 0x40000>;
-- bank-width = <1>;
--
-- partitions {
-- compatible = "fixed-partitions";
-- #address-cells = <1>;
-- #size-cells = <1>;
--
-- header at 0 {
-- reg = <0 0x30000>;
-- read-only;
-- };
--
-- uboot at 30000 {
-- reg = <0x30000 0xF000>;
-- read-only;
-- };
--
-- uboot_env at 3F000 {
-- reg = <0x3F000 0x1000>;
-- };
-- };
-+ pmx_led_info: pmx-leds {
-+ marvell,pins = "mpp3";
-+ marvell,function = "gpio";
- };
--};
-
--&mdio {
-- status = "okay";
-+ pmx_fan_lock: pmx-fan-lock {
-+ marvell,pins = "mpp6";
-+ marvell,function = "gpio";
-+ };
-
-- ethphy: ethernet-phy {
-- reg = <8>;
-+ pmx_power_switch: pmx-power-switch {
-+ marvell,pins = "mpp8", "mpp10";
-+ marvell,function = "gpio";
- };
--};
-
--ð {
-- status = "okay";
-+ pmx_power_usb: pmx-power-usb {
-+ marvell,pins = "mpp9";
-+ marvell,function = "gpio";
-+ };
-
-- ethernet-port at 0 {
-- phy-handle = <ðphy>;
-+ pmx_fan_high: pmx-fan-high {
-+ marvell,pins = "mpp14";
-+ marvell,function = "gpio";
- };
--};
-
--&ehci0 {
-- status = "okay";
-+ pmx_fan_low: pmx-fan-low {
-+ marvell,pins = "mpp17";
-+ marvell,function = "gpio";
-+ };
- };
-
--&i2c {
-- status = "okay";
--
-- rtc {
-- compatible = "ricoh,rs5c372a";
-- reg = <0x32>;
-- };
-+&hdd_power {
-+ gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
- };
-
--&wdt {
-- status = "disabled";
-+&usb_power {
-+ gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
- };
-
- &sata {
-- pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
-- pinctrl-names = "default";
-- status = "okay";
- nr-ports = <2>;
- };
--
--&uart0 {
-- status = "okay";
--};
---- /dev/null
-+++ b/arch/arm/boot/dts/orion5x-linkstation.dtsi
-@@ -0,0 +1,180 @@
-+/*
-+ * Device Tree common file for orion5x based Buffalo Linkstation
-+ *
-+ * Copyright (C) 2015, 2016
-+ * Roger Shimizu <rogershimizu at gmail.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ * a) This file is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This file is distributed in the hope that it will be useful
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * Or, alternatively
-+ *
-+ * b) Permission is hereby granted, free of charge, to any person
-+ * obtaining a copy of this software and associated documentation
-+ * files (the "Software"), to deal in the Software without
-+ * restriction, including without limitation the rights to use
-+ * copy, modify, merge, publish, distribute, sublicense, and/or
-+ * sell copies of the Software, and to permit persons to whom the
-+ * Software is furnished to do so, subject to the following
-+ * conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be
-+ * included in all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
-+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
-+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ * OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#include "orion5x-mv88f5182.dtsi"
-+
-+/ {
-+ chosen {
-+ bootargs = "console=ttyS0,115200n8 earlyprintk";
-+ linux,stdout-path = &uart0;
-+ };
-+
-+ soc {
-+ ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>,
-+ <MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>,
-+ <MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x40000>;
-+ };
-+
-+ restart_poweroff {
-+ compatible = "restart-poweroff";
-+ };
-+
-+ regulators {
-+ compatible = "simple-bus";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ pinctrl-0 = <&pmx_power_usb &pmx_power_hdd>;
-+ pinctrl-names = "default";
-+
-+ usb_power: regulator at 1 {
-+ compatible = "regulator-fixed";
-+ reg = <1>;
-+ regulator-name = "USB Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ };
-+
-+ hdd_power: regulator at 2 {
-+ compatible = "regulator-fixed";
-+ reg = <2>;
-+ regulator-name = "HDD Power";
-+ regulator-min-microvolt = <5000000>;
-+ regulator-max-microvolt = <5000000>;
-+ enable-active-high;
-+ regulator-always-on;
-+ regulator-boot-on;
-+ };
-+ };
-+};
-+
-+&pinctrl {
-+ pmx_power_hdd: pmx-power-hdd {
-+ marvell,function = "gpio";
-+ };
-+
-+ pmx_power_usb: pmx-power-usb {
-+ marvell,function = "gpio";
-+ };
-+};
-+
-+&devbus_bootcs {
-+ status = "okay";
-+ devbus,keep-config;
-+
-+ flash at 0 {
-+ compatible = "jedec-flash";
-+ reg = <0 0x40000>;
-+ bank-width = <1>;
-+
-+ partitions {
-+ compatible = "fixed-partitions";
-+ #address-cells = <1>;
-+ #size-cells = <1>;
-+
-+ header at 0 {
-+ reg = <0 0x30000>;
-+ read-only;
-+ };
-+
-+ uboot at 30000 {
-+ reg = <0x30000 0xF000>;
-+ read-only;
-+ };
-+
-+ uboot_env at 3F000 {
-+ reg = <0x3F000 0x1000>;
-+ };
-+ };
-+ };
-+};
-+
-+&mdio {
-+ status = "okay";
-+
-+ ethphy: ethernet-phy {
-+ reg = <8>;
-+ };
-+};
-+
-+ð {
-+ status = "okay";
-+
-+ ethernet-port at 0 {
-+ phy-handle = <ðphy>;
-+ };
-+};
-+
-+&ehci0 {
-+ status = "okay";
-+};
-+
-+&i2c {
-+ status = "okay";
-+
-+ rtc {
-+ compatible = "ricoh,rs5c372a";
-+ reg = <0x32>;
-+ };
-+};
-+
-+&wdt {
-+ status = "disabled";
-+};
-+
-+&sata {
-+ status = "okay";
-+ nr-ports = <1>;
-+};
-+
-+&uart0 {
-+ status = "okay";
-+};
-+
-+&uart1 {
-+ status = "okay";
-+};
diff --git a/debian/patches/features/mips/libata-support-AHCI-on-OCTEON-platform.patch b/debian/patches/features/mips/libata-support-AHCI-on-OCTEON-platform.patch
deleted file mode 100644
index b22e25b..0000000
--- a/debian/patches/features/mips/libata-support-AHCI-on-OCTEON-platform.patch
+++ /dev/null
@@ -1,272 +0,0 @@
-From: Aleksey Makarov <aleksey.makarov at caviumnetworks.com>
-Date: Thu, 11 Feb 2016 13:53:08 +0000
-Subject: libata: support AHCI on OCTEON platform
-Origin: https://git.kernel.org/linus/a2127e400edd2258fda6d83fe8b10b878a3595d9
-
-The OCTEON SATA controller is currently found on cn71XX devices.
-
-Acked-by: Arnd Bergmann <arnd at arndb.de>
-Acked-by: Hans de Goede <hdegoede at redhat.com>
-Acked-by: Rob Herring <robh at kernel.org>
-Signed-off-by: David Daney <david.daney at cavium.com>
-Signed-off-by: Vinita Gupta <vgupta at caviumnetworks.com>
-Signed-off-by: Aleksey Makarov <aleksey.makarov at auriga.com>
-Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel at imgtec.com>
-Signed-off-by: Tejun Heo <tj at kernel.org>
----
- .../devicetree/bindings/ata/ahci-platform.txt | 1 +
- .../devicetree/bindings/mips/cavium/sata-uctl.txt | 42 +++++++++
- arch/mips/include/asm/octeon/cvmx.h | 9 ++
- drivers/ata/Kconfig | 9 ++
- drivers/ata/Makefile | 1 +
- drivers/ata/ahci_octeon.c | 105 +++++++++++++++++++++
- drivers/ata/ahci_platform.c | 1 +
- 7 files changed, 168 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/mips/cavium/sata-uctl.txt
- create mode 100644 drivers/ata/ahci_octeon.c
-
-diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt
-index c2340ee..3d84dca 100644
---- a/Documentation/devicetree/bindings/ata/ahci-platform.txt
-+++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt
-@@ -11,6 +11,7 @@ Required properties:
- - compatible : compatible string, one of:
- - "allwinner,sun4i-a10-ahci"
- - "hisilicon,hisi-ahci"
-+ - "cavium,octeon-7130-ahci"
- - "ibm,476gtr-ahci"
- - "marvell,armada-380-ahci"
- - "snps,dwc-ahci"
-diff --git a/Documentation/devicetree/bindings/mips/cavium/sata-uctl.txt b/Documentation/devicetree/bindings/mips/cavium/sata-uctl.txt
-new file mode 100644
-index 0000000..3bd3c2f
---- /dev/null
-+++ b/Documentation/devicetree/bindings/mips/cavium/sata-uctl.txt
-@@ -0,0 +1,42 @@
-+* UCTL SATA controller glue
-+
-+UCTL is the bridge unit between the I/O interconnect (an internal bus)
-+and the SATA AHCI host controller (UAHC). It performs the following functions:
-+ - provides interfaces for the applications to access the UAHC AHCI
-+ registers on the CN71XX I/O space.
-+ - provides a bridge for UAHC to fetch AHCI command table entries and data
-+ buffers from Level 2 Cache.
-+ - posts interrupts to the CIU.
-+ - contains registers that:
-+ - control the behavior of the UAHC
-+ - control the clock/reset generation to UAHC
-+ - control endian swapping for all UAHC registers and DMA accesses
-+
-+Properties:
-+
-+- compatible: "cavium,octeon-7130-sata-uctl"
-+
-+ Compatibility with the cn7130 SOC.
-+
-+- reg: The base address of the UCTL register bank.
-+
-+- #address-cells, #size-cells, ranges and dma-ranges must be present and hold
-+ suitable values to map all child nodes.
-+
-+Example:
-+
-+ uctl at 118006c000000 {
-+ compatible = "cavium,octeon-7130-sata-uctl";
-+ reg = <0x11800 0x6c000000 0x0 0x100>;
-+ ranges; /* Direct mapping */
-+ dma-ranges;
-+ #address-cells = <2>;
-+ #size-cells = <2>;
-+
-+ sata: sata at 16c0000000000 {
-+ compatible = "cavium,octeon-7130-ahci";
-+ reg = <0x16c00 0x00000000 0x0 0x200>;
-+ interrupt-parent = <&cibsata>;
-+ interrupts = <2 4>; /* Bit: 2, level */
-+ };
-+ };
-diff --git a/arch/mips/include/asm/octeon/cvmx.h b/arch/mips/include/asm/octeon/cvmx.h
-index 774bb45..19e139c 100644
---- a/arch/mips/include/asm/octeon/cvmx.h
-+++ b/arch/mips/include/asm/octeon/cvmx.h
-@@ -275,6 +275,11 @@ static inline void cvmx_write_csr(uint64_t csr_addr, uint64_t val)
- cvmx_read64(CVMX_MIO_BOOT_BIST_STAT);
- }
-
-+static inline void cvmx_writeq_csr(void __iomem *csr_addr, uint64_t val)
-+{
-+ cvmx_write_csr((__force uint64_t)csr_addr, val);
-+}
-+
- static inline void cvmx_write_io(uint64_t io_addr, uint64_t val)
- {
- cvmx_write64(io_addr, val);
-@@ -287,6 +292,10 @@ static inline uint64_t cvmx_read_csr(uint64_t csr_addr)
- return val;
- }
-
-+static inline uint64_t cvmx_readq_csr(void __iomem *csr_addr)
-+{
-+ return cvmx_read_csr((__force uint64_t) csr_addr);
-+}
-
- static inline void cvmx_send_single(uint64_t data)
- {
-diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
-index 861643ea..9c15828 100644
---- a/drivers/ata/Kconfig
-+++ b/drivers/ata/Kconfig
-@@ -151,6 +151,15 @@ config AHCI_MVEBU
-
- If unsure, say N.
-
-+config AHCI_OCTEON
-+ tristate "Cavium Octeon Soc Serial ATA"
-+ depends on SATA_AHCI_PLATFORM && CAVIUM_OCTEON_SOC
-+ default y
-+ help
-+ This option enables support for Cavium Octeon SoC Serial ATA.
-+
-+ If unsure, say N.
-+
- config AHCI_SUNXI
- tristate "Allwinner sunxi AHCI SATA support"
- depends on ARCH_SUNXI
-diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
-index af45eff..1857952 100644
---- a/drivers/ata/Makefile
-+++ b/drivers/ata/Makefile
-@@ -15,6 +15,7 @@ obj-$(CONFIG_AHCI_CEVA) += ahci_ceva.o libahci.o libahci_platform.o
- obj-$(CONFIG_AHCI_DA850) += ahci_da850.o libahci.o libahci_platform.o
- obj-$(CONFIG_AHCI_IMX) += ahci_imx.o libahci.o libahci_platform.o
- obj-$(CONFIG_AHCI_MVEBU) += ahci_mvebu.o libahci.o libahci_platform.o
-+obj-$(CONFIG_AHCI_OCTEON) += ahci_octeon.o
- obj-$(CONFIG_AHCI_SUNXI) += ahci_sunxi.o libahci.o libahci_platform.o
- obj-$(CONFIG_AHCI_ST) += ahci_st.o libahci.o libahci_platform.o
- obj-$(CONFIG_AHCI_TEGRA) += ahci_tegra.o libahci.o libahci_platform.o
-diff --git a/drivers/ata/ahci_octeon.c b/drivers/ata/ahci_octeon.c
-new file mode 100644
-index 0000000..ea865fe
---- /dev/null
-+++ b/drivers/ata/ahci_octeon.c
-@@ -0,0 +1,105 @@
-+/*
-+ * SATA glue for Cavium Octeon III SOCs.
-+ *
-+ *
-+ * This file is subject to the terms and conditions of the GNU General Public
-+ * License. See the file "COPYING" in the main directory of this archive
-+ * for more details.
-+ *
-+ * Copyright (C) 2010-2015 Cavium Networks
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/dma-mapping.h>
-+#include <linux/platform_device.h>
-+#include <linux/of_platform.h>
-+
-+#include <asm/octeon/octeon.h>
-+#include <asm/bitfield.h>
-+
-+#define CVMX_SATA_UCTL_SHIM_CFG 0xE8
-+
-+#define SATA_UCTL_ENDIAN_MODE_BIG 1
-+#define SATA_UCTL_ENDIAN_MODE_LITTLE 0
-+#define SATA_UCTL_ENDIAN_MODE_MASK 3
-+
-+#define SATA_UCTL_DMA_ENDIAN_MODE_SHIFT 8
-+#define SATA_UCTL_CSR_ENDIAN_MODE_SHIFT 0
-+#define SATA_UCTL_DMA_READ_CMD_SHIFT 12
-+
-+static int ahci_octeon_probe(struct platform_device *pdev)
-+{
-+ struct device *dev = &pdev->dev;
-+ struct device_node *node = dev->of_node;
-+ struct resource *res;
-+ void __iomem *base;
-+ u64 cfg;
-+ int ret;
-+
-+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-+ if (!res) {
-+ dev_err(&pdev->dev, "Platform resource[0] is missing\n");
-+ return -ENODEV;
-+ }
-+
-+ base = devm_ioremap_resource(&pdev->dev, res);
-+ if (IS_ERR(base))
-+ return PTR_ERR(base);
-+
-+ cfg = cvmx_readq_csr(base + CVMX_SATA_UCTL_SHIM_CFG);
-+
-+ cfg &= ~(SATA_UCTL_ENDIAN_MODE_MASK << SATA_UCTL_DMA_ENDIAN_MODE_SHIFT);
-+ cfg &= ~(SATA_UCTL_ENDIAN_MODE_MASK << SATA_UCTL_CSR_ENDIAN_MODE_SHIFT);
-+
-+#ifdef __BIG_ENDIAN
-+ cfg |= SATA_UCTL_ENDIAN_MODE_BIG << SATA_UCTL_DMA_ENDIAN_MODE_SHIFT;
-+ cfg |= SATA_UCTL_ENDIAN_MODE_BIG << SATA_UCTL_CSR_ENDIAN_MODE_SHIFT;
-+#else
-+ cfg |= SATA_UCTL_ENDIAN_MODE_LITTLE << SATA_UCTL_DMA_ENDIAN_MODE_SHIFT;
-+ cfg |= SATA_UCTL_ENDIAN_MODE_LITTLE << SATA_UCTL_CSR_ENDIAN_MODE_SHIFT;
-+#endif
-+
-+ cfg |= 1 << SATA_UCTL_DMA_READ_CMD_SHIFT;
-+
-+ cvmx_writeq_csr(base + CVMX_SATA_UCTL_SHIM_CFG, cfg);
-+
-+ if (!node) {
-+ dev_err(dev, "no device node, failed to add octeon sata\n");
-+ return -ENODEV;
-+ }
-+
-+ ret = of_platform_populate(node, NULL, NULL, dev);
-+ if (ret) {
-+ dev_err(dev, "failed to add ahci-platform core\n");
-+ return ret;
-+ }
-+
-+ return 0;
-+}
-+
-+static int ahci_octeon_remove(struct platform_device *pdev)
-+{
-+ return 0;
-+}
-+
-+static const struct of_device_id octeon_ahci_match[] = {
-+ { .compatible = "cavium,octeon-7130-sata-uctl", },
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, octeon_ahci_match);
-+
-+static struct platform_driver ahci_octeon_driver = {
-+ .probe = ahci_octeon_probe,
-+ .remove = ahci_octeon_remove,
-+ .driver = {
-+ .name = "octeon-ahci",
-+ .of_match_table = octeon_ahci_match,
-+ },
-+};
-+
-+module_platform_driver(ahci_octeon_driver);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_AUTHOR("Cavium, Inc. <support at cavium.com>");
-+MODULE_DESCRIPTION("Cavium Inc. sata config.");
-diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
-index 04975b8..4044233 100644
---- a/drivers/ata/ahci_platform.c
-+++ b/drivers/ata/ahci_platform.c
-@@ -76,6 +76,7 @@ static const struct of_device_id ahci_of_match[] = {
- { .compatible = "ibm,476gtr-ahci", },
- { .compatible = "snps,dwc-ahci", },
- { .compatible = "hisilicon,hisi-ahci", },
-+ { .compatible = "cavium,octeon-7130-ahci", },
- {},
- };
- MODULE_DEVICE_TABLE(of, ahci_of_match);
---
-2.8.0.rc3
-
diff --git a/debian/patches/features/sparc/hwrng-n2-attach-on-t5-m5-t7-m7-sparc-cpus.patch b/debian/patches/features/sparc/hwrng-n2-attach-on-t5-m5-t7-m7-sparc-cpus.patch
deleted file mode 100644
index 972989a..0000000
--- a/debian/patches/features/sparc/hwrng-n2-attach-on-t5-m5-t7-m7-sparc-cpus.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From: Anatoly Pugachev <matorola at gmail.com>
-Date: Tue, 26 Jan 2016 00:19:02 +0300
-Subject: hwrng: n2 - Attach on T5/M5, T7/M7 SPARC CPUs
-Origin: https://git.kernel.org/cgit/linux/kernel/git/herbert/cryptodev-2.6.git/commit?id=c1e9b3b0eea12899b7749571af21cc60822cf2b6
-Bug-Debian: https://bugs.debian.org/809815
-
-n2rng: Attach on T5/M5, T7/M7 SPARC CPUs
-
-(space to tab fixes after variable names)
-
-Signed-off-by: Anatoly Pugachev <matorola at gmail.com>
-Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
----
- drivers/char/hw_random/n2-drv.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/drivers/char/hw_random/n2-drv.c b/drivers/char/hw_random/n2-drv.c
-index 843d6f6aee7a..3b06c1d6cfb2 100644
---- a/drivers/char/hw_random/n2-drv.c
-+++ b/drivers/char/hw_random/n2-drv.c
-@@ -743,6 +743,16 @@ static const struct of_device_id n2rng_match[] = {
- .compatible = "SUNW,kt-rng",
- .data = (void *) 1,
- },
-+ {
-+ .name = "random-number-generator",
-+ .compatible = "ORCL,m4-rng",
-+ .data = (void *) 1,
-+ },
-+ {
-+ .name = "random-number-generator",
-+ .compatible = "ORCL,m7-rng",
-+ .data = (void *) 1,
-+ },
- {},
- };
- MODULE_DEVICE_TABLE(of, n2rng_match);
diff --git a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
index 5bf7cf4..77f0128 100644
--- a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
+++ b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
@@ -28,7 +28,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
-@@ -3580,6 +3580,10 @@ bytes respectively. Such letter suffixes
+@@ -3793,6 +3793,10 @@ bytes respectively. Such letter suffixes
switches= [HW,M68k]
@@ -41,7 +41,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
on older distributions. When this option is enabled
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -2547,6 +2547,14 @@ config X86_X32
+@@ -2690,6 +2690,14 @@ config X86_X32
elf32_x86_64 support enabled to compile a kernel with this
option set.
@@ -82,7 +82,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
# error "The following code assumes __USER32_DS == __USER_DS"
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
-@@ -178,8 +178,12 @@ entry_SYSCALL_64_fastpath:
+@@ -193,8 +193,12 @@ entry_SYSCALL_64_fastpath:
#if __SYSCALL_MASK == ~0
cmpq $__NR_syscall_max, %rax
#else
@@ -97,25 +97,10 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
#endif
ja 1f /* return -ENOSYS (already in pt_regs->ax) */
movq %r10, %rcx
-@@ -257,8 +261,12 @@ tracesys_phase2:
- #if __SYSCALL_MASK == ~0
- cmpq $__NR_syscall_max, %rax
- #else
-- andl $__SYSCALL_MASK, %eax
-- cmpl $__NR_syscall_max, %eax
-+.global system_call_trace_compare
-+.global system_call_trace_compare_end
-+system_call_trace_compare:
-+ cmpq $511, %rax /* x32 syscalls start at 512 */
-+ .byte P6_NOP4
-+system_call_trace_compare_end:
- #endif
- ja 1f /* return -ENOSYS (already in pt_regs->ax) */
- movq %r10, %rcx /* fixup for C */
-@@ -410,6 +418,16 @@ opportunistic_sysret_failed:
+@@ -324,6 +328,16 @@ opportunistic_sysret_failed:
+ jmp restore_c_regs_and_iret
END(entry_SYSCALL_64)
-
+#if __SYSCALL_MASK != ~0
+ /* This replaces the usual comparisons if syscall.x32 is set */
+.global system_call_mask_compare
@@ -126,9 +111,9 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+system_call_mask_compare_end:
+#endif
+
- .macro FORK_LIKE func
- ENTRY(stub_\func)
- SAVE_EXTRA_REGS 8
+ ENTRY(stub_ptregs_64)
+ /*
+ * Syscalls marked as needing ptregs land here.
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -3,8 +3,14 @@
@@ -144,9 +129,9 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
#include <asm/syscall.h>
+#include <asm/alternative.h>
- #define __SYSCALL_COMMON(nr, sym, compat) __SYSCALL_64(nr, sym, compat)
-
-@@ -30,3 +36,40 @@ asmlinkage const sys_call_ptr_t sys_call
+ #define __SYSCALL_64_QUAL_(sym) sym
+ #define __SYSCALL_64_QUAL_ptregs(sym) ptregs_##sym
+@@ -25,3 +31,36 @@ asmlinkage const sys_call_ptr_t sys_call
[0 ... __NR_syscall_max] = &sys_ni_syscall,
#include <asm/syscalls_64.h>
};
@@ -159,20 +144,16 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+module_param_named(x32, x32_enabled, bool, 0444);
+
+extern char system_call_fast_compare_end[], system_call_fast_compare[],
-+ system_call_trace_compare_end[], system_call_trace_compare[],
+ system_call_mask_compare_end[], system_call_mask_compare[];
+
+static int __init x32_enable(void)
+{
+ BUG_ON(system_call_fast_compare_end - system_call_fast_compare != 10);
-+ BUG_ON(system_call_trace_compare_end - system_call_trace_compare != 10);
+ BUG_ON(system_call_mask_compare_end - system_call_mask_compare != 10);
+
+ if (x32_enabled) {
+ text_poke_early(system_call_fast_compare,
+ system_call_mask_compare, 10);
-+ text_poke_early(system_call_trace_compare,
-+ system_call_mask_compare, 10);
+#ifdef CONFIG_X86_X32_DISABLED
+ pr_info("Enabled x32 syscalls\n");
+#endif
@@ -187,3 +168,35 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
+late_initcall(x32_enable);
+
+#endif
+--- a/arch/x86/entry/common.c
++++ b/arch/x86/entry/common.c
+@@ -334,6 +334,7 @@ __visible void do_syscall_64(struct pt_r
+ {
+ struct thread_info *ti = pt_regs_to_thread_info(regs);
+ unsigned long nr = regs->orig_ax;
++ unsigned int syscall_mask, nr_syscalls_enabled;
+
+ enter_from_user_mode();
+ local_irq_enable();
+@@ -346,8 +347,19 @@ __visible void do_syscall_64(struct pt_r
+ * table. The only functional difference is the x32 bit in
+ * regs->orig_ax, which changes the behavior of some syscalls.
+ */
+- if (likely((nr & __SYSCALL_MASK) < NR_syscalls)) {
+- regs->ax = sys_call_table[nr & __SYSCALL_MASK](
++ if (__SYSCALL_MASK == ~0U || x32_enabled) {
++ syscall_mask = __SYSCALL_MASK;
++ nr_syscalls_enabled = NR_syscalls;
++ } else {
++ /*
++ * x32 syscalls present but not enabled. Don't mask out
++ * the x32 flag and don't enable any x32-specific calls.
++ */
++ syscall_mask = ~0U;
++ nr_syscalls_enabled = 512;
++ }
++ if (likely((nr & syscall_mask) < nr_syscalls_enabled)) {
++ regs->ax = sys_call_table[nr & syscall_mask](
+ regs->di, regs->si, regs->dx,
+ regs->r10, regs->r8, regs->r9);
+ }
diff --git a/debian/patches/series b/debian/patches/series
index 409be86..c6db96a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -14,7 +14,6 @@ debian/tools-perf-install.patch
# Fixes/improvements to firmware loading
features/all/drivers-media-dvb-usb-af9005-request_firmware.patch
debian/iwlwifi-do-not-request-unreleased-firmware.patch
-bugfix/all/firmware_class-return-specific-errors-from-file-read.patch
bugfix/all/firmware_class-log-every-success-and-failure.patch
bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
@@ -45,40 +44,25 @@ debian/snd-pcsp-disable-autoload.patch
bugfix/x86/viafb-autoload-on-olpc-xo1.5-only.patch
# Arch bug fixes
-bugfix/x86/vmxnet3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch
-bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch
# Arch features
features/mips/MIPS-increase-MAX-PHYSMEM-BITS-on-Loongson-3-only.patch
features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch
features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch
-features/mips/libata-support-AHCI-on-OCTEON-platform.patch
features/mips/MIPS-Octeon-Add-Octeon-III-CN7xxx-interface-detection.patch
features/x86/x86-memtest-WARN-if-bad-RAM-found.patch
features/x86/x86-make-x32-syscall-support-conditional.patch
-features/sparc/hwrng-n2-attach-on-t5-m5-t7-m7-sparc-cpus.patch
-features/arm/device-tree/ARM-dts-imx6dlq-wandboard-revb1.dts-use-unique-model-id.patch
-features/arm/device-tree/ARM-dts-kirkwood-relicense-dts-of-ls-wvl-vl-and-ls-wxl-ws.patch
-features/arm/device-tree/ARM-dts-kirkwood-split-lswxl-dts-to-linkstation-lswsxl-an.patch
-features/arm/device-tree/ARM-dts-kirkwood-split-lswvl-dts-to-linkstation-lsvl-and-.patch
-features/arm/device-tree/ARM-dts-kirkwood-add-for-buffalo-linkstation-ls-qvl.patch
-features/arm/device-tree/ARM-dts-orion5x-split-linkstation-lswtgl-into-common-and-.patch
-features/arm/device-tree/ARM-dts-orion5x-add-for-buffalo-linkstation-ls-gl.patch
features/arm/device-tree/ARM-dts-kirkwood-add-kirkwood-ds112.dtb-to-Makefile.patch
features/arm/device-tree/ARM-dts-kirkwood-add-kirkwood-nsa320.dtb-to-Makefile.patch
features/arm/device-tree/ARM-dts-orion5x-add-device-tree-for-kurobox-pro.patch
# Miscellaneous bug fixes
-bugfix/all/misc-bmp085-Enable-building-as-a-module.patch
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
bugfix/all/disable-some-marvell-phys.patch
bugfix/all/rtsx_usb_ms-use-msleep_interruptible-in-polling-loop.patch
-bugfix/all/mm-zone_device-depends-on-sparsemem_vmemmap.patch
bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
# Miscellaneous features
-features/all/mm-exclude-zone_device-from-gfp_zone_table.patch
-features/all/nbd-create-size-change-events-for-userspace.patch
# Hardening from grsecurity
features/all/grsecurity/grsecurity-kconfig.patch
@@ -108,21 +92,7 @@ features/all/securelevel/enable-cold-boot-attack-mitigation.patch
# Security fixes
bugfix/all/ptrace-being-capable-wrt-a-process-requires-mapped-uids-gids.patch
-bugfix/x86/x86-mm-page-align-the-_end-symbol-to-avoid-pfn-conve.patch
-bugfix/x86/x86-mm-pat-ensure-cpa-pfn-only-contains-page-frame-n.patch
-bugfix/x86/x86-efi-map-ram-into-the-identity-page-table-for-mix.patch
-bugfix/x86/x86-efi-hoist-page-table-switching-code-into-efi_cal.patch
-bugfix/x86/x86-efi-build-our-own-page-table-structures.patch
-bugfix/x86/x86-efi-setup-separate-efi-page-tables-in-kexec-path.patch
debian/i386-686-pae-pci-set-pci-nobios-by-default.patch
-bugfix/x86/x86-efi-bgrt-fix-kernel-panic-when-mapping-bgrt-data.patch
-bugfix/x86/x86-efi-bgrt-replace-early_memremap-with-memremap.patch
-bugfix/x86/x86-mm-pat-fix-boot-crash-when-1gb-pages-are-not-supported.patch
-bugfix/all/netfilter-x_tables-check-for-size-overflow.patch
-bugfix/all/netfilter-x_tables-validate-e-target_offset-early.patch
-bugfix/all/netfilter-x_tables-make-sure-e-next_offset-covers-re.patch
-bugfix/all/ipv4-don-t-do-expensive-useless-work-during-inetdev-.patch
-bugfix/x86/x86-mm-32-enable-full-randomization-on-i386-and-x86_.patch
# Tools bug fixes
bugfix/all/usbip-document-tcp-wrappers.patch
@@ -137,7 +107,6 @@ bugfix/all/tools-lib-lockdep-use-ldflags.patch
bugfix/x86/tools-hv-fix-fortify-format-warning.patch
bugfix/x86/revert-perf-build-fix-libunwind-feature-detection-on.patch
bugfix/alpha/alpha-uapi-add-support-for-__sane_userspace_types__.patch
-bugfix/all/perf-fix-misleadingly-indented-assignment-whitespace.patch
bugfix/x86/perf-tools-fix-unused-variables-x86_-32-64-_regoffse.patch
bugfix/x86/revert-perf-tools-x86-build-perf-on-older-user-space.patch
bugfix/all/lockdep-add-missing-macros.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git
More information about the Kernel-svn-changes
mailing list