Update to 3.8

Refresh/drop patches as appropriate.
Update aufs to aufs3.x-rcN-20130204.

svn path=/dists/trunk/linux/; revision=19826
This commit is contained in:
Ben Hutchings 2013-02-19 06:36:33 +00:00
parent cdf72380bf
commit 7ee04719e6
19 changed files with 422 additions and 1666 deletions

9
debian/changelog vendored
View File

@ -1,3 +1,12 @@
linux (3.8-1~experimental.1) UNRELEASED; urgency=low
* New upstream release: http://kernelnewbies.org/Linux_3.8
[ Ben Hutchings ]
* aufs: Update to aufs3.x-rcN-20130204
-- Ben Hutchings <ben@decadent.org.uk> Tue, 19 Feb 2013 05:46:20 +0000
linux (3.7.8-1~experimental.1) experimental; urgency=low
* New upstream stable update:

View File

@ -1,133 +0,0 @@
From: Kees Cook <keescook@chromium.org>
Date: Thu, 6 Dec 2012 17:00:21 +1100
Subject: [2/2] exec: use -ELOOP for max recursion depth
commit a4706fd3dc5d23f58da814d03f3ef92fd9a4fc16 upstream.
To avoid an explosion of request_module calls on a chain of abusive
scripts, fail maximum recursion with -ELOOP instead of -ENOEXEC. As soon
as maximum recursion depth is hit, the error will fail all the way back
up the chain, aborting immediately.
This also has the side-effect of stopping the user's shell from attempting
to reexecute the top-level file as a shell script. As seen in the
dash source:
if (cmd != path_bshell && errno == ENOEXEC) {
*argv-- = cmd;
*argv = cmd = path_bshell;
goto repeat;
}
The above logic was designed for running scripts automatically that lacked
the "#!" header, not to re-try failed recursion. On a legitimate -ENOEXEC,
things continue to behave as the shell expects.
Additionally, when tracking recursion, the binfmt handlers should not be
involved. The recursion being tracked is the depth of calls through
search_binary_handler(), so that function should be exclusively responsible
for tracking the depth.
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: halfdog <me@halfdog.net>
Cc: P J P <ppandit@redhat.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
[bwh: Backported to 3.6: adjust context]
---
fs/binfmt_em86.c | 1 -
fs/binfmt_misc.c | 6 ------
fs/binfmt_script.c | 4 +---
fs/exec.c | 10 +++++-----
include/linux/binfmts.h | 2 --
5 files changed, 6 insertions(+), 17 deletions(-)
--- a/fs/binfmt_em86.c
+++ b/fs/binfmt_em86.c
@@ -42,7 +42,6 @@ static int load_em86(struct linux_binprm
return -ENOEXEC;
}
- bprm->recursion_depth++; /* Well, the bang-shell is implicit... */
allow_write_access(bprm->file);
fput(bprm->file);
bprm->file = NULL;
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -117,10 +117,6 @@ static int load_misc_binary(struct linux
if (!enabled)
goto _ret;
- retval = -ENOEXEC;
- if (bprm->recursion_depth > BINPRM_MAX_RECURSION)
- goto _ret;
-
/* to keep locking time low, we copy the interpreter string */
read_lock(&entries_lock);
fmt = check_file(bprm);
@@ -200,8 +196,6 @@ static int load_misc_binary(struct linux
if (retval < 0)
goto _error;
- bprm->recursion_depth++;
-
retval = search_binary_handler (bprm, regs);
if (retval < 0)
goto _error;
--- a/fs/binfmt_script.c
+++ b/fs/binfmt_script.c
@@ -22,15 +22,13 @@ static int load_script(struct linux_binp
char interp[BINPRM_BUF_SIZE];
int retval;
- if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!') ||
- (bprm->recursion_depth > BINPRM_MAX_RECURSION))
+ if ((bprm->buf[0] != '#') || (bprm->buf[1] != '!'))
return -ENOEXEC;
/*
* This section does the #! interpretation.
* Sorta complicated, but hopefully it will work. -TYT
*/
- bprm->recursion_depth++;
allow_write_access(bprm->file);
fput(bprm->file);
bprm->file = NULL;
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1371,6 +1371,10 @@ int search_binary_handler(struct linux_b
struct linux_binfmt *fmt;
pid_t old_pid, old_vpid;
+ /* This allows 4 levels of binfmt rewrites before failing hard. */
+ if (depth > 5)
+ return -ELOOP;
+
retval = security_bprm_check(bprm);
if (retval)
return retval;
@@ -1395,12 +1399,8 @@ int search_binary_handler(struct linux_b
if (!try_module_get(fmt->module))
continue;
read_unlock(&binfmt_lock);
+ bprm->recursion_depth = depth + 1;
retval = fn(bprm, regs);
- /*
- * Restore the depth counter to its starting value
- * in this call, so we don't have to rely on every
- * load_binary function to restore it on return.
- */
bprm->recursion_depth = depth;
if (retval >= 0) {
if (depth == 0) {
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -54,8 +54,6 @@ struct linux_binprm {
#define BINPRM_FLAGS_EXECFD_BIT 1
#define BINPRM_FLAGS_EXECFD (1 << BINPRM_FLAGS_EXECFD_BIT)
-#define BINPRM_MAX_RECURSION 4
-
/* Function parameter for binfmt->coredump */
struct coredump_params {
siginfo_t *siginfo;

View File

@ -66,7 +66,7 @@ upstream submission.
if (*(u32 *)fw->data != UCODE_MAGIC) {
--- a/drivers/atm/ambassador.c
+++ b/drivers/atm/ambassador.c
@@ -1926,10 +1926,8 @@ static int __devinit ucode_init (loader_
@@ -1929,10 +1929,8 @@ static int ucode_init(loader_block *lb,
int res;
res = request_ihex_firmware(&fw, "atmsar11.fw", &dev->pci_dev->dev);
@ -80,7 +80,7 @@ upstream submission.
rec = (const struct ihex_binrec *)fw->data;
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -2519,10 +2519,9 @@ fore200e_load_and_start_fw(struct fore20
@@ -2505,10 +2505,9 @@ static int fore200e_load_and_start_fw(st
return err;
sprintf(buf, "%s%s", fore200e->bus->proc_name, FW_EXT);
@ -95,7 +95,7 @@ upstream submission.
fw_size = firmware->size / sizeof(u32);
--- a/drivers/bluetooth/ath3k.c
+++ b/drivers/bluetooth/ath3k.c
@@ -307,10 +307,8 @@ static int ath3k_load_patch(struct usb_d
@@ -317,10 +317,8 @@ static int ath3k_load_patch(struct usb_d
fw_version.rom_version);
ret = request_firmware(&firmware, filename, &udev->dev);
@ -107,7 +107,7 @@ upstream submission.
pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8);
pt_version.build_version = *(int *)
@@ -369,10 +367,8 @@ static int ath3k_load_syscfg(struct usb_
@@ -379,10 +377,8 @@ static int ath3k_load_syscfg(struct usb_
fw_version.rom_version, clk_value, ".dfu");
ret = request_firmware(&firmware, filename, &udev->dev);
@ -202,7 +202,7 @@ upstream submission.
fw->size, fw_name);
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -1164,10 +1164,8 @@ static void sdma_load_firmware(const str
@@ -1163,10 +1163,8 @@ static void sdma_load_firmware(const str
const struct sdma_script_start_addrs *addr;
unsigned short *ram_code;
@ -287,7 +287,7 @@ upstream submission.
rdev->me_fw->size, fw_name);
--- a/drivers/gpu/drm/radeon/r600.c
+++ b/drivers/gpu/drm/radeon/r600.c
@@ -2020,10 +2020,6 @@ out:
@@ -2099,10 +2099,6 @@ out:
platform_device_unregister(pdev);
if (err) {
@ -313,7 +313,7 @@ upstream submission.
release_firmware(dev_priv->me_fw);
--- a/drivers/gpu/drm/radeon/radeon_cp.c
+++ b/drivers/gpu/drm/radeon/radeon_cp.c
@@ -542,10 +542,7 @@ static int radeon_cp_init_microcode(drm_
@@ -528,10 +528,7 @@ static int radeon_cp_init_microcode(drm_
err = request_firmware(&dev_priv->me_fw, fw_name, &pdev->dev);
platform_device_unregister(pdev);
@ -533,7 +533,7 @@ upstream submission.
if (state->microcode == NULL) {
--- a/drivers/media/dvb-frontends/drxk_hard.c
+++ b/drivers/media/dvb-frontends/drxk_hard.c
@@ -6275,12 +6275,6 @@ static void load_firmware_cb(const struc
@@ -6261,12 +6261,6 @@ static void load_firmware_cb(const struc
dprintk(1, ": %s\n", fw ? "firmware loaded" : "firmware not loaded");
if (!fw) {
@ -548,7 +548,7 @@ upstream submission.
/*
--- a/drivers/media/dvb-frontends/ds3000.c
+++ b/drivers/media/dvb-frontends/ds3000.c
@@ -406,12 +406,8 @@ static int ds3000_firmware_ondemand(stru
@@ -401,12 +401,8 @@ static int ds3000_firmware_ondemand(stru
DS3000_DEFAULT_FIRMWARE);
ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
state->i2c->dev.parent);
@ -560,8 +560,8 @@ upstream submission.
return ret;
- }
/* Make sure we don't recurse back through here during loading */
state->skip_fw_load = 1;
ret = ds3000_load_firmware(fe, fw);
if (ret)
--- a/drivers/media/dvb-frontends/nxt200x.c
+++ b/drivers/media/dvb-frontends/nxt200x.c
@@ -882,12 +882,8 @@ static int nxt2002_init(struct dvb_front
@ -686,7 +686,7 @@ upstream submission.
printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
--- a/drivers/media/dvb-frontends/tda10071.c
+++ b/drivers/media/dvb-frontends/tda10071.c
@@ -939,14 +939,8 @@ static int tda10071_init(struct dvb_fron
@@ -941,14 +941,8 @@ static int tda10071_init(struct dvb_fron
/* request the firmware, this will block and timeout */
ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent);
@ -838,7 +838,7 @@ upstream submission.
fw_data = (void *)fw_entry->data;
--- a/drivers/media/pci/bt8xx/bttv-cards.c
+++ b/drivers/media/pci/bt8xx/bttv-cards.c
@@ -3753,10 +3753,8 @@ static int __devinit pvr_boot(struct btt
@@ -3752,10 +3752,8 @@ static int pvr_boot(struct bttv *btv)
int rc;
rc = request_firmware(&fw_entry, "hcwamc.rbf", &btv->c.pci->dev);
@ -992,7 +992,7 @@ upstream submission.
--- a/drivers/media/pci/cx88/cx88-blackbird.c
+++ b/drivers/media/pci/cx88/cx88-blackbird.c
@@ -447,13 +447,8 @@ static int blackbird_load_firmware(struc
@@ -448,13 +448,8 @@ static int blackbird_load_firmware(struc
&dev->pci->dev);
@ -1208,7 +1208,7 @@ upstream submission.
fw_tx->size, FIRMWARE_TX);
--- a/drivers/net/ethernet/alteon/acenic.c
+++ b/drivers/net/ethernet/alteon/acenic.c
@@ -2902,11 +2902,8 @@ static int __devinit ace_load_firmware(s
@@ -2902,11 +2902,8 @@ static int ace_load_firmware(struct net_
fw_name = "acenic/tg1.bin";
ret = request_firmware(&fw, fw_name, &ap->pdev->dev);
@ -1223,7 +1223,7 @@ upstream submission.
--- a/drivers/net/ethernet/broadcom/bnx2.c
+++ b/drivers/net/ethernet/broadcom/bnx2.c
@@ -3676,16 +3676,13 @@ static int bnx2_request_uncached_firmwar
@@ -3680,16 +3680,13 @@ static int bnx2_request_uncached_firmwar
}
rc = request_firmware(&bp->mips_firmware, mips_fw_file, &bp->pdev->dev);
@ -1245,7 +1245,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
@@ -11645,11 +11645,8 @@ static int bnx2x_init_firmware(struct bn
@@ -11939,11 +11939,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);
@ -1260,7 +1260,7 @@ upstream submission.
if (rc) {
--- a/drivers/net/ethernet/broadcom/tg3.c
+++ b/drivers/net/ethernet/broadcom/tg3.c
@@ -10161,11 +10161,8 @@ static int tg3_request_firmware(struct t
@@ -10449,11 +10449,8 @@ static int tg3_request_firmware(struct t
{
const __be32 *fw_data;
@ -1331,7 +1331,7 @@ upstream submission.
if (ret)
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -918,11 +918,8 @@ static int upgrade_fw(struct adapter *ad
@@ -1008,11 +1008,8 @@ static int upgrade_fw(struct adapter *ad
struct device *dev = adap->pdev_dev;
ret = request_firmware(&fw, FW_FNAME, dev);
@ -1358,7 +1358,7 @@ upstream submission.
netif_info(nic, probe, nic->netdev,
--- a/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
+++ b/drivers/net/ethernet/myricom/myri10ge/myri10ge.c
@@ -594,8 +594,6 @@ static int myri10ge_load_hotplug_firmwar
@@ -584,8 +584,6 @@ static int myri10ge_load_hotplug_firmwar
unsigned i;
if ((status = request_firmware(&fw, mgp->fw_name, dev)) < 0) {
@ -1451,16 +1451,15 @@ upstream submission.
} else
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -1554,14 +1554,8 @@ static struct fwentry *at76_load_firmwar
@@ -1553,13 +1553,8 @@ static struct fwentry *at76_load_firmwar
at76_dbg(DBG_FW, "downloading firmware %s", fwe->fwname);
ret = request_firmware(&fwe->fw, fwe->fwname, &udev->dev);
- if (ret < 0) {
- dev_printk(KERN_ERR, &udev->dev, "firmware %s not found!\n",
- fwe->fwname);
- dev_printk(KERN_ERR, &udev->dev,
- "you may need to download the firmware from "
- "http://developer.berlios.de/projects/at76c503a/\n");
- dev_err(&udev->dev, "firmware %s not found!\n",
- fwe->fwname);
- dev_err(&udev->dev,
- "you may need to download the firmware from http://developer.berlios.de/projects/at76c503a/\n");
+ if (ret)
goto exit;
- }
@ -1485,7 +1484,7 @@ upstream submission.
&hif_dev->udev->dev);
--- a/drivers/net/wireless/ath/carl9170/usb.c
+++ b/drivers/net/wireless/ath/carl9170/usb.c
@@ -1018,7 +1018,6 @@ static void carl9170_usb_firmware_step2(
@@ -1025,7 +1025,6 @@ static void carl9170_usb_firmware_step2(
return;
}
@ -1549,24 +1548,24 @@ upstream submission.
hdr = (struct b43legacy_fw_header *)((*fw)->data);
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -3220,10 +3220,8 @@ static int brcmf_sdbrcm_download_code_fi
@@ -3208,10 +3208,8 @@ static int brcmf_sdbrcm_download_code_fi
ret = request_firmware(&bus->firmware, BRCMF_SDIO_FW_NAME,
&bus->sdiodev->func[2]->dev);
- if (ret) {
- brcmf_dbg(ERROR, "Fail to request firmware %d\n", ret);
- brcmf_err("Fail to request firmware %d\n", ret);
+ if (ret)
return ret;
- }
bus->fw_ptr = 0;
memptr = memblock = kmalloc(MEMBLOCK + BRCMF_SDALIGN, GFP_ATOMIC);
@@ -3339,10 +3337,8 @@ static int brcmf_sdbrcm_download_nvram(s
@@ -3327,10 +3325,8 @@ static int brcmf_sdbrcm_download_nvram(s
ret = request_firmware(&bus->firmware, BRCMF_SDIO_NV_NAME,
&bus->sdiodev->func[2]->dev);
- if (ret) {
- brcmf_dbg(ERROR, "Fail to request nvram %d\n", ret);
- brcmf_err("Fail to request nvram %d\n", ret);
+ if (ret)
return ret;
- }
@ -1575,7 +1574,7 @@ upstream submission.
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -784,19 +784,13 @@ static int brcms_request_fw(struct brcms
@@ -807,19 +807,13 @@ static int brcms_request_fw(struct brcms
sprintf(fw_name, "%s-%d.fw", brcms_firmwares[i],
UCODE_LOADER_API_VER);
status = request_firmware(&wl->fw.fw_bin[i], fw_name, device);
@ -1599,7 +1598,7 @@ upstream submission.
}
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
@@ -8467,12 +8467,8 @@ static int ipw2100_get_firmware(struct i
@@ -8464,12 +8464,8 @@ static int ipw2100_get_firmware(struct i
rc = request_firmware(&fw->fw_entry, fw_name, &priv->pci_dev->dev);
@ -1667,7 +1666,7 @@ upstream submission.
}
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
@@ -315,11 +315,8 @@ static void mwifiex_fw_dpc(const struct
@@ -316,11 +316,8 @@ static void mwifiex_fw_dpc(const struct
struct mwifiex_adapter *adapter = context;
struct mwifiex_fw_image fw;
@ -1682,7 +1681,7 @@ upstream submission.
adapter->firmware = firmware;
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -5300,16 +5300,12 @@ static int mwl8k_firmware_load_success(s
@@ -5320,16 +5320,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;
@ -1700,7 +1699,7 @@ upstream submission.
priv->fw_helper = fw;
rc = mwl8k_request_fw(priv, priv->fw_pref, &priv->fw_ucode,
true);
@@ -5344,11 +5340,8 @@ static void mwl8k_fw_state_machine(const
@@ -5364,11 +5360,8 @@ static void mwl8k_fw_state_machine(const
break;
case FW_STATE_LOADING_ALT:
@ -1713,7 +1712,7 @@ upstream submission.
priv->fw_ucode = fw;
rc = mwl8k_firmware_load_success(priv);
if (rc)
@@ -5386,10 +5379,8 @@ retry:
@@ -5406,10 +5399,8 @@ retry:
/* Ask userland hotplug daemon for the device firmware */
rc = mwl8k_request_firmware(priv, fw_image, nowait);
@ -1761,7 +1760,7 @@ upstream submission.
--- a/drivers/net/wireless/orinoco/orinoco_usb.c
+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
@@ -1684,7 +1684,6 @@ static int ezusb_probe(struct usb_interf
@@ -1683,7 +1683,6 @@ static int ezusb_probe(struct usb_interf
if (firmware.size && firmware.code) {
ezusb_firmware_download(upriv, &firmware);
} else {
@ -1846,7 +1845,7 @@ upstream submission.
}
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -100,7 +100,6 @@ static void rtl92se_fw_cb(const struct f
@@ -97,7 +97,6 @@ static void rtl92se_fw_cb(const struct f
"Firmware callback routine entered!\n");
complete(&rtlpriv->firmware_loading_complete);
if (!firmware) {
@ -2038,7 +2037,7 @@ upstream submission.
}
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -4993,8 +4993,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
@@ -5020,8 +5020,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
/* Load firmware blob. */
blob = qla2x00_request_firmware(vha);
if (!blob) {
@ -2047,7 +2046,7 @@ upstream submission.
ql_log(ql_log_info, vha, 0x0084,
"Firmware images can be retrieved from: "QLA_FW_URL ".\n");
return QLA_FUNCTION_FAILED;
@@ -5095,8 +5093,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
@@ -5122,8 +5120,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
/* Load firmware blob. */
blob = qla2x00_request_firmware(vha);
if (!blob) {
@ -2058,7 +2057,7 @@ upstream submission.
QLA_FW_URL ".\n");
--- a/drivers/scsi/qla2xxx/qla_nx.c
+++ b/drivers/scsi/qla2xxx/qla_nx.c
@@ -2463,11 +2463,8 @@ try_blob_fw:
@@ -2440,11 +2440,8 @@ try_blob_fw:
/* Load firmware blob. */
blob = ha->hablob = qla2x00_request_firmware(vha);
@ -2073,7 +2072,7 @@ upstream submission.
if (qla82xx_validate_firmware_blob(vha,
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -4889,8 +4889,6 @@ qla2x00_request_firmware(scsi_qla_host_t
@@ -4902,8 +4902,6 @@ qla2x00_request_firmware(scsi_qla_host_t
goto out;
if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
@ -2084,7 +2083,7 @@ upstream submission.
goto out;
--- a/drivers/scsi/qlogicpti.c
+++ b/drivers/scsi/qlogicpti.c
@@ -475,11 +475,8 @@ static int __devinit qlogicpti_load_firm
@@ -475,11 +475,8 @@ static int qlogicpti_load_firmware(struc
int i, timeout;
err = request_firmware(&fw, fwname, &qpti->op->dev);
@ -2099,7 +2098,7 @@ upstream submission.
fw->size, fwname);
--- a/drivers/staging/comedi/drivers/usbdux.c
+++ b/drivers/staging/comedi/drivers/usbdux.c
@@ -2428,11 +2428,8 @@ static void usbdux_firmware_request_comp
@@ -2371,11 +2371,8 @@ static void usbdux_firmware_request_comp
struct usb_interface *uinterf = usbduxsub_tmp->interface;
int ret;
@ -2114,7 +2113,7 @@ upstream submission.
* we need to upload the firmware here because fw will be
--- a/drivers/staging/comedi/drivers/usbduxsigma.c
+++ b/drivers/staging/comedi/drivers/usbduxsigma.c
@@ -2409,11 +2409,8 @@ static void usbdux_firmware_request_comp
@@ -2357,11 +2357,8 @@ static void usbdux_firmware_request_comp
struct usb_interface *uinterf = usbduxsub_tmp->interface;
int ret;
@ -2207,20 +2206,20 @@ upstream submission.
"go7007 firmware\n", fw_name);
--- a/drivers/staging/media/go7007/go7007-fw.c
+++ b/drivers/staging/media/go7007/go7007-fw.c
@@ -1576,12 +1576,8 @@ int go7007_construct_fw_image(struct go7
@@ -1575,12 +1575,8 @@ int go7007_construct_fw_image(struct go7
default:
return -1;
}
- if (request_firmware(&fw_entry, go->board_info->firmware, go->dev)) {
- printk(KERN_ERR
- "go7007: unable to load firmware from file \"%s\"\n",
- dev_err(go->dev,
- "unable to load firmware from file \"%s\"\n",
- go->board_info->firmware);
+ if (request_firmware(&fw_entry, go->board_info->firmware, go->dev))
return -1;
- }
code = kzalloc(codespace * 2, GFP_KERNEL);
if (code == NULL) {
printk(KERN_ERR "go7007: unable to allocate %d bytes for "
dev_err(go->dev,
--- a/drivers/staging/media/go7007/s2250-loader.c
+++ b/drivers/staging/media/go7007/s2250-loader.c
@@ -98,12 +98,8 @@ static int s2250loader_probe(struct usb_
@ -2288,7 +2287,7 @@ upstream submission.
usb_set_intfdata(pusb_intf, NULL);
--- a/drivers/staging/slicoss/slicoss.c
+++ b/drivers/staging/slicoss/slicoss.c
@@ -518,11 +518,8 @@ static int slic_card_download_gbrcv(stru
@@ -485,11 +485,8 @@ static int slic_card_download_gbrcv(stru
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@ -2301,8 +2300,8 @@ upstream submission.
rcvucodelen = *(u32 *)(fw->data + index);
index += 4;
@@ -597,11 +594,8 @@ static int slic_card_download(struct ada
break;
@@ -563,11 +560,8 @@ static int slic_card_download(struct ada
return -ENOENT;
}
ret = request_firmware(&fw, file, &adapter->pcidev->dev);
- if (ret) {
@ -2313,25 +2312,26 @@ upstream submission.
- }
numsects = *(u32 *)(fw->data + index);
index += 4;
ASSERT(numsects <= 3);
for (i = 0; i < numsects; i++) {
--- a/drivers/staging/vt6656/firmware.c
+++ b/drivers/staging/vt6656/firmware.c
@@ -76,11 +76,8 @@ FIRMWAREbDownload(
int rc;
@@ -74,11 +74,8 @@ FIRMWAREbDownload(
spin_unlock_irq(&pDevice->lock);
rc = request_firmware(&pDevice->firmware, FIRMWARE_NAME, dev);
- if (rc) {
- dev_err(dev, "firmware file %s request failed (%d)\n",
- FIRMWARE_NAME, rc);
+ if (rc)
goto out;
- }
}
fw = pDevice->firmware;
rc = request_firmware(&fw, FIRMWARE_NAME, dev);
- if (rc) {
- dev_err(dev, "firmware file %s request failed (%d)\n",
- FIRMWARE_NAME, rc);
- goto out;
- }
+ if (rc)
+ goto out;
pBuffer = kmalloc(FIRMWARE_CHUNK_SIZE, GFP_KERNEL);
if (!pBuffer)
--- a/drivers/tty/cyclades.c
+++ b/drivers/tty/cyclades.c
@@ -3539,10 +3539,8 @@ static int __devinit cyz_load_fw(struct
@@ -3539,10 +3539,8 @@ static int cyz_load_fw(struct pci_dev *p
int retval;
retval = request_firmware(&fw, "cyzfirm.bin", &pdev->dev);
@ -2516,7 +2516,7 @@ upstream submission.
err = emi26_set_reset(dev,1);
--- a/drivers/usb/misc/ezusb.c
+++ b/drivers/usb/misc/ezusb.c
@@ -91,12 +91,8 @@ static int ezusb_ihex_firmware_download(
@@ -80,12 +80,8 @@ static int ezusb_ihex_firmware_download(
const struct ihex_binrec *record;
if (request_ihex_firmware(&firmware, firmware_path,
@ -2542,7 +2542,7 @@ upstream submission.
}
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -310,11 +310,8 @@ static void update_edgeport_E2PROM(struc
@@ -306,11 +306,8 @@ static void update_edgeport_E2PROM(struc
response = request_ihex_firmware(&fw, fw_name,
&edge_serial->serial->dev->dev);
@ -2557,7 +2557,7 @@ upstream submission.
BootMajorVersion = rec->data[0];
--- a/drivers/usb/serial/io_ti.c
+++ b/drivers/usb/serial/io_ti.c
@@ -845,8 +845,6 @@ static int build_i2c_fw_hdr(__u8 *header
@@ -844,8 +844,6 @@ static int build_i2c_fw_hdr(__u8 *header
err = request_firmware(&fw, fw_name, dev);
if (err) {
@ -2566,7 +2566,7 @@ upstream submission.
kfree(buffer);
return err;
}
@@ -1404,8 +1402,6 @@ static int download_fw(struct edgeport_s
@@ -1403,8 +1401,6 @@ static int download_fw(struct edgeport_s
err = request_firmware(&fw, fw_name, dev);
if (err) {
@ -2605,7 +2605,7 @@ upstream submission.
if ((fw_entry->size < 8*1024) || (fw_entry->size > 64*1024)) {
--- a/drivers/video/metronomefb.c
+++ b/drivers/video/metronomefb.c
@@ -677,10 +677,8 @@ static int __devinit metronomefb_probe(s
@@ -677,10 +677,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);
@ -2619,7 +2619,7 @@ upstream submission.
par);
--- a/sound/drivers/vx/vx_hwdep.c
+++ b/sound/drivers/vx/vx_hwdep.c
@@ -73,10 +73,8 @@ int snd_vx_setup_firmware(struct vx_core
@@ -71,10 +71,8 @@ int snd_vx_setup_firmware(struct vx_core
if (! fw_files[chip->type][i])
continue;
sprintf(path, "vx/%s", fw_files[chip->type][i]);
@ -2694,13 +2694,12 @@ upstream submission.
buf = firmware->data;
--- a/sound/pci/asihpi/hpidspcd.c
+++ b/sound/pci/asihpi/hpidspcd.c
@@ -49,9 +49,6 @@ short hpi_dsp_code_open(u32 adapter, voi
@@ -49,8 +49,6 @@ short hpi_dsp_code_open(u32 adapter, voi
err = request_firmware(&firmware, fw_name, &dev->dev);
if (err || !firmware) {
- dev_printk(KERN_ERR, &dev->dev,
- "%d, request_firmware failed for %s\n", err,
- fw_name);
- dev_err(&dev->dev, "%d, request_firmware failed for %s\n",
- err, fw_name);
goto error1;
}
if (firmware->size < sizeof(header)) {
@ -2734,26 +2733,27 @@ upstream submission.
return err;
--- a/sound/pci/emu10k1/emu10k1_main.c
+++ b/sound/pci/emu10k1/emu10k1_main.c
@@ -668,10 +668,8 @@ static int snd_emu1010_load_firmware(str
const struct firmware *fw_entry;
@@ -854,10 +854,8 @@ static int snd_emu10k1_emu1010_init(stru
}
err = request_firmware(&fw_entry, filename, &emu->pci->dev);
- if (err != 0) {
- snd_printk(KERN_ERR "firmware: %s not found. Err = %d\n", filename, err);
+ if (err != 0)
return err;
- }
snd_printk(KERN_INFO "firmware size = 0x%zx\n", fw_entry->size);
/* The FPGA is a Xilinx Spartan IIE XC2S50E */
err = request_firmware(&emu->firmware, filename, &emu->pci->dev);
- if (err != 0) {
- snd_printk(KERN_ERR "emu1010: firmware: %s not found. Err = %d\n", filename, err);
+ if (err != 0)
return err;
- }
snd_printk(KERN_INFO "emu1010: firmware file = %s, size = 0x%zx\n",
filename, emu->firmware->size);
}
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -3292,10 +3292,8 @@ static void azx_firmware_cb(const struct
@@ -3424,11 +3424,8 @@ static void azx_firmware_cb(const struct
struct azx *chip = card->private_data;
struct pci_dev *pci = chip->pci;
- if (!fw) {
- snd_printk(KERN_ERR SFX "Cannot load firmware, aborting\n");
- snd_printk(KERN_ERR SFX "%s: Cannot load firmware, aborting\n",
- pci_name(chip->pci));
+ if (!fw)
goto error;
- }
@ -2762,7 +2762,7 @@ upstream submission.
if (!chip->disabled) {
--- a/sound/pci/korg1212/korg1212.c
+++ b/sound/pci/korg1212/korg1212.c
@@ -2346,7 +2346,6 @@ static int __devinit snd_korg1212_create
@@ -2346,7 +2346,6 @@ static int snd_korg1212_create(struct sn
err = request_firmware(&dsp_code, "korg/k1212.dsp", &pci->dev);
if (err < 0) {
release_firmware(dsp_code);
@ -2772,7 +2772,7 @@ upstream submission.
}
--- a/sound/pci/mixart/mixart_hwdep.c
+++ b/sound/pci/mixart/mixart_hwdep.c
@@ -566,10 +566,8 @@ int snd_mixart_setup_firmware(struct mix
@@ -558,10 +558,8 @@ int snd_mixart_setup_firmware(struct mix
for (i = 0; i < 3; i++) {
sprintf(path, "mixart/%s", fw_files[i]);
@ -2786,7 +2786,7 @@ upstream submission.
release_firmware(fw_entry);
--- a/sound/pci/pcxhr/pcxhr_hwdep.c
+++ b/sound/pci/pcxhr/pcxhr_hwdep.c
@@ -390,11 +390,8 @@ int pcxhr_setup_firmware(struct pcxhr_mg
@@ -381,11 +381,8 @@ int pcxhr_setup_firmware(struct pcxhr_mg
if (!fw_files[fw_set][i])
continue;
sprintf(path, "pcxhr/%s", fw_files[fw_set][i]);
@ -2816,7 +2816,7 @@ upstream submission.
if (err) {
--- a/sound/pci/rme9652/hdsp.c
+++ b/sound/pci/rme9652/hdsp.c
@@ -5369,10 +5369,8 @@ static int hdsp_request_fw_loader(struct
@@ -5378,10 +5378,8 @@ static int hdsp_request_fw_loader(struct
return -EINVAL;
}
@ -2825,12 +2825,12 @@ upstream submission.
+ if (request_firmware(&fw, fwfile, &hdsp->pci->dev))
return -ENOENT;
- }
if (fw->size < sizeof(hdsp->firmware_cache)) {
if (fw->size < HDSP_FIRMWARE_SIZE) {
snd_printk(KERN_ERR "Hammerfall-DSP: too short firmware size %d (expected %d)\n",
(int)fw->size, (int)sizeof(hdsp->firmware_cache));
(int)fw->size, HDSP_FIRMWARE_SIZE);
--- a/sound/soc/codecs/wm2000.c
+++ b/sound/soc/codecs/wm2000.c
@@ -834,10 +834,8 @@ static int __devinit wm2000_i2c_probe(st
@@ -834,10 +834,8 @@ static int wm2000_i2c_probe(struct i2c_c
}
ret = request_firmware(&fw, filename, &i2c->dev);

View File

@ -1,48 +0,0 @@
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Fri, 16 Nov 2012 15:43:59 +0000
Subject: [5/5] pch_gbe, ptp_pch: Fix the dependency direction between these
drivers
commit 18d359ceb04485df0e387e04b0e52a761c4c58a0 upstream.
In commit a24006ed12616bde1bbdb26868495906a212d8dc ('ptp: Enable clock
drivers along with associated net/PHY drivers') I wrongly made
PTP_1588_CLOCK_PCH depend on PCH_GBE. The dependency is really the
other way around. Therefore make PCH_GBE select PTP_1588_CLOCK_PCH
and remove the 'default y' from the latter.
Reported-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Acked-by: Randy Dunlap <rdunlap@xenotime.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/oki-semi/pch_gbe/Kconfig | 1 +
drivers/ptp/Kconfig | 2 --
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index 00bc4fc..34d05bf 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -7,6 +7,7 @@ config PCH_GBE
depends on PCI
select NET_CORE
select MII
+ select PTP_1588_CLOCK_PCH
---help---
This is a gigabit ethernet driver for EG20T PCH.
EG20T PCH is the platform controller hub that is used in Intel's
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index 70c5836..1ea6f1d 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -72,9 +72,7 @@ config DP83640_PHY
config PTP_1588_CLOCK_PCH
tristate "Intel PCH EG20T as PTP clock"
- depends on PCH_GBE
select PTP_1588_CLOCK
- default y
help
This driver adds support for using the PCH EG20T as a PTP
clock. The hardware supports time stamping of PTP packets

View File

@ -1,77 +0,0 @@
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed, 31 Oct 2012 15:31:29 +0000
Subject: [1/5] pps, ptp: Remove dependencies on EXPERIMENTAL
commit c56283034ce28f99de494b69896528ae90cd9730 upstream.
These are now established subsystems, and we want drivers to be able
to select PPS and PTP_1588_CLOCK without depending on EXPERIMENTAL.
Further, the use of EXPERIMENTAL is now deprecated in general.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/intel/Kconfig | 4 ++--
drivers/net/ethernet/oki-semi/pch_gbe/Kconfig | 1 -
drivers/pps/Kconfig | 1 -
drivers/ptp/Kconfig | 1 -
4 files changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
index 0cafe4f..9e49217 100644
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -123,7 +123,7 @@ config IGB_DCA
config IGB_PTP
bool "PTP Hardware Clock (PHC)"
default n
- depends on IGB && EXPERIMENTAL
+ depends on IGB
select PPS
select PTP_1588_CLOCK
---help---
@@ -225,7 +225,7 @@ config IXGBE_DCB
config IXGBE_PTP
bool "PTP Clock Support"
default n
- depends on IXGBE && EXPERIMENTAL
+ depends on IXGBE
select PPS
select PTP_1588_CLOCK
---help---
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index 5296cc8..9867bc6 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -26,7 +26,6 @@ if PCH_GBE
config PCH_PTP
bool "PCH PTP clock support"
default n
- depends on EXPERIMENTAL
select PPS
select PTP_1588_CLOCK
select PTP_1588_CLOCK_PCH
diff --git a/drivers/pps/Kconfig b/drivers/pps/Kconfig
index 258ca59..982d16b 100644
--- a/drivers/pps/Kconfig
+++ b/drivers/pps/Kconfig
@@ -6,7 +6,6 @@ menu "PPS support"
config PPS
tristate "PPS support"
- depends on EXPERIMENTAL
---help---
PPS (Pulse Per Second) is a special pulse provided by some GPS
antennae. Userland can use it to get a high-precision time
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index ffdf712..a6e4b7c 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -9,7 +9,6 @@ comment "Enable Device Drivers -> PPS to see the PTP clock options."
config PTP_1588_CLOCK
tristate "PTP clock support"
- depends on EXPERIMENTAL
depends on PPS
help
The IEEE 1588 standard defines a method to precisely

View File

@ -1,784 +0,0 @@
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed, 31 Oct 2012 15:33:52 +0000
Subject: [3/5] ptp: Enable clock drivers along with associated net/PHY
drivers
commit a24006ed12616bde1bbdb26868495906a212d8dc upstream.
Where a PTP clock driver is associated with a net or PHY driver, it
should be enabled automatically whenever that driver is enabled.
Therefore:
- Make PTP clock drivers select rather than depending on PTP_1588_CLOCK
- Remove separate boolean options for PTP clock drivers that are built
as part of net driver modules. (This also fixes cases where the PTP
subsystem is wrongly forced to be built-in.)
- Set 'default y' for PTP clock drivers that depend on specific net
drivers but are built separately
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.7: adjust context; drop removal of #ifdefs that
aren't present]
---
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -93,6 +93,7 @@ config E1000E
config IGB
tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
depends on PCI
+ select PTP_1588_CLOCK
---help---
This driver supports Intel(R) 82575/82576 gigabit ethernet family of
adapters. For more information on how to identify your adapter, go
@@ -120,18 +121,6 @@ config IGB_DCA
driver. DCA is a method for warming the CPU cache before data
is used, with the intent of lessening the impact of cache misses.
-config IGB_PTP
- bool "PTP Hardware Clock (PHC)"
- default n
- depends on IGB
- select PTP_1588_CLOCK
- ---help---
- Say Y here if you want to use PTP Hardware Clock (PHC) in the
- driver. Only the basic clock operations have been implemented.
-
- Every timestamp and clock read operations must consult the
- overflow counter to form a correct time value.
-
config IGBVF
tristate "Intel(R) 82576 Virtual Function Ethernet support"
depends on PCI
@@ -179,6 +168,7 @@ config IXGBE
tristate "Intel(R) 10GbE PCI Express adapters support"
depends on PCI && INET
select MDIO
+ select PTP_1588_CLOCK
---help---
This driver supports Intel(R) 10GbE PCI Express family of
adapters. For more information on how to identify your adapter, go
@@ -221,18 +211,6 @@ config IXGBE_DCB
If unsure, say N.
-config IXGBE_PTP
- bool "PTP Clock Support"
- default n
- depends on IXGBE
- select PTP_1588_CLOCK
- ---help---
- Say Y here if you want support for 1588 Timestamping with a
- PHC device, using the PTP 1588 Clock support. This is
- required to enable timestamping support for the device.
-
- If unsure, say N.
-
config IXGBEVF
tristate "Intel(R) 82599 Virtual Function Ethernet support"
depends on PCI_MSI
--- a/drivers/net/ethernet/intel/igb/Makefile
+++ b/drivers/net/ethernet/intel/igb/Makefile
@@ -34,6 +34,4 @@ obj-$(CONFIG_IGB) += igb.o
igb-objs := igb_main.o igb_ethtool.o e1000_82575.o \
e1000_mac.o e1000_nvm.o e1000_phy.o e1000_mbx.o \
- e1000_i210.o
-
-igb-$(CONFIG_IGB_PTP) += igb_ptp.o
+ e1000_i210.o igb_ptp.o
--- a/drivers/net/ethernet/intel/igb/igb.h
+++ b/drivers/net/ethernet/intel/igb/igb.h
@@ -34,11 +34,9 @@
#include "e1000_mac.h"
#include "e1000_82575.h"
-#ifdef CONFIG_IGB_PTP
#include <linux/clocksource.h>
#include <linux/net_tstamp.h>
#include <linux/ptp_clock_kernel.h>
-#endif /* CONFIG_IGB_PTP */
#include <linux/bitops.h>
#include <linux/if_vlan.h>
@@ -373,7 +371,6 @@ struct igb_adapter {
u32 wvbr;
u32 *shadow_vfta;
-#ifdef CONFIG_IGB_PTP
struct ptp_clock *ptp_clock;
struct ptp_clock_info ptp_caps;
struct delayed_work ptp_overflow_work;
@@ -382,7 +379,6 @@ struct igb_adapter {
spinlock_t tmreg_lock;
struct cyclecounter cc;
struct timecounter tc;
-#endif /* CONFIG_IGB_PTP */
char fw_version[32];
};
@@ -436,7 +432,6 @@ extern bool igb_has_link(struct igb_adap
extern void igb_set_ethtool_ops(struct net_device *);
extern void igb_power_up_link(struct igb_adapter *);
extern void igb_set_fw_version(struct igb_adapter *);
-#ifdef CONFIG_IGB_PTP
extern void igb_ptp_init(struct igb_adapter *adapter);
extern void igb_ptp_stop(struct igb_adapter *adapter);
extern void igb_ptp_reset(struct igb_adapter *adapter);
@@ -447,7 +442,6 @@ extern void igb_ptp_rx_hwtstamp(struct i
struct sk_buff *skb);
extern int igb_ptp_hwtstamp_ioctl(struct net_device *netdev,
struct ifreq *ifr, int cmd);
-#endif /* CONFIG_IGB_PTP */
static inline s32 igb_reset_phy(struct e1000_hw *hw)
{
--- a/drivers/net/ethernet/intel/igb/igb_ethtool.c
+++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c
@@ -2301,7 +2301,6 @@ static int igb_get_ts_info(struct net_de
struct igb_adapter *adapter = netdev_priv(dev);
switch (adapter->hw.mac.type) {
-#ifdef CONFIG_IGB_PTP
case e1000_82576:
case e1000_82580:
case e1000_i350:
@@ -2337,7 +2336,6 @@ static int igb_get_ts_info(struct net_de
(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
return 0;
-#endif /* CONFIG_IGB_PTP */
default:
return -EOPNOTSUPP;
}
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -1706,10 +1706,8 @@ void igb_reset(struct igb_adapter *adapt
/* Enable h/w to recognize an 802.1Q VLAN Ethernet packet */
wr32(E1000_VET, ETHERNET_IEEE_VLAN_TYPE);
-#ifdef CONFIG_IGB_PTP
/* Re-enable PTP, where applicable. */
igb_ptp_reset(adapter);
-#endif /* CONFIG_IGB_PTP */
igb_get_phy_info(hw);
}
@@ -2141,10 +2139,8 @@ static int __devinit igb_probe(struct pc
#endif
-#ifdef CONFIG_IGB_PTP
/* do hw tstamp init after resetting */
igb_ptp_init(adapter);
-#endif /* CONFIG_IGB_PTP */
dev_info(&pdev->dev, "Intel(R) Gigabit Ethernet Network Connection\n");
/* print bus type/speed/width info */
@@ -2219,9 +2215,7 @@ static void __devexit igb_remove(struct
struct e1000_hw *hw = &adapter->hw;
pm_runtime_get_noresume(&pdev->dev);
-#ifdef CONFIG_IGB_PTP
igb_ptp_stop(adapter);
-#endif /* CONFIG_IGB_PTP */
/*
* The watchdog timer may be rescheduled, so explicitly
@@ -3112,10 +3106,8 @@ void igb_configure_rx_ring(struct igb_ad
srrctl |= (PAGE_SIZE / 2) >> E1000_SRRCTL_BSIZEPKT_SHIFT;
#endif
srrctl |= E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS;
-#ifdef CONFIG_IGB_PTP
if (hw->mac.type >= e1000_82580)
srrctl |= E1000_SRRCTL_TIMESTAMP;
-#endif /* CONFIG_IGB_PTP */
/* Only set Drop Enable if we are supporting multiple queues */
if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1)
srrctl |= E1000_SRRCTL_DROP_EN;
@@ -4159,11 +4151,9 @@ static __le32 igb_tx_cmd_type(u32 tx_fla
if (tx_flags & IGB_TX_FLAGS_VLAN)
cmd_type |= cpu_to_le32(E1000_ADVTXD_DCMD_VLE);
-#ifdef CONFIG_IGB_PTP
/* set timestamp bit if present */
if (unlikely(tx_flags & IGB_TX_FLAGS_TSTAMP))
cmd_type |= cpu_to_le32(E1000_ADVTXD_MAC_TSTAMP);
-#endif /* CONFIG_IGB_PTP */
/* set segmentation bits for TSO */
if (tx_flags & IGB_TX_FLAGS_TSO)
@@ -4372,9 +4362,7 @@ static inline int igb_maybe_stop_tx(stru
netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
struct igb_ring *tx_ring)
{
-#ifdef CONFIG_IGB_PTP
struct igb_adapter *adapter = netdev_priv(tx_ring->netdev);
-#endif /* CONFIG_IGB_PTP */
struct igb_tx_buffer *first;
int tso;
u32 tx_flags = 0;
@@ -4397,7 +4385,6 @@ netdev_tx_t igb_xmit_frame_ring(struct s
first->bytecount = skb->len;
first->gso_segs = 1;
-#ifdef CONFIG_IGB_PTP
if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
!(adapter->ptp_tx_skb))) {
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
@@ -4407,7 +4394,6 @@ netdev_tx_t igb_xmit_frame_ring(struct s
if (adapter->hw.mac.type == e1000_82576)
schedule_work(&adapter->ptp_tx_work);
}
-#endif /* CONFIG_IGB_PTP */
if (vlan_tx_tag_present(skb)) {
tx_flags |= IGB_TX_FLAGS_VLAN;
@@ -4800,7 +4786,6 @@ static irqreturn_t igb_msix_other(int ir
mod_timer(&adapter->watchdog_timer, jiffies + 1);
}
-#ifdef CONFIG_IGB_PTP
if (icr & E1000_ICR_TS) {
u32 tsicr = rd32(E1000_TSICR);
@@ -4811,7 +4796,6 @@ static irqreturn_t igb_msix_other(int ir
schedule_work(&adapter->ptp_tx_work);
}
}
-#endif /* CONFIG_IGB_PTP */
wr32(E1000_EIMS, adapter->eims_other);
@@ -5545,7 +5529,6 @@ static irqreturn_t igb_intr_msi(int irq,
mod_timer(&adapter->watchdog_timer, jiffies + 1);
}
-#ifdef CONFIG_IGB_PTP
if (icr & E1000_ICR_TS) {
u32 tsicr = rd32(E1000_TSICR);
@@ -5556,7 +5539,6 @@ static irqreturn_t igb_intr_msi(int irq,
schedule_work(&adapter->ptp_tx_work);
}
}
-#endif /* CONFIG_IGB_PTP */
napi_schedule(&q_vector->napi);
@@ -5599,7 +5581,6 @@ static irqreturn_t igb_intr(int irq, voi
mod_timer(&adapter->watchdog_timer, jiffies + 1);
}
-#ifdef CONFIG_IGB_PTP
if (icr & E1000_ICR_TS) {
u32 tsicr = rd32(E1000_TSICR);
@@ -5610,7 +5591,6 @@ static irqreturn_t igb_intr(int irq, voi
schedule_work(&adapter->ptp_tx_work);
}
}
-#endif /* CONFIG_IGB_PTP */
napi_schedule(&q_vector->napi);
@@ -5999,9 +5979,7 @@ static bool igb_clean_rx_irq(struct igb_
goto next_desc;
}
-#ifdef CONFIG_IGB_PTP
igb_ptp_rx_hwtstamp(q_vector, rx_desc, skb);
-#endif /* CONFIG_IGB_PTP */
igb_rx_hash(rx_ring, rx_desc, skb);
igb_rx_checksum(rx_ring, rx_desc, skb);
igb_rx_vlan(rx_ring, rx_desc, skb);
@@ -6207,10 +6185,8 @@ static int igb_ioctl(struct net_device *
case SIOCGMIIREG:
case SIOCSMIIREG:
return igb_mii_ioctl(netdev, ifr, cmd);
-#ifdef CONFIG_IGB_PTP
case SIOCSHWTSTAMP:
return igb_ptp_hwtstamp_ioctl(netdev, ifr, cmd);
-#endif /* CONFIG_IGB_PTP */
default:
return -EOPNOTSUPP;
}
--- a/drivers/net/ethernet/intel/ixgbe/Makefile
+++ b/drivers/net/ethernet/intel/ixgbe/Makefile
@@ -34,11 +34,10 @@ obj-$(CONFIG_IXGBE) += ixgbe.o
ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o ixgbe_debugfs.o\
ixgbe_82599.o ixgbe_82598.o ixgbe_phy.o ixgbe_sriov.o \
- ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o
+ ixgbe_mbx.o ixgbe_x540.o ixgbe_lib.o ixgbe_ptp.o
ixgbe-$(CONFIG_IXGBE_DCB) += ixgbe_dcb.o ixgbe_dcb_82598.o \
ixgbe_dcb_82599.o ixgbe_dcb_nl.o
-ixgbe-$(CONFIG_IXGBE_PTP) += ixgbe_ptp.o
ixgbe-$(CONFIG_IXGBE_HWMON) += ixgbe_sysfs.o
ixgbe-$(CONFIG_FCOE:m=y) += ixgbe_fcoe.o
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -36,11 +36,9 @@
#include <linux/aer.h>
#include <linux/if_vlan.h>
-#ifdef CONFIG_IXGBE_PTP
#include <linux/clocksource.h>
#include <linux/net_tstamp.h>
#include <linux/ptp_clock_kernel.h>
-#endif /* CONFIG_IXGBE_PTP */
#include "ixgbe_type.h"
#include "ixgbe_common.h"
@@ -571,7 +569,6 @@ struct ixgbe_adapter {
u32 interrupt_event;
u32 led_reg;
-#ifdef CONFIG_IXGBE_PTP
struct ptp_clock *ptp_clock;
struct ptp_clock_info ptp_caps;
unsigned long last_overflow_check;
@@ -581,7 +578,6 @@ struct ixgbe_adapter {
int rx_hwtstamp_filter;
u32 base_incval;
u32 cycle_speed;
-#endif /* CONFIG_IXGBE_PTP */
/* SR-IOV */
DECLARE_BITMAP(active_vfs, IXGBE_MAX_VF_FUNCTIONS);
@@ -739,7 +735,6 @@ static inline struct netdev_queue *txrin
return netdev_get_tx_queue(ring->netdev, ring->queue_index);
}
-#ifdef CONFIG_IXGBE_PTP
extern void ixgbe_ptp_init(struct ixgbe_adapter *adapter);
extern void ixgbe_ptp_stop(struct ixgbe_adapter *adapter);
extern void ixgbe_ptp_overflow_check(struct ixgbe_adapter *adapter);
@@ -752,6 +747,5 @@ extern int ixgbe_ptp_hwtstamp_ioctl(stru
struct ifreq *ifr, int cmd);
extern void ixgbe_ptp_start_cyclecounter(struct ixgbe_adapter *adapter);
extern void ixgbe_ptp_check_pps_event(struct ixgbe_adapter *adapter, u32 eicr);
-#endif /* CONFIG_IXGBE_PTP */
#endif /* _IXGBE_H_ */
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -2669,7 +2669,6 @@ static int ixgbe_get_ts_info(struct net_
struct ixgbe_adapter *adapter = netdev_priv(dev);
switch (adapter->hw.mac.type) {
-#ifdef CONFIG_IXGBE_PTP
case ixgbe_mac_X540:
case ixgbe_mac_82599EB:
info->so_timestamping =
@@ -2695,7 +2694,6 @@ static int ixgbe_get_ts_info(struct net_
(1 << HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ) |
(1 << HWTSTAMP_FILTER_PTP_V2_EVENT);
break;
-#endif /* CONFIG_IXGBE_PTP */
default:
return ethtool_op_get_ts_info(dev, info);
break;
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -791,10 +791,8 @@ static bool ixgbe_clean_tx_irq(struct ix
total_bytes += tx_buffer->bytecount;
total_packets += tx_buffer->gso_segs;
-#ifdef CONFIG_IXGBE_PTP
if (unlikely(tx_buffer->tx_flags & IXGBE_TX_FLAGS_TSTAMP))
ixgbe_ptp_tx_hwtstamp(q_vector, tx_buffer->skb);
-#endif
/* free the skb */
dev_kfree_skb_any(tx_buffer->skb);
@@ -1369,9 +1367,7 @@ static void ixgbe_process_skb_fields(str
ixgbe_rx_checksum(rx_ring, rx_desc, skb);
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_rx_hwtstamp(rx_ring->q_vector, rx_desc, skb);
-#endif
if ((dev->features & NETIF_F_HW_VLAN_RX) &&
ixgbe_test_staterr(rx_desc, IXGBE_RXD_STAT_VP)) {
@@ -2324,10 +2320,8 @@ static inline void ixgbe_irq_enable(stru
break;
}
-#ifdef CONFIG_IXGBE_PTP
if (adapter->hw.mac.type == ixgbe_mac_X540)
mask |= IXGBE_EIMS_TIMESYNC;
-#endif
if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) &&
!(adapter->flags2 & IXGBE_FLAG2_FDIR_REQUIRES_REINIT))
@@ -2393,10 +2387,8 @@ static irqreturn_t ixgbe_msix_other(int
ixgbe_check_fan_failure(adapter, eicr);
-#ifdef CONFIG_IXGBE_PTP
if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
ixgbe_ptp_check_pps_event(adapter, eicr);
-#endif
/* re-enable the original interrupt state, no lsc, no queues */
if (!test_bit(__IXGBE_DOWN, &adapter->state))
@@ -2588,10 +2580,8 @@ static irqreturn_t ixgbe_intr(int irq, v
}
ixgbe_check_fan_failure(adapter, eicr);
-#ifdef CONFIG_IXGBE_PTP
if (unlikely(eicr & IXGBE_EICR_TIMESYNC))
ixgbe_ptp_check_pps_event(adapter, eicr);
-#endif
/* would disable interrupts here but EIAM disabled it */
napi_schedule(&q_vector->napi);
@@ -5482,9 +5472,7 @@ static void ixgbe_watchdog_link_is_up(st
break;
}
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_start_cyclecounter(adapter);
-#endif
e_info(drv, "NIC Link is Up %s, Flow Control: %s\n",
(link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
@@ -5526,9 +5514,7 @@ static void ixgbe_watchdog_link_is_down(
if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB)
adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP;
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_start_cyclecounter(adapter);
-#endif
e_info(drv, "NIC Link is Down\n");
netif_carrier_off(netdev);
@@ -5833,9 +5819,7 @@ static void ixgbe_service_task(struct wo
ixgbe_watchdog_subtask(adapter);
ixgbe_fdir_reinit_subtask(adapter);
ixgbe_check_hang_subtask(adapter);
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_overflow_check(adapter);
-#endif
ixgbe_service_event_complete(adapter);
}
@@ -5988,10 +5972,8 @@ static __le32 ixgbe_tx_cmd_type(u32 tx_f
if (tx_flags & IXGBE_TX_FLAGS_HW_VLAN)
cmd_type |= cpu_to_le32(IXGBE_ADVTXD_DCMD_VLE);
-#ifdef CONFIG_IXGBE_PTP
if (tx_flags & IXGBE_TX_FLAGS_TSTAMP)
cmd_type |= cpu_to_le32(IXGBE_ADVTXD_MAC_TSTAMP);
-#endif
/* set segmentation enable bits for TSO/FSO */
#ifdef IXGBE_FCOE
@@ -6393,12 +6375,10 @@ netdev_tx_t ixgbe_xmit_frame_ring(struct
skb_tx_timestamp(skb);
-#ifdef CONFIG_IXGBE_PTP
if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP)) {
skb_shinfo(skb)->tx_flags |= SKBTX_IN_PROGRESS;
tx_flags |= IXGBE_TX_FLAGS_TSTAMP;
}
-#endif
#ifdef CONFIG_PCI_IOV
/*
@@ -6547,10 +6527,8 @@ static int ixgbe_ioctl(struct net_device
struct ixgbe_adapter *adapter = netdev_priv(netdev);
switch (cmd) {
-#ifdef CONFIG_IXGBE_PTP
case SIOCSHWTSTAMP:
return ixgbe_ptp_hwtstamp_ioctl(adapter, req, cmd);
-#endif
default:
return mdio_mii_ioctl(&adapter->hw.phy.mdio, if_mii(req), cmd);
}
@@ -7364,9 +7342,7 @@ static int __devinit ixgbe_probe(struct
device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol);
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_init(adapter);
-#endif /* CONFIG_IXGBE_PTP*/
/* save off EEPROM version number */
hw->eeprom.ops.read(hw, 0x2e, &adapter->eeprom_verh);
@@ -7505,9 +7481,7 @@ static void __devexit ixgbe_remove(struc
set_bit(__IXGBE_DOWN, &adapter->state);
cancel_work_sync(&adapter->service_task);
-#ifdef CONFIG_IXGBE_PTP
ixgbe_ptp_stop(adapter);
-#endif
#ifdef CONFIG_IXGBE_DCA
if (adapter->flags & IXGBE_FLAG_DCA_ENABLED) {
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -20,17 +20,3 @@ config PCH_GBE
purpose use.
ML7223/ML7831 is companion chip for Intel Atom E6xx series.
ML7223/ML7831 is completely compatible for Intel EG20T PCH.
-
-if PCH_GBE
-
-config PCH_PTP
- bool "PCH PTP clock support"
- default n
- select PTP_1588_CLOCK
- select PTP_1588_CLOCK_PCH
- ---help---
- Say Y here if you want to use Precision Time Protocol (PTP) in the
- driver. PTP is a method to precisely synchronize distributed clocks
- over Ethernet networks.
-
-endif # PCH_GBE
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h
@@ -649,7 +649,6 @@ extern void pch_gbe_free_tx_resources(st
extern void pch_gbe_free_rx_resources(struct pch_gbe_adapter *adapter,
struct pch_gbe_rx_ring *rx_ring);
extern void pch_gbe_update_stats(struct pch_gbe_adapter *adapter);
-#ifdef CONFIG_PCH_PTP
extern u32 pch_ch_control_read(struct pci_dev *pdev);
extern void pch_ch_control_write(struct pci_dev *pdev, u32 val);
extern u32 pch_ch_event_read(struct pci_dev *pdev);
@@ -659,7 +658,6 @@ extern u32 pch_src_uuid_hi_read(struct p
extern u64 pch_rx_snap_read(struct pci_dev *pdev);
extern u64 pch_tx_snap_read(struct pci_dev *pdev);
extern int pch_set_station_address(u8 *addr, struct pci_dev *pdev);
-#endif
/* pch_gbe_param.c */
extern void pch_gbe_check_options(struct pch_gbe_adapter *adapter);
--- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c
@@ -21,10 +21,8 @@
#include "pch_gbe.h"
#include "pch_gbe_api.h"
#include <linux/module.h>
-#ifdef CONFIG_PCH_PTP
#include <linux/net_tstamp.h>
#include <linux/ptp_classify.h>
-#endif
#define DRV_VERSION "1.01"
const char pch_driver_version[] = DRV_VERSION;
@@ -98,7 +96,6 @@ const char pch_driver_version[] = DRV_VE
#define PCH_GBE_INT_DISABLE_ALL 0
-#ifdef CONFIG_PCH_PTP
/* Macros for ieee1588 */
/* 0x40 Time Synchronization Channel Control Register Bits */
#define MASTER_MODE (1<<0)
@@ -113,7 +110,6 @@ const char pch_driver_version[] = DRV_VE
#define PTP_L4_MULTICAST_SA "01:00:5e:00:01:81"
#define PTP_L2_MULTICAST_SA "01:1b:19:00:00:00"
-#endif
static unsigned int copybreak __read_mostly = PCH_GBE_COPYBREAK_DEFAULT;
@@ -122,7 +118,6 @@ static void pch_gbe_mdio_write(struct ne
int data);
static void pch_gbe_set_multi(struct net_device *netdev);
-#ifdef CONFIG_PCH_PTP
static struct sock_filter ptp_filter[] = {
PTP_FILTER
};
@@ -291,7 +286,6 @@ static int hwtstamp_ioctl(struct net_dev
return copy_to_user(ifr->ifr_data, &cfg, sizeof(cfg)) ? -EFAULT : 0;
}
-#endif
inline void pch_gbe_mac_load_mac_addr(struct pch_gbe_hw *hw)
{
@@ -1244,9 +1238,7 @@ static void pch_gbe_tx_queue(struct pch_
(int)sizeof(struct pch_gbe_tx_desc) * ring_num,
&hw->reg->TX_DSC_SW_P);
-#ifdef CONFIG_PCH_PTP
pch_tx_timestamp(adapter, skb);
-#endif
dev_kfree_skb_any(skb);
}
@@ -1730,9 +1722,7 @@ pch_gbe_clean_rx(struct pch_gbe_adapter
/* Write meta date of skb */
skb_put(skb, length);
-#ifdef CONFIG_PCH_PTP
pch_rx_timestamp(adapter, skb);
-#endif
skb->protocol = eth_type_trans(skb, netdev);
if (tcp_ip_status & PCH_GBE_RXD_ACC_STAT_TCPIPOK)
@@ -2334,10 +2324,8 @@ static int pch_gbe_ioctl(struct net_devi
pr_debug("cmd : 0x%04x\n", cmd);
-#ifdef CONFIG_PCH_PTP
if (cmd == SIOCSHWTSTAMP)
return hwtstamp_ioctl(netdev, ifr, cmd);
-#endif
return generic_mii_ioctl(&adapter->mii, if_mii(ifr), cmd, NULL);
}
@@ -2623,14 +2611,12 @@ static int pch_gbe_probe(struct pci_dev
goto err_free_netdev;
}
-#ifdef CONFIG_PCH_PTP
adapter->ptp_pdev = pci_get_bus_and_slot(adapter->pdev->bus->number,
PCI_DEVFN(12, 4));
if (ptp_filter_init(ptp_filter, ARRAY_SIZE(ptp_filter))) {
pr_err("Bad ptp filter\n");
return -EINVAL;
}
-#endif
netdev->netdev_ops = &pch_gbe_netdev_ops;
netdev->watchdog_timeo = PCH_GBE_WATCHDOG_PERIOD;
--- a/drivers/net/ethernet/sfc/Kconfig
+++ b/drivers/net/ethernet/sfc/Kconfig
@@ -34,10 +34,3 @@ config SFC_SRIOV
This enables support for the SFC9000 I/O Virtualization
features, allowing accelerated network performance in
virtualized environments.
-config SFC_PTP
- bool "Solarflare SFC9000-family PTP support"
- depends on SFC && PTP_1588_CLOCK && !(SFC=y && PTP_1588_CLOCK=m)
- default y
- ---help---
- This enables support for the Precision Time Protocol (PTP)
- on SFC9000-family NICs
--- a/drivers/net/ethernet/sfc/Makefile
+++ b/drivers/net/ethernet/sfc/Makefile
@@ -2,9 +2,8 @@ sfc-y += efx.o nic.o falcon.o siena.o
falcon_xmac.o mcdi_mac.o \
selftest.o ethtool.o qt202x_phy.o mdio_10g.o \
tenxpress.o txc43128_phy.o falcon_boards.o \
- mcdi.o mcdi_phy.o mcdi_mon.o
+ mcdi.o mcdi_phy.o mcdi_mon.o ptp.o
sfc-$(CONFIG_SFC_MTD) += mtd.o
sfc-$(CONFIG_SFC_SRIOV) += siena_sriov.o
-sfc-$(CONFIG_SFC_PTP) += ptp.o
obj-$(CONFIG_SFC) += sfc.o
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -868,9 +868,7 @@ struct efx_nic {
struct work_struct peer_work;
#endif
-#ifdef CONFIG_SFC_PTP
struct efx_ptp_data *ptp_data;
-#endif
/* The following fields may be written more often */
--- a/drivers/net/ethernet/sfc/nic.h
+++ b/drivers/net/ethernet/sfc/nic.h
@@ -252,7 +252,6 @@ extern int efx_sriov_set_vf_spoofchk(str
bool spoofchk);
struct ethtool_ts_info;
-#ifdef CONFIG_SFC_PTP
extern void efx_ptp_probe(struct efx_nic *efx);
extern int efx_ptp_ioctl(struct efx_nic *efx, struct ifreq *ifr, int cmd);
extern int efx_ptp_get_ts_info(struct net_device *net_dev,
@@ -260,31 +259,6 @@ extern int efx_ptp_get_ts_info(struct ne
extern bool efx_ptp_is_ptp_tx(struct efx_nic *efx, struct sk_buff *skb);
extern int efx_ptp_tx(struct efx_nic *efx, struct sk_buff *skb);
extern void efx_ptp_event(struct efx_nic *efx, efx_qword_t *ev);
-#else
-static inline void efx_ptp_probe(struct efx_nic *efx) {}
-static inline int efx_ptp_ioctl(struct efx_nic *efx, struct ifreq *ifr, int cmd)
-{
- return -EOPNOTSUPP;
-}
-static inline int efx_ptp_get_ts_info(struct net_device *net_dev,
- struct ethtool_ts_info *ts_info)
-{
- ts_info->so_timestamping = (SOF_TIMESTAMPING_SOFTWARE |
- SOF_TIMESTAMPING_RX_SOFTWARE);
- ts_info->phc_index = -1;
-
- return 0;
-}
-static inline bool efx_ptp_is_ptp_tx(struct efx_nic *efx, struct sk_buff *skb)
-{
- return false;
-}
-static inline int efx_ptp_tx(struct efx_nic *efx, struct sk_buff *skb)
-{
- return NETDEV_TX_OK;
-}
-static inline void efx_ptp_event(struct efx_nic *efx, efx_qword_t *ev) {}
-#endif
extern const struct efx_nic_type falcon_a1_nic_type;
extern const struct efx_nic_type falcon_b0_nic_type;
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -25,8 +25,9 @@ config PTP_1588_CLOCK
config PTP_1588_CLOCK_GIANFAR
tristate "Freescale eTSEC as PTP clock"
- depends on PTP_1588_CLOCK
depends on GIANFAR
+ select PTP_1588_CLOCK
+ default y
help
This driver adds support for using the eTSEC as a PTP
clock. This clock is only useful if your PTP programs are
@@ -38,8 +39,9 @@ config PTP_1588_CLOCK_GIANFAR
config PTP_1588_CLOCK_IXP46X
tristate "Intel IXP46x as PTP clock"
- depends on PTP_1588_CLOCK
depends on IXP4XX_ETH
+ select PTP_1588_CLOCK
+ default y
help
This driver adds support for using the IXP46X as a PTP
clock. This clock is only useful if your PTP programs are
@@ -50,13 +52,13 @@ config PTP_1588_CLOCK_IXP46X
will be called ptp_ixp46x.
comment "Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks."
- depends on PTP_1588_CLOCK && (PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n)
+ depends on PHYLIB=n || NETWORK_PHY_TIMESTAMPING=n
config DP83640_PHY
tristate "Driver for the National Semiconductor DP83640 PHYTER"
- depends on PTP_1588_CLOCK
depends on NETWORK_PHY_TIMESTAMPING
depends on PHYLIB
+ select PTP_1588_CLOCK
---help---
Supports the DP83640 PHYTER with IEEE 1588 features.
@@ -70,8 +72,9 @@ config DP83640_PHY
config PTP_1588_CLOCK_PCH
tristate "Intel PCH EG20T as PTP clock"
- depends on PTP_1588_CLOCK
depends on PCH_GBE
+ select PTP_1588_CLOCK
+ default y
help
This driver adds support for using the PCH EG20T as a PTP
clock. The hardware supports time stamping of PTP packets

View File

@ -1,69 +0,0 @@
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Wed, 31 Oct 2012 15:32:44 +0000
Subject: [2/5] ptp: Make PTP_1588_CLOCK select rather than depend on PPS
commit 42a7ccef0a06519e2ea0be71d7c0f4ed9198509f upstream.
PTP hardware clock drivers that select PTP_1588_CLOCK must currently
also select PPS. For those drivers that don't, the user must enable
PPS, then enable PTP_1588_CLOCK, then the driver. Simplify things for
developers and users by putting this selection in one place.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/intel/Kconfig | 2 --
drivers/net/ethernet/oki-semi/pch_gbe/Kconfig | 1 -
drivers/ptp/Kconfig | 5 +----
3 files changed, 1 insertion(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
index 9e49217..d5b359d 100644
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -124,7 +124,6 @@ config IGB_PTP
bool "PTP Hardware Clock (PHC)"
default n
depends on IGB
- select PPS
select PTP_1588_CLOCK
---help---
Say Y here if you want to use PTP Hardware Clock (PHC) in the
@@ -226,7 +225,6 @@ config IXGBE_PTP
bool "PTP Clock Support"
default n
depends on IXGBE
- select PPS
select PTP_1588_CLOCK
---help---
Say Y here if you want support for 1588 Timestamping with a
diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
index 9867bc6..d0e36f2 100644
--- a/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
+++ b/drivers/net/ethernet/oki-semi/pch_gbe/Kconfig
@@ -26,7 +26,6 @@ if PCH_GBE
config PCH_PTP
bool "PCH PTP clock support"
default n
- select PPS
select PTP_1588_CLOCK
select PTP_1588_CLOCK_PCH
---help---
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index a6e4b7c..131ef03 100644
--- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig
@@ -4,12 +4,9 @@
menu "PTP clock support"
-comment "Enable Device Drivers -> PPS to see the PTP clock options."
- depends on PPS=n
-
config PTP_1588_CLOCK
tristate "PTP clock support"
- depends on PPS
+ select PPS
help
The IEEE 1588 standard defines a method to precisely
synchronize distributed clocks over Ethernet networks. The

View File

@ -1,29 +0,0 @@
From: Ben Hutchings <bhutchings@solarflare.com>
Date: Thu, 1 Nov 2012 11:22:22 +0000
Subject: [4/5] sfc: Select PTP_1588_CLOCK
commit 3ba368c43565f31528b3aea585bb4119fded4eb1 upstream.
This was missed in commit a24006ed12616bde1bbdb26868495906a212d8dc
('ptp: Enable clock drivers along with associated net/PHY drivers')
which enabled sfc's clock driver unconditionally.
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/ethernet/sfc/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/sfc/Kconfig b/drivers/net/ethernet/sfc/Kconfig
index fb3cbc2..3ab2c428 100644
--- a/drivers/net/ethernet/sfc/Kconfig
+++ b/drivers/net/ethernet/sfc/Kconfig
@@ -5,6 +5,7 @@ config SFC
select CRC32
select I2C
select I2C_ALGOBIT
+ select PTP_1588_CLOCK
---help---
This driver supports 10-gigabit Ethernet cards based on
the Solarflare SFC4000 and SFC9000-family controllers.

View File

@ -1,106 +0,0 @@
From: Arnd Bergmann <arnd@arndb.de>
Date: Fri, 28 Sep 2012 22:36:00 +0100
Subject: staging/iio/lis3l02dq: fix building without irq_to_gpio
commit 65cb587d7058441c8c910e8766ee86538c7274d8 upstream.
The driver has not been building for some time after the
irq_to_gpio function has been removed from the kernel.
The only board in the upstream kernel that provides
this device is the "Stargate 2", which is also maintained
by Jonathan Cameron. Rather than working around the problem
by adding new platform data for this driver, this patch
uses the of_gpio framework to get to the gpio number.
However, the stargate2 code does not (yet) use DT based
probing, so it is still broken, but at least building
allyesconfig works again.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
---
drivers/staging/iio/accel/lis3l02dq.h | 1 +
drivers/staging/iio/accel/lis3l02dq_core.c | 10 ++++++----
drivers/staging/iio/accel/lis3l02dq_ring.c | 2 +-
3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/drivers/staging/iio/accel/lis3l02dq.h b/drivers/staging/iio/accel/lis3l02dq.h
index f9bcd41..2bac722 100644
--- a/drivers/staging/iio/accel/lis3l02dq.h
+++ b/drivers/staging/iio/accel/lis3l02dq.h
@@ -158,6 +158,7 @@ struct lis3l02dq_state {
struct spi_device *us;
struct iio_trigger *trig;
struct mutex buf_lock;
+ int gpio;
bool trigger_on;
u8 tx[LIS3L02DQ_MAX_RX] ____cacheline_aligned;
diff --git a/drivers/staging/iio/accel/lis3l02dq_core.c b/drivers/staging/iio/accel/lis3l02dq_core.c
index 21b0469..d13c7e9 100644
--- a/drivers/staging/iio/accel/lis3l02dq_core.c
+++ b/drivers/staging/iio/accel/lis3l02dq_core.c
@@ -15,6 +15,7 @@
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/gpio.h>
+#include <linux/of_gpio.h>
#include <linux/mutex.h>
#include <linux/device.h>
#include <linux/kernel.h>
@@ -690,6 +691,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
spi_set_drvdata(spi, indio_dev);
st->us = spi;
+ st->gpio = of_get_gpio(spi->dev.of_node, 0);
mutex_init(&st->buf_lock);
indio_dev->name = spi->dev.driver->name;
indio_dev->dev.parent = &spi->dev;
@@ -711,7 +713,7 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
goto error_unreg_buffer_funcs;
}
- if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0) {
+ if (spi->irq) {
ret = request_threaded_irq(st->us->irq,
&lis3l02dq_th,
&lis3l02dq_event_handler,
@@ -738,10 +740,10 @@ static int __devinit lis3l02dq_probe(struct spi_device *spi)
return 0;
error_remove_trigger:
- if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)))
+ if (spi->irq)
lis3l02dq_remove_trigger(indio_dev);
error_free_interrupt:
- if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0)
+ if (spi->irq)
free_irq(st->us->irq, indio_dev);
error_uninitialize_buffer:
iio_buffer_unregister(indio_dev);
@@ -790,7 +792,7 @@ static int __devexit lis3l02dq_remove(struct spi_device *spi)
lis3l02dq_disable_all_events(indio_dev);
lis3l02dq_stop_device(indio_dev);
- if (spi->irq && gpio_is_valid(irq_to_gpio(spi->irq)) > 0)
+ if (spi->irq)
free_irq(st->us->irq, indio_dev);
lis3l02dq_remove_trigger(indio_dev);
diff --git a/drivers/staging/iio/accel/lis3l02dq_ring.c b/drivers/staging/iio/accel/lis3l02dq_ring.c
index fa4190d..13c0b4b 100644
--- a/drivers/staging/iio/accel/lis3l02dq_ring.c
+++ b/drivers/staging/iio/accel/lis3l02dq_ring.c
@@ -263,7 +263,7 @@ static int lis3l02dq_trig_try_reen(struct iio_trigger *trig)
/* If gpio still high (or high again)
* In theory possible we will need to do this several times */
for (i = 0; i < 5; i++)
- if (gpio_get_value(irq_to_gpio(st->us->irq)))
+ if (gpio_get_value(st->gpio))
lis3l02dq_read_all(indio_dev, NULL);
else
break;

View File

@ -28,7 +28,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Choose this option for open-source nVidia support.
--- a/drivers/gpu/drm/nouveau/Makefile
+++ b/drivers/gpu/drm/nouveau/Makefile
@@ -186,7 +186,9 @@ nouveau-y += nouveau_mem.o
@@ -216,7 +216,9 @@ nouveau-y += nouveau_mem.o
# other random bits
nouveau-$(CONFIG_COMPAT) += nouveau_ioc32.o
@ -46,9 +46,9 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
-#if defined(CONFIG_ACPI)
+#if defined(CONFIG_ACPI) && defined(CONFIG_X86)
bool nouveau_is_optimus(void);
bool nouveau_is_v1_dsm(void);
void nouveau_register_dsm_handler(void);
void nouveau_unregister_dsm_handler(void);
void nouveau_switcheroo_optimus_dsm(void);
--- a/drivers/gpu/drm/nouveau/core/subdev/bios/base.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/bios/base.c
@@ -172,7 +172,7 @@ out:

View File

@ -1,63 +0,0 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Fri, 9 Nov 2012 02:43:00 +0000
Subject: asus-laptop: Do not call HWRS on init
Since commit 8871e99f89b7 ('asus-laptop: HRWS/HWRS typo'), module
initialisation is very slow on the Asus UL30A. The HWRS method takes
about 12 seconds to run, and subsequent initialisation also seems to
be delayed. Since we don't really need the result, don't bother
calling it on init. Those who are curious can still get the result
through the 'infos' device attribute.
Update the comment about HWRS in show_infos().
Reported-by: ryan <draziw+deb@gmail.com>
References: http://bugs.debian.org/692436
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
drivers/platform/x86/asus-laptop.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c
index 4b568df..a961156 100644
--- a/drivers/platform/x86/asus-laptop.c
+++ b/drivers/platform/x86/asus-laptop.c
@@ -860,8 +860,10 @@ static ssize_t show_infos(struct device *dev,
/*
* The HWRS method return informations about the hardware.
* 0x80 bit is for WLAN, 0x100 for Bluetooth.
+ * 0x40 for WWAN, 0x10 for WIMAX.
* The significance of others is yet to be found.
- * If we don't find the method, we assume the device are present.
+ * We don't currently use this for device detection, and it
+ * takes several seconds to run on some systems.
*/
rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp);
if (!ACPI_FAILURE(rv))
@@ -1682,7 +1684,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
{
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
union acpi_object *model = NULL;
- unsigned long long bsts_result, hwrs_result;
+ unsigned long long bsts_result;
char *string = NULL;
acpi_status status;
@@ -1744,17 +1746,6 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
if (*string)
pr_notice(" %s model detected\n", string);
- /*
- * The HWRS method return informations about the hardware.
- * 0x80 bit is for WLAN, 0x100 for Bluetooth,
- * 0x40 for WWAN, 0x10 for WIMAX.
- * The significance of others is yet to be found.
- */
- status =
- acpi_evaluate_integer(asus->handle, "HWRS", NULL, &hwrs_result);
- if (!ACPI_FAILURE(status))
- pr_notice(" HWRS returned %x", (int)hwrs_result);
-
if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL))
asus->have_rsts = true;

View File

@ -16,5 +16,5 @@ package of a compatible X driver.
-MODULE_DEVICE_TABLE(pci, pciidlist);
+/*MODULE_DEVICE_TABLE(pci, pciidlist);*/
static int __devinit
ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
static int ast_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{

View File

@ -53,7 +53,7 @@ are set.
#include <asm/uaccess.h>
#include <asm/io.h>
#include <linux/atomic.h>
@@ -181,11 +182,12 @@ static void show_last_breaking_event(str
@@ -179,11 +180,12 @@ static void show_last_breaking_event(str
*/
void dump_stack(void)
{
@ -68,7 +68,7 @@ are set.
printk("Process %s (pid: %d, task: %p, ksp: %p)\n",
current->comm, current->pid, current,
(void *) current->thread.ksp);
@@ -231,11 +233,12 @@ void show_registers(struct pt_regs *regs
@@ -229,11 +231,12 @@ void show_registers(struct pt_regs *regs
void show_regs(struct pt_regs *regs)
{
@ -185,7 +185,7 @@ are set.
+#include <generated/package.h>
#include <asm/cacheflush.h>
#include <asm/processor.h>
#include <asm/idmap.h>
@@ -278,11 +279,12 @@ void __show_regs(struct pt_regs *regs)
unsigned long flags;
char buf[64];

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
aufs3.x-rcN base patch
diff --git a/fs/file_table.c b/fs/file_table.c
index a72bf9d..dac6792 100644
index de9e965..e73287a 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -36,7 +36,7 @@ struct files_stat_struct files_stat = {
@ -14,10 +14,10 @@ index a72bf9d..dac6792 100644
/* SLAB cache for file structures */
static struct kmem_cache *filp_cachep __read_mostly;
diff --git a/fs/inode.c b/fs/inode.c
index b03c719..ee497f9 100644
index 14084b7..ece87ed 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -1491,7 +1491,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
@@ -1503,7 +1503,7 @@ static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
* This does the actual work of updating an inodes time or version. Must have
* had called mnt_want_write() before calling this.
*/
@ -27,10 +27,10 @@ index b03c719..ee497f9 100644
if (inode->i_op->update_time)
return inode->i_op->update_time(inode, time, flags);
diff --git a/fs/splice.c b/fs/splice.c
index 13e5b47..f185c6c 100644
index 6909d89..020c7bc 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1093,8 +1093,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
@@ -1092,8 +1092,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
/*
* Attempt to initiate a splice from pipe to file.
*/
@ -41,7 +41,7 @@ index 13e5b47..f185c6c 100644
{
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
loff_t *, size_t, unsigned int);
@@ -1121,9 +1121,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -1120,9 +1120,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.
*/
@ -55,10 +55,10 @@ index 13e5b47..f185c6c 100644
ssize_t (*splice_read)(struct file *, loff_t *,
struct pipe_inode_info *, size_t, unsigned int);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index b33cfc9..963a61b 100644
index 7617ee0..1a39c33 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2558,6 +2558,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
@@ -2551,6 +2551,7 @@ extern int inode_change_ok(const struct inode *, struct iattr *);
extern int inode_newsize_ok(const struct inode *, loff_t offset);
extern void setattr_copy(struct inode *inode, const struct iattr *attr);

View File

@ -1,22 +1,22 @@
aufs3.x-rcN kbuild patch
diff --git a/fs/Kconfig b/fs/Kconfig
index f95ae3a..6d8a9a5 100644
index 780725a..d460c05 100644
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -220,6 +220,7 @@ source "fs/pstore/Kconfig"
source "fs/sysv/Kconfig"
@@ -211,6 +211,7 @@ source "fs/sysv/Kconfig"
source "fs/ufs/Kconfig"
source "fs/exofs/Kconfig"
source "fs/f2fs/Kconfig"
+source "fs/aufs/Kconfig"
endif # MISC_FILESYSTEMS
diff --git a/fs/Makefile b/fs/Makefile
index 1d7af79..06db6eb 100644
index 9d53192..e70f08f 100644
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -126,3 +126,4 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
@@ -127,3 +127,4 @@ obj-$(CONFIG_F2FS_FS) += f2fs/
obj-y += exofs/ # Multiple modules
obj-$(CONFIG_CEPH_FS) += ceph/
obj-$(CONFIG_PSTORE) += pstore/

View File

@ -1,7 +1,7 @@
aufs3.x-rcN standalone patch
diff --git a/fs/file_table.c b/fs/file_table.c
index dac6792..e3f2c15 100644
index e73287a..b33aebe 100644
--- a/fs/file_table.c
+++ b/fs/file_table.c
@@ -37,6 +37,7 @@ struct files_stat_struct files_stat = {
@ -22,7 +22,7 @@ index dac6792..e3f2c15 100644
/*
diff --git a/fs/inode.c b/fs/inode.c
index ee497f9..5e7eee7 100644
index ece87ed..38f7bc8 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -56,6 +56,7 @@ static struct hlist_head *inode_hashtable __read_mostly;
@ -33,7 +33,7 @@ index ee497f9..5e7eee7 100644
/*
* Empty aops. Can be used for the cases where the user does not
@@ -1507,6 +1508,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
@@ -1519,6 +1520,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
mark_inode_dirty_sync(inode);
return 0;
}
@ -42,10 +42,10 @@ index ee497f9..5e7eee7 100644
/**
* touch_atime - update the access time
diff --git a/fs/namespace.c b/fs/namespace.c
index 2496062..3e66a90 100644
index 55605c5..aed7607 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -50,6 +50,7 @@ EXPORT_SYMBOL_GPL(fs_kobj);
@@ -52,6 +52,7 @@ EXPORT_SYMBOL_GPL(fs_kobj);
* tree or hash is modified or when a vfsmount structure is modified.
*/
DEFINE_BRLOCK(vfsmount_lock);
@ -53,7 +53,7 @@ index 2496062..3e66a90 100644
static inline unsigned long hash(struct vfsmount *mnt, struct dentry *dentry)
{
@@ -1401,6 +1402,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
@@ -1424,6 +1425,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
}
return 0;
}
@ -62,7 +62,7 @@ index 2496062..3e66a90 100644
static void cleanup_group_ids(struct mount *mnt, struct mount *end)
{
diff --git a/fs/notify/group.c b/fs/notify/group.c
index 63fc294..6f4adca 100644
index bd2625b..2ff2a0f 100644
--- a/fs/notify/group.c
+++ b/fs/notify/group.c
@@ -22,6 +22,7 @@
@ -73,48 +73,59 @@ index 63fc294..6f4adca 100644
#include <linux/fsnotify_backend.h>
#include "fsnotify.h"
@@ -70,6 +71,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
@@ -65,6 +66,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
{
atomic_inc(&group->refcnt);
}
+EXPORT_SYMBOL_GPL(fsnotify_get_group);
/*
* Drop a reference to a group. Free it if it's through.
@@ -74,6 +76,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
if (atomic_dec_and_test(&group->refcnt))
fsnotify_destroy_group(group);
fsnotify_final_destroy_group(group);
}
+EXPORT_SYMBOL_GPL(fsnotify_put_group);
/*
* Create a new fsnotify_group and hold a reference for the group returned.
@@ -102,3 +104,4 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
@@ -102,6 +105,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
return group;
}
+EXPORT_SYMBOL_GPL(fsnotify_alloc_group);
int fsnotify_fasync(int fd, struct file *file, int on)
{
diff --git a/fs/notify/mark.c b/fs/notify/mark.c
index f104d56..54f36db 100644
index fc6b49b..a6bb87d 100644
--- a/fs/notify/mark.c
+++ b/fs/notify/mark.c
@@ -112,6 +112,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
if (atomic_dec_and_test(&mark->refcnt))
@@ -115,6 +115,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
mark->free_mark(mark);
}
}
+EXPORT_SYMBOL_GPL(fsnotify_put_mark);
/*
* Any time a mark is getting freed we end up here.
@@ -191,6 +192,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark)
if (unlikely(atomic_dec_and_test(&group->num_marks)))
fsnotify_final_destroy_group(group);
@@ -197,6 +198,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
fsnotify_destroy_mark_locked(mark, group);
mutex_unlock(&group->mark_mutex);
}
+EXPORT_SYMBOL_GPL(fsnotify_destroy_mark);
void fsnotify_set_mark_mask_locked(struct fsnotify_mark *mark, __u32 mask)
{
@@ -278,6 +280,7 @@ err:
@@ -281,6 +283,7 @@ err:
return ret;
}
+EXPORT_SYMBOL_GPL(fsnotify_add_mark);
/*
* clear any marks in a group in which mark->flags & flags is true
@@ -333,6 +336,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
struct inode *inode, struct vfsmount *mnt, int allow_dups)
@@ -342,6 +345,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
atomic_set(&mark->refcnt, 1);
mark->free_mark = free_mark;
}
@ -123,7 +134,7 @@ index f104d56..54f36db 100644
static int fsnotify_mark_destroy(void *ignored)
{
diff --git a/fs/open.c b/fs/open.c
index 59071f5..7e4c856 100644
index 9b33c0c..e3365035 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -60,6 +60,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
@ -132,13 +143,13 @@ index 59071f5..7e4c856 100644
}
+EXPORT_SYMBOL_GPL(do_truncate);
static long do_sys_truncate(const char __user *pathname, loff_t length)
long vfs_truncate(struct path *path, loff_t length)
{
diff --git a/fs/splice.c b/fs/splice.c
index f185c6c..f3d89da 100644
index 020c7bc..a622ade 100644
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1117,6 +1117,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
@@ -1116,6 +1116,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
return splice_write(pipe, out, ppos, len, flags);
}
@ -146,7 +157,7 @@ index f185c6c..f3d89da 100644
/*
* Attempt to initiate a splice from a file to a pipe.
@@ -1143,6 +1144,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
@@ -1142,6 +1143,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
return splice_read(in, ppos, pipe, len, flags);
}
@ -155,10 +166,10 @@ index f185c6c..f3d89da 100644
/**
* splice_direct_to_actor - splices data directly between two non-pipes
diff --git a/security/commoncap.c b/security/commoncap.c
index 6dbae46..9f4f29a 100644
index 7ee08c7..176edf1 100644
--- a/security/commoncap.c
+++ b/security/commoncap.c
@@ -979,9 +979,11 @@ int cap_mmap_addr(unsigned long addr)
@@ -988,9 +988,11 @@ int cap_mmap_addr(unsigned long addr)
}
return ret;
}
@ -171,7 +182,7 @@ index 6dbae46..9f4f29a 100644
}
+EXPORT_SYMBOL_GPL(cap_mmap_file);
diff --git a/security/device_cgroup.c b/security/device_cgroup.c
index b08d20c..a90420b 100644
index d794abc..a20f167 100644
--- a/security/device_cgroup.c
+++ b/security/device_cgroup.c
@@ -7,6 +7,7 @@
@ -182,7 +193,7 @@ index b08d20c..a90420b 100644
#include <linux/list.h>
#include <linux/uaccess.h>
#include <linux/seq_file.h>
@@ -617,6 +618,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
@@ -631,6 +632,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
access);
}
@ -191,7 +202,7 @@ index b08d20c..a90420b 100644
int devcgroup_inode_mknod(int mode, dev_t dev)
{
diff --git a/security/security.c b/security/security.c
index 8dcd4ae..6efe561 100644
index 7b88c6a..5d00a30 100644
--- a/security/security.c
+++ b/security/security.c
@@ -396,6 +396,7 @@ int security_path_rmdir(struct path *dir, struct dentry *dentry)

View File

@ -19,7 +19,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -455,8 +455,8 @@ bytes respectively. Such letter suffixes
@@ -449,8 +449,8 @@ bytes respectively. Such letter suffixes
ccw_timeout_log [S390]
See Documentation/s390/CommonIO for details.
@ -32,7 +32,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
checkreqprot [SELINUX] Set initial checkreqprot flag value.
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -784,6 +784,14 @@ config MEMCG
@@ -849,6 +849,14 @@ config MEMCG
This config option also selects MM_OWNER config option, which
could in turn add some fork/exit overhead.
@ -49,7 +49,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
depends on MEMCG && SWAP
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -5132,7 +5132,7 @@ static void cgroup_release_agent(struct
@@ -5149,7 +5149,7 @@ static void cgroup_release_agent(struct
mutex_unlock(&cgroup_mutex);
}
@ -58,7 +58,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
{
int i;
char *token;
@@ -5152,17 +5152,29 @@ static int __init cgroup_disable(char *s
@@ -5169,17 +5169,29 @@ static int __init cgroup_disable(char *s
continue;
if (!strcmp(token, ss->name)) {
@ -93,7 +93,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
*/
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5630,6 +5630,9 @@ static void mem_cgroup_move_task(struct
@@ -6745,6 +6745,9 @@ static void mem_cgroup_move_task(struct
struct cgroup_subsys mem_cgroup_subsys = {
.name = "memory",
@ -101,5 +101,5 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+ .disabled = 1,
+#endif
.subsys_id = mem_cgroup_subsys_id,
.create = mem_cgroup_create,
.pre_destroy = mem_cgroup_pre_destroy,
.css_alloc = mem_cgroup_css_alloc,
.css_offline = mem_cgroup_css_offline,

View File

@ -47,9 +47,7 @@ bugfix/alpha/alpha-use-large-data-model.diff
debian/iwlwifi-do-not-request-unreleased-firmware.patch
debian/cirrus-disable-modeset-by-default.patch
debian/fs-enable-link-security-restrictions-by-default.patch
bugfix/arm/lis3l02dq-fix-building-without-irq-to-gpio.patch
bugfix/arm/omap-musb-choice.patch
bugfix/x86/asus-laptop-Do-not-call-HWRS-on-init.patch
features/all/xen/microcode.patch
debian/radeon-no-modeset-without-firmware.patch
@ -59,13 +57,7 @@ features/all/xen/microcode-typo.patch
bugfix/all/firmware_class-log-every-success-and-failure.patch
bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
bugfix/all/exec-use-ELOOP-for-max-recursion-depth.patch
bugfix/all/megaraid_sas-fix-memory-leak-if-SGL-has-zero-length-entries.patch
bugfix/all/pps-ptp-Remove-dependencies-on-EXPERIMENTAL.patch
bugfix/all/ptp-Make-PTP_1588_CLOCK-select-rather-than-depend-on.patch
bugfix/all/ptp-Enable-clock-drivers-along-with-associated-net-P.patch
bugfix/all/sfc-Select-PTP_1588_CLOCK.patch
bugfix/all/pch_gbe-ptp_pch-Fix-the-dependency-direction-between.patch
debian/udl-disable-autoload.patch
debian/ast-disable-autoload.patch
debian/mgag200-disable-autoload.patch