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:
parent
cdf72380bf
commit
7ee04719e6
|
@ -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:
|
||||
|
|
|
@ -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;
|
|
@ -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);
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
|
@ -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;
|
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
||||
|
|
|
@ -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/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue