[PATCH 3/3] net: stmmac: Cocci spatch "of_table"
Make sure (of/i2c/platform)_device_id tables are NULL terminated. Found by coccinelle spatch "misc/of_table.cocci" Signed-off-by: Thomas Meyer --- diff -u -p a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -315,6 +315,7 @@ static int stmmac_dt_phy(struct plat_stm { .compatible = "allwinner,sun8i-h3-emac" }, { .compatible = "allwinner,sun8i-v3s-emac" }, { .compatible = "allwinner,sun50i-a64-emac" }, + {}, }; /* If phy-handle property is passed from DT, use it as the PHY */
[PATCH 2/6] e100: Cocci spatch "pool_zalloc-simple"
Use *_pool_zalloc rather than *_pool_alloc followed by memset with 0. Found by coccinelle spatch "api/alloc/pool_zalloc-simple.cocci" Signed-off-by: Thomas Meyer --- diff -u -p a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c @@ -1910,11 +1910,10 @@ static int e100_alloc_cbs(struct nic *ni nic->cb_to_use = nic->cb_to_send = nic->cb_to_clean = NULL; nic->cbs_avail = 0; - nic->cbs = pci_pool_alloc(nic->cbs_pool, GFP_KERNEL, - &nic->cbs_dma_addr); + nic->cbs = pci_pool_zalloc(nic->cbs_pool, GFP_KERNEL, + &nic->cbs_dma_addr); if (!nic->cbs) return -ENOMEM; - memset(nic->cbs, 0, count * sizeof(struct cb)); for (cb = nic->cbs, i = 0; i < count; cb++, i++) { cb->next = (i + 1 < count) ? cb + 1 : nic->cbs;
Re: [PATCH V2] tipc: Use bsearch library function
> Am 16.09.2017 um 15:20 schrieb Jon Maloy . >> >> What part of "very time critical" have you verified and benchmarked as >> inconsequential? >> >> Please post your results. > > I agree with Joe here. This change does not simplify anything, it does not > reduce the amount of code, plus that it introduce an unnecessary outline call > in a place where we have every reason to let the compiler do its optimization > job properly. Hi, Okay, should I prepare some performance numbers or do we NAK this change? What about the other binary search implementation in the same file? Should I try to convert it it will it get NAKed for performance reasons too? With kind regards Thomas smime.p7s Description: S/MIME cryptographic signature
[PATCH V2] tipc: Use bsearch library function
Use common library function rather than explicitly coding some variant of it yourself. Signed-off-by: Thomas Meyer --- net/tipc/name_table.c | 30 +++--- 1 file changed, 15 insertions(+), 15 deletions(-) V2: Coding style diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c index bd0aac87b41a..eeb4d7a13de2 100644 --- a/net/tipc/name_table.c +++ b/net/tipc/name_table.c @@ -44,6 +44,7 @@ #include "addr.h" #include "node.h" #include +#include #define TIPC_NAMETBL_SIZE 1024 /* must be a power of 2 */ @@ -168,6 +169,18 @@ static struct name_seq *tipc_nameseq_create(u32 type, struct hlist_head *seq_hea return nseq; } +static int nameseq_find_subseq_cmp(const void *key, const void *elt) +{ + struct sub_seq *sseq = (struct sub_seq *)elt; + u32 instance = *(u32 *)key; + + if (instance < sseq->lower) + return -1; + else if (instance > sseq->upper) + return 1; + return 0; +} + /** * nameseq_find_subseq - find sub-sequence (if any) matching a name instance * @@ -176,21 +189,8 @@ static struct name_seq *tipc_nameseq_create(u32 type, struct hlist_head *seq_hea static struct sub_seq *nameseq_find_subseq(struct name_seq *nseq, u32 instance) { - struct sub_seq *sseqs = nseq->sseqs; - int low = 0; - int high = nseq->first_free - 1; - int mid; - - while (low <= high) { - mid = (low + high) / 2; - if (instance < sseqs[mid].lower) - high = mid - 1; - else if (instance > sseqs[mid].upper) - low = mid + 1; - else - return &sseqs[mid]; - } - return NULL; + return bsearch(&instance, nseq->sseqs, nseq->first_free, + sizeof(struct sub_seq), nameseq_find_subseq_cmp); } /** -- 2.11.0
[PATCH] tipc: Use bsearch library function
Use common library function rather than explicitly coding some variant of it yourself. Signed-off-by: Thomas Meyer --- net/tipc/name_table.c | 30 +++--- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/net/tipc/name_table.c b/net/tipc/name_table.c index bd0aac87b41a..345454106390 100644 --- a/net/tipc/name_table.c +++ b/net/tipc/name_table.c @@ -44,6 +44,7 @@ #include "addr.h" #include "node.h" #include +#include #define TIPC_NAMETBL_SIZE 1024 /* must be a power of 2 */ @@ -168,6 +169,18 @@ static struct name_seq *tipc_nameseq_create(u32 type, struct hlist_head *seq_hea return nseq; } +static int nameseq_find_subseq_cmp(const void *key, const void *elt) +{ + u32 instance = *(u32 *)key; + struct sub_seq *sseq = (struct sub_seq *)elt; + + if (instance < sseq->lower) + return -1; + else if (instance > sseq->upper) + return 1; + return 0; +} + /** * nameseq_find_subseq - find sub-sequence (if any) matching a name instance * @@ -176,21 +189,8 @@ static struct name_seq *tipc_nameseq_create(u32 type, struct hlist_head *seq_hea static struct sub_seq *nameseq_find_subseq(struct name_seq *nseq, u32 instance) { - struct sub_seq *sseqs = nseq->sseqs; - int low = 0; - int high = nseq->first_free - 1; - int mid; - - while (low <= high) { - mid = (low + high) / 2; - if (instance < sseqs[mid].lower) - high = mid - 1; - else if (instance > sseqs[mid].upper) - low = mid + 1; - else - return &sseqs[mid]; - } - return NULL; + return bsearch(&instance, nseq->sseqs, nseq->first_free, + sizeof(struct sub_seq), nameseq_find_subseq_cmp); } /** -- 2.11.0
Re: [PATCH 6/10] ixgbe: Use ARRAY_SIZE macro
On Tue, Sep 05, 2017 at 02:22:05PM -0700, David Miller wrote: > From: Joe Perches > Date: Tue, 05 Sep 2017 13:01:18 -0700 > > > On Tue, 2017-09-05 at 21:45 +0200, Thomas Meyer wrote: > >> On Tue, Sep 05, 2017 at 11:50:44AM -0700, David Miller wrote: > >> > From: Thomas Meyer > >> > Date: Sun, 03 Sep 2017 14:19:31 +0200 > >> > > >> > > Use ARRAY_SIZE macro, rather than explicitly coding some variant of it > >> > > yourself. > >> > > Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i > >> > > -e > >> > > 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ > >> > > /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\) > >> > > /ARRAY_SIZE(\1)/g' and manual check/verification. > >> > > > >> > > Signed-off-by: Thomas Meyer > >> > > >> > This should be submitted to the Intel ethernet driver maintainers. > >> > >> Hi, > >> > >> my script checks the output of get_maintainer scripts and only sends to > >> "open > >> list" entries. > >> > >> The intel-wired-...@lists.osuosl.org is moderated, so that's why the patch > >> wasn't send there. > >> > >> Strangely the lists for nouv...@lists.freedesktop.org and > >> intel-gvt-...@lists.freedesktop.org appears as open lists in the > >> MAINTAINERS > >> file but seems to be also moderated lists... At least I got some reply > >> that my > >> message awaits approval. Maybe an update to the MAINTAINERS file is missing > >> here? > >> > >> I may drop above check in my script and send to all mailing lists that > >> get_maintainer.pl will return. > > > > There's a difference between moderated and subscriber-only > > entries in MAINTAINERS. > > > > get_maintainers will by default list moderated lists and > > not show subscriber-only lists unless using the -s switch. > > Furthermore, nothing prevented you from CC:'ing the maintainer, > Jeff Kirscher. Hi, That's the other condition in my script. I only send to the role "maintainer" from the output of get_maintainer.pl. But Mr Jeff Kirscher is only listed as supporter... Anyway I did bounce the email to him. with kind regards thomas
Re: [PATCH 6/10] ixgbe: Use ARRAY_SIZE macro
On Tue, Sep 05, 2017 at 11:50:44AM -0700, David Miller wrote: > From: Thomas Meyer > Date: Sun, 03 Sep 2017 14:19:31 +0200 > > > Use ARRAY_SIZE macro, rather than explicitly coding some variant of it > > yourself. > > Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i -e > > 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\) > > /ARRAY_SIZE(\1)/g' and manual check/verification. > > > > Signed-off-by: Thomas Meyer > > This should be submitted to the Intel ethernet driver maintainers. Hi, my script checks the output of get_maintainer scripts and only sends to "open list" entries. The intel-wired-...@lists.osuosl.org is moderated, so that's why the patch wasn't send there. Strangely the lists for nouv...@lists.freedesktop.org and intel-gvt-...@lists.freedesktop.org appears as open lists in the MAINTAINERS file but seems to be also moderated lists... At least I got some reply that my message awaits approval. Maybe an update to the MAINTAINERS file is missing here? I may drop above check in my script and send to all mailing lists that get_maintainer.pl will return. > > Thank you.
[PATCH 6/10] ixgbe: Use ARRAY_SIZE macro
Use ARRAY_SIZE macro, rather than explicitly coding some variant of it yourself. Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i -e 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\) /ARRAY_SIZE(\1)/g' and manual check/verification. Signed-off-by: Thomas Meyer --- diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c index 72d84a065e34..fabb11475fb4 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c @@ -21,6 +21,7 @@ * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497 * **/ +#include #include "ixgbe_x540.h" #include "ixgbe_type.h" #include "ixgbe_common.h" @@ -947,7 +948,7 @@ static s32 ixgbe_checksum_ptr_x550(struct ixgbe_hw *hw, u16 ptr, u16 length, bufsz, i, start; u16 *local_buffer; - bufsz = sizeof(buf) / sizeof(buf[0]); + bufsz = ARRAY_SIZE(buf); /* Read a chunk at the pointer location */ if (!buffer) {
[PATCH 8/10] ath9k: Use ARRAY_SIZE macro
Use ARRAY_SIZE macro, rather than explicitly coding some variant of it yourself. Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i -e 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\) /ARRAY_SIZE(\1)/g' and manual check/verification. Signed-off-by: Thomas Meyer --- diff --git a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c index 3dbfd86ebe36..c2e210c0a770 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c @@ -15,6 +15,7 @@ */ #include +#include #include "hw.h" #include "ar9003_phy.h" #include "ar9003_eeprom.h" @@ -2946,14 +2947,12 @@ static const struct ar9300_eeprom *ar9300_eep_templates[] = { static const struct ar9300_eeprom *ar9003_eeprom_struct_find_by_id(int id) { -#define N_LOOP (sizeof(ar9300_eep_templates) / sizeof(ar9300_eep_templates[0])) int it; - for (it = 0; it < N_LOOP; it++) + for (it = 0; it < ARRAY_SIZE(ar9300_eep_templates); it++) if (ar9300_eep_templates[it]->templateVersion == id) return ar9300_eep_templates[it]; return NULL; -#undef N_LOOP } static int ath9k_hw_ar9300_check_eeprom(struct ath_hw *ah)
[PATCH 7/10] net/mlx4_core: Use ARRAY_SIZE macro
Use ARRAY_SIZE macro, rather than explicitly coding some variant of it yourself. Found with: find -type f -name "*.c" -o -name "*.h" | xargs perl -p -i -e 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\ /\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\) /ARRAY_SIZE(\1)/g' and manual check/verification. Signed-off-by: Thomas Meyer --- diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c index 041c0ed65929..8eca12927be0 100644 --- a/drivers/net/ethernet/mellanox/mlx4/fw.c +++ b/drivers/net/ethernet/mellanox/mlx4/fw.c @@ -36,6 +36,7 @@ #include #include #include +#include #include "fw.h" #include "icm.h" @@ -2450,14 +2451,14 @@ int mlx4_config_dev_retrieval(struct mlx4_dev *dev, csum_mask = (config_dev.rx_checksum_val >> CONFIG_DEV_RX_CSUM_MODE_PORT1_BIT_OFFSET) & CONFIG_DEV_RX_CSUM_MODE_MASK; - if (csum_mask >= sizeof(config_dev_csum_flags)/sizeof(config_dev_csum_flags[0])) + if (csum_mask >= ARRAY_SIZE(config_dev_csum_flags)) return -EINVAL; params->rx_csum_flags_port_1 = config_dev_csum_flags[csum_mask]; csum_mask = (config_dev.rx_checksum_val >> CONFIG_DEV_RX_CSUM_MODE_PORT2_BIT_OFFSET) & CONFIG_DEV_RX_CSUM_MODE_MASK; - if (csum_mask >= sizeof(config_dev_csum_flags)/sizeof(config_dev_csum_flags[0])) + if (csum_mask >= ARRAY_SIZE(config_dev_csum_flags)) return -EINVAL; params->rx_csum_flags_port_2 = config_dev_csum_flags[csum_mask]; diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c index 5fe5cdc51357..fe18650c9342 100644 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c @@ -34,6 +34,7 @@ */ #include +#include #include #include #include @@ -3658,7 +3659,7 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data, * per port, we must limit the number of VFs to 63 (since their are * 128 MACs) */ - for (i = 0; i < sizeof(nvfs)/sizeof(nvfs[0]) && i < num_vfs_argc; + for (i = 0; i < ARRAY_SIZE(nvfs) && i < num_vfs_argc; total_vfs += nvfs[param_map[num_vfs_argc - 1][i]], i++) { nvfs[param_map[num_vfs_argc - 1][i]] = num_vfs[i]; if (nvfs[i] < 0) { @@ -3667,7 +3668,7 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data, goto err_disable_pdev; } } - for (i = 0; i < sizeof(prb_vf)/sizeof(prb_vf[0]) && i < probe_vfs_argc; + for (i = 0; i < ARRAY_SIZE(prb_vf) && i < probe_vfs_argc; i++) { prb_vf[param_map[probe_vfs_argc - 1][i]] = probe_vf[i]; if (prb_vf[i] < 0 || prb_vf[i] > nvfs[i]) { @@ -3746,11 +3747,11 @@ static int __mlx4_init_one(struct pci_dev *pdev, int pci_dev_data, if (total_vfs) { unsigned vfs_offset = 0; - for (i = 0; i < sizeof(nvfs)/sizeof(nvfs[0]) && + for (i = 0; i < ARRAY_SIZE(nvfs) && vfs_offset + nvfs[i] < extended_func_num(pdev); vfs_offset += nvfs[i], i++) ; - if (i == sizeof(nvfs)/sizeof(nvfs[0])) { + if (i == ARRAY_SIZE(nvfs)) { err = -ENODEV; goto err_release_regions; }
Re: [PATCH] ipv6: sr: Use ARRAY_SIZE macro
On Fri, Sep 01, 2017 at 08:51:55PM -0700, Joe Perches wrote: > On Fri, 2017-09-01 at 18:35 -0700, David Miller wrote: > > From: Thomas Meyer > > Date: Thu, 31 Aug 2017 16:18:15 +0200 > > > > > Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first > > > candidates. > > > Maybe a coccinelle can catch all of those. > Hi, > Umm: try scripts/coccinelle/misc/array_size.cocci Yes, I found out/remembered after I submitted above patch... I used to run most of the cocci spatches (some just run too long) after each rc1 release, but lost interest/time. nobody seems to do this regularly, at least for existing spatches. See 6 patches with Message-ID 20170901212907.5662-1-tho...@m3y3r.de > Until then, maybe a perl script? > > $ git grep --name-only sizeof.*/.*sizeof drivers/net | \ > xargs perl -p -i -e > 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\/\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\)/ARRAY_SIZE(\1)/g' > > gives: > > $ git diff --stat drivers/net > drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 2 +- > drivers/net/ethernet/mellanox/mlx4/fw.c | 4 +-- > drivers/net/ethernet/mellanox/mlx4/main.c | 8 +++--- > drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +- > drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phytbl_n.c | 186 > +++--- > 5 files changed, 101 insertions(+), 101 deletions(-) Which makes me wonder why cocci didn't found above places... Also cocci includes linux/kernel.h if not already present. I will give above regex a try for the whole kernel tree and check for false positives. with kind regards thomas
[PATCH] ipv6: sr: Use ARRAY_SIZE macro
Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first candidates. Maybe a coccinelle can catch all of those. Signed-off-by: Thomas Meyer --- net/ipv6/seg6_hmac.c | 7 --- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/ipv6/seg6_hmac.c b/net/ipv6/seg6_hmac.c index f950cb53d5e3..33fb35cbfac1 100644 --- a/net/ipv6/seg6_hmac.c +++ b/net/ipv6/seg6_hmac.c @@ -12,6 +12,7 @@ */ #include +#include #include #include #include @@ -110,7 +111,7 @@ static struct seg6_hmac_algo *__hmac_get_algo(u8 alg_id) struct seg6_hmac_algo *algo; int i, alg_count; - alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo); + alg_count = ARRAY_SIZE(hmac_algos); for (i = 0; i < alg_count; i++) { algo = &hmac_algos[i]; if (algo->alg_id == alg_id) @@ -360,7 +361,7 @@ static int seg6_hmac_init_algo(void) struct shash_desc *shash; int i, alg_count, cpu; - alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo); + alg_count = ARRAY_SIZE(hmac_algos); for (i = 0; i < alg_count; i++) { struct crypto_shash **p_tfm; @@ -421,7 +422,7 @@ void seg6_hmac_exit(void) struct seg6_hmac_algo *algo = NULL; int i, alg_count, cpu; - alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo); + alg_count = ARRAY_SIZE(hmac_algos); for (i = 0; i < alg_count; i++) { algo = &hmac_algos[i]; for_each_possible_cpu(cpu) { -- 2.11.0
Re: 2.6.21 known regressions (v2) (for -stable team)
Michal Piotrowski schrieb: > Subject: Bad interaction between dynticks and amarok? > References : http://lkml.org/lkml/2007/4/26/307 > Submitter : Thomas Meyer <[EMAIL PROTECTED]> > Status : Unknow > > Please remove this from the regression list. This seems to be an userspace only problem and is not related to any kernel driver: amarok and/or audacious seems to repeatedly read/write to the X socket: tail of the strace of audacious: gettimeofday({1177782978, 24491}, NULL) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 581502867}) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 581614815}) = 0 select(4, [3], [3], NULL, NULL) = 1 (out [3]) writev(3, [{"[EMAIL PROTECTED]"..., 40}], 1) = 40 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 25286}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 33242}, NULL) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 33475}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 1) = 0 gettimeofday({1177782978, 36548}, NULL) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 593554129}) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 36921}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 46572}, NULL) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 603578038}) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 603689148}) = 0 select(4, [3], [3], NULL, NULL) = 1 (out [3]) writev(3, [{"[EMAIL PROTECTED] \0L\0\20\0\23"..., 40}], 1) = 40 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 47341}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 56566}, NULL) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 56799}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 0) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 613921380}) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 57282}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 67696}, NULL) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 624704202}) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 624817966}) = 0 select(4, [3], [3], NULL, NULL) = 1 (out [3]) writev(3, [{"[EMAIL PROTECTED] \0L\0\20\0\23\0"..., 40}], 1) = 40 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 68476}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 76564}, NULL) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 76796}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 0) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 633919963}) = 0 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 77280}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN}], 2, 9) = 0 gettimeofday({1177782978, 86898}, NULL) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 643911329}) = 0 clock_gettime(CLOCK_MONOTONIC, {224, 644025581}) = 0 select(4, [3], [3], NULL, NULL) = 1 (out [3]) writev(3, [{"[EMAIL PROTECTED] \0L\0\20\0\23"..., 40}], 1) = 40 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 87702}, NULL) = 0 poll([{fd=4, events=POLLIN}, {fd=3, events=POLLIN, revents=POLLIN}], 2, 9) = 1 read(3, "\n\3P\v\4\0\200\2\0\0\0\0\210v\274\277r\300\10\10x\35!"..., 4096) = 96 read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) read(3, 0x80da6c8, 4096)= -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1177782978, 90108}, NULL) = 0 gettimeofday({1177782978, 90163}, NULL) = 0 But i didn't have a look at what is going on here. But running amarok and/or audacious (without playing a song!) adds 50-70 more interrupts to the timer interrupt. with kind regards thomas - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html