Re: [lng-odp] [API-NEXT PATCH 1/3] drv: adding byteorder.h

2016-02-25 Thread Christophe Milard
On 25 February 2016 at 22:43, Mike Holmes wrote: > On 25 February 2016 at 08:17, Christophe Milard < > christophe.mil...@linaro.org> wrote: > >> I guess this is stuck untill BKK discussion...? >> > > I hope not. > > >> >> On 18 February 2016 at 12:37, Christophe Milard <

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread José Pekkarinen
Hi, > > And this is what we want, to have more flexibility to set this to invalid, > > as the only way to do a pure assignation to ODP_QUEUE_INVALID for unions > > is > > setting ODP_QUEUE_INVALID as stated in the following line. > > > > > > > > #define ODP_QUEUE_INVALID

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread Bala Manoharan
Regards, Bala On 26 February 2016 at 11:51, José Pekkarinen wrote: > On Thursday 25 February 2016 15:01:11 EXT Bill Fischofer wrote: > > > On Thu, Feb 25, 2016 at 12:39 PM, José Pekkarinen < > jose.pekkari...@nokia.com > > > > wrote: > > > > > > > > On Thursday 25

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread José Pekkarinen
On Thursday 25 February 2016 15:01:11 EXT Bill Fischofer wrote: > On Thu, Feb 25, 2016 at 12:39 PM, José Pekkarinen > wrote: > > > > On Thursday 25 February 2016 11:54:31 EXT Bill Fischofer wrote: > > > Anything with an initial underscore (like _odp_cast_scalar()) is

Re: [lng-odp] [API-NEXT v3] doc: user-guide documentation for classification

2016-02-25 Thread Bala Manoharan
On 25 February 2016 at 18:14, Christophe Milard < christophe.mil...@linaro.org> wrote: > > > On 25 February 2016 at 09:56, Balasubramanian Manoharan < > bala.manoha...@linaro.org> wrote: > >> Signed-off-by: Balasubramanian Manoharan >> --- >> v3: Incorporates

[lng-odp] [API-NEXT v4] doc: user-guide documentation for classification

2016-02-25 Thread Balasubramanian Manoharan
User guide documentation for classification Signed-off-by: Balasubramanian Manoharan --- v4: Adds example code into source code section v3: Incorporates classification user guide to main document Adds Practical example section v2: Incorporates review comments from

[lng-odp] [API-NEXT PATCHv7 5/5] validation: tm: add cunit test for traffic mngr

2016-02-25 Thread Bill Fischofer
From: Barry Spinney Signed-off-by: Barry Spinney Signed-off-by: Bill Fischofer --- configure.ac |1 + test/validation/Makefile.am |1 +

[lng-odp] [API-NEXT PATCHv7 4/5] linux-generic: tm: fix numerous bugs in timer wheel and main tm implementation

2016-02-25 Thread Bill Fischofer
From: Barry Spinney Signed-off-by: Barry Spinney Signed-off-by: Bill Fischofer --- platform/linux-generic/include/odp_internal.h |1 + .../include/odp_timer_wheel_internal.h |5 +-

[lng-odp] [API-NEXT PATCHv7 3/5] linux-generic: tm: Add missing name table initialization call.

2016-02-25 Thread Bill Fischofer
From: Barry Spinney This patch adds a call from odp_init.c to _odp_int_name_tbl_init(). Signed-off-by: Barry Spinney Signed-off-by: Bill Fischofer --- platform/linux-generic/include/odp_internal.h | 8 ++--

[lng-odp] [API-NEXT PATCHv7 2/5] example: tm: remove reference to internal name table init api

2016-02-25 Thread Bill Fischofer
From: Barry Spinney Signed-off-by: Barry Spinney Signed-off-by: Bill Fischofer --- example/traffic_mgmt/odp_traffic_mgmt.c | 4 1 file changed, 4 deletions(-) diff --git a/example/traffic_mgmt/odp_traffic_mgmt.c

[lng-odp] [API-NEXT PATCHv7 1/5] api: tm: replace pktio with pktout_queue in odp_tm_egress_struct

2016-02-25 Thread Bill Fischofer
From: Barry Spinney Signed-off-by: Barry Spinney Signed-off-by: Bill Fischofer --- include/odp/api/spec/traffic_mngr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/odp/api/spec/traffic_mngr.h

Re: [lng-odp] [API-NEXT PATCH 2/5] linux-generic: pktio: pktout event queues

2016-02-25 Thread Bill Fischofer
The API looks solid and I'm OK with the question of flush_out_queues() being opened as a bug against RC1 since the purpose of RC1 is to have a final API. Petri, if you believe that the scope of that would be better handled as a follow-on bugfix rather than a v2 to this patch that's find. Other

Re: [lng-odp] [API-NEXT PATCH 2/5] linux-generic: pktio: pktout event queues

2016-02-25 Thread Bill Fischofer
On Thu, Feb 25, 2016 at 5:31 AM, Petri Savolainen < petri.savolai...@nokia.com> wrote: > Implemented pktout event queues. > > Signed-off-by: Petri Savolainen > --- > .../linux-generic/include/odp_packet_io_internal.h | 2 + >

Re: [lng-odp] [API-NEXT PATCH 1/3] drv: adding byteorder.h

2016-02-25 Thread Mike Holmes
On 25 February 2016 at 08:17, Christophe Milard < christophe.mil...@linaro.org> wrote: > I guess this is stuck untill BKK discussion...? > I hope not. > > On 18 February 2016 at 12:37, Christophe Milard < > christophe.mil...@linaro.org> wrote: > >> A complete -partly working- driver prototype

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread Bill Fischofer
On Thu, Feb 25, 2016 at 12:39 PM, José Pekkarinen wrote: > On Thursday 25 February 2016 11:54:31 EXT Bill Fischofer wrote: > > > Anything with an initial underscore (like _odp_cast_scalar()) is an > > > implementation-internal API (in this case, linux-generic) and is

[lng-odp] [Bug 2083] New: Helper tests are missing

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=2083 Bug ID: 2083 Summary: Helper tests are missing Product: OpenDataPlane - linux- generic reference Version: 1.7 Hardware: Other OS: Linux Status: UNCONFIRMED

[lng-odp] [Bug 2082] New: Helper documentation is missing

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=2082 Bug ID: 2082 Summary: Helper documentation is missing Product: OpenDataPlane - linux- generic reference Version: 1.7 Hardware: Other OS: Linux Status: UNCONFIRMED

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread José Pekkarinen
On Thursday 25 February 2016 11:54:31 EXT Bill Fischofer wrote: > Anything with an initial underscore (like _odp_cast_scalar()) is an > implementation-internal API (in this case, linux-generic) and is most > definitely neither portable nor subject to any release-to-release > compatibility

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread Bill Fischofer
Anything with an initial underscore (like _odp_cast_scalar()) is an implementation-internal API (in this case, linux-generic) and is most definitely neither portable nor subject to any release-to-release compatibility guarantees, so I'd highly discourage trying to use them. If I understand your

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread José Pekkarinen
On Thursday 25 February 2016 18:57:47 EXT Bala Manoharan wrote: > On 22 February 2016 at 18:04, José Pekkarinen > > wrote: > > To provide support of different definitions of odp_queue_t > > it's good to have a proper mechanism to set the queue invalid > > in case any

Re: [lng-odp] [API-NEXT PATCH v4 13/13] linux-generic: dpdk: close resources in odp_pktio_close()

2016-02-25 Thread Zoltan Kiss
On 25/02/16 15:53, Zoltan Kiss wrote: pktio_entry already has a 'state' field, why not using that? Sorry for the slow reply. The state field in pktio_entry is modified outside dpdk pktio code, so it cannot be used to track if rte_eth_dev_start() has been actually called. If

Re: [lng-odp] [API-NEXT PATCH v4 13/13] linux-generic: dpdk: close resources in odp_pktio_close()

2016-02-25 Thread Zoltan Kiss
On 25/02/16 07:22, Elo, Matias (Nokia - FI/Espoo) wrote: -Original Message- From: EXT Zoltan Kiss [mailto:zoltan.k...@linaro.org] Sent: Wednesday, February 24, 2016 9:10 PM To: Elo, Matias (Nokia - FI/Espoo) ; lng- o...@lists.linaro.org Subject: Re: [lng-odp]

Re: [lng-odp] [API-NEXT PATCHv6 3/6] linux-generic: tm: Add missing name table initialization call.

2016-02-25 Thread Bill Fischofer
OK, thanks. On Thu, Feb 25, 2016 at 7:59 AM, Maxim Uvarov wrote: > odp_timer_wheel.c:713:20: error: conflicting types for > '_odp_timer_wheel_create' > _odp_timer_wheel_t _odp_timer_wheel_create(uint32_t max_concurrent_timers, > ^ > In file included

Re: [lng-odp] [API-NEXT PATCHv6 3/6] linux-generic: tm: Add missing name table initialization call.

2016-02-25 Thread Maxim Uvarov
odp_timer_wheel.c:713:20: error: conflicting types for '_odp_timer_wheel_create' _odp_timer_wheel_t _odp_timer_wheel_create(uint32_t max_concurrent_timers, ^ In file included from odp_timer_wheel.c:14:0: ./include/odp_timer_wheel_internal.h:23:20: note: previous declaration

[lng-odp] [Bug 1706] odp_term_local() not being called from main thread

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=1706 Mike Holmes changed: What|Removed |Added Assignee|lng-odp@lists.linaro.org|maxim.uva...@linaro.org

[lng-odp] [Bug 1881] linux-generic/arch does not contain architectures

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=1881 Mike Holmes changed: What|Removed |Added Status|CONFIRMED |RESOLVED

[lng-odp] [Bug 1946] make doxygen-html does not work for out of tree builds

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=1946 Mike Holmes changed: What|Removed |Added Resolution|--- |FIXED

[lng-odp] [Bug 2039] user input expected in implementers guide

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=2039 Mike Holmes changed: What|Removed |Added Resolution|--- |FIXED

[lng-odp] [Bug 2076] Scheduler validation suite Fails in CI

2016-02-25 Thread bugzilla-daemon
https://bugs.linaro.org/show_bug.cgi?id=2076 Mike Holmes changed: What|Removed |Added Ever confirmed|0 |1

[lng-odp] Try operation for rwlock and recursive_rwlock

2016-02-25 Thread Sorin Vultureanu
Hi, The BSD TCP/IP stack requires try operation for recursive write locking. The OFP project has some malfunctioning implementation of recursive rwlocks with this try operation. 1. Can ODP add try operation for recursive_rwlock and rwlock? 2. How can I implement this try operation over

Re: [lng-odp] [PATCH] Provide a generic function to invalidate a queue.

2016-02-25 Thread Bala Manoharan
On 22 February 2016 at 18:04, José Pekkarinen wrote: > To provide support of different definitions of odp_queue_t > it's good to have a proper mechanism to set the queue invalid > in case any error during the transmission happen. > What is the expectation from the

Re: [lng-odp] [API-NEXT PATCH 1/3] drv: adding byteorder.h

2016-02-25 Thread Christophe Milard
I guess this is stuck untill BKK discussion...? On 18 February 2016 at 12:37, Christophe Milard < christophe.mil...@linaro.org> wrote: > A complete -partly working- driver prototype was sent as in RFC: > https://lists.linaro.org/pipermail/lng-odp/2016-January/019162.html > This approach of the

Re: [lng-odp] [PATCH v2] Provide a generic function to invalidate a queue.

2016-02-25 Thread Maxim Uvarov
Hello Jose, patch should have prefix "API-NEXT" and short log starts with "api:" CC, Petri to review this patch. I think we need more explanation about usage in doxygen comment than in git log. Maxim. On 02/22/16 15:39, José Pekkarinen wrote: To provide support of different definitions of

Re: [lng-odp] [PATCH 1/3] bootstrap: force autoconf update

2016-02-25 Thread Maxim Uvarov
Merged, Maxim. On 02/22/16 22:18, Anders Roxell wrote: On 2016-02-22 10:17, Ricardo Salveti wrote: Since scmversion gets populated during the configure process, the only way for the cache to be updated through commits is by either running make distclean or by forcing autoconf updates when

Re: [lng-odp] [API-NEXT v3] doc: user-guide documentation for classification

2016-02-25 Thread Christophe Milard
On 25 February 2016 at 09:56, Balasubramanian Manoharan < bala.manoha...@linaro.org> wrote: > Signed-off-by: Balasubramanian Manoharan > --- > v3: Incorporates classification user guide to main document > Adds Practical example section > v2: Incorporates review

[lng-odp] [PATCHv2 1/2] performance: scheduling: cleanly destroy resources

2016-02-25 Thread Maxim Uvarov
Signed-off-by: Maxim Uvarov --- test/performance/odp_scheduling.c | 52 --- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/test/performance/odp_scheduling.c b/test/performance/odp_scheduling.c index d785878..6a94cb0

[lng-odp] [PATCHv2 2/2] example: generator: clean up termination progress

2016-02-25 Thread Maxim Uvarov
Carefully shutdown all resources before exit. Signed-off-by: Maxim Uvarov --- example/generator/odp_generator.c | 61 --- 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/example/generator/odp_generator.c

[lng-odp] [PATCHv2 0/2] cleanly destroy resources

2016-02-25 Thread Maxim Uvarov
v2: apply on master, not api-next and correst stop instead of close. Maxim Uvarov (2): performance: scheduling: cleanly destroy resources example: generator: clean up termination progress example/generator/odp_generator.c | 61 ---

Re: [lng-odp] [PATCH] validation: print backtrace on segfault and other related signals

2016-02-25 Thread Maxim Uvarov
ping. Is that reasonable patch? Maxim. On 02/17/16 15:11, Maxim Uvarov wrote: If any test got segmentation fault it's better to print something useful for debug. That function is based on example code for TM. I hope it will help to see fails in CI where is not clear how to get core files.

Re: [lng-odp] [PATCHv3 0/4] shmem docs

2016-02-25 Thread Maxim Uvarov
Merged, On 02/23/16 01:31, Bill Fischofer wrote: For this series: Reviewed-and-tested-by: Bill Fischofer > BTW, both queueing and queuing are acceptable English spellings and there doesn't seem to be any obvious consensus as to

[lng-odp] [API-NEXT PATCH] linux-generic: dpdk: fix mtu return value type

2016-02-25 Thread Matias Elo
DPDK pktio build is broken after odp_pktio_mtu() API change. Fix this by using correct return value type in dpdk_mtu_get(). Signed-off-by: Matias Elo --- platform/linux-generic/pktio/dpdk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git

Re: [lng-odp] [PATCH v2 1/4] doc: drop using output dir for guides

2016-02-25 Thread Maxim Uvarov
patchset merged, Maxim. On 02/22/16 23:03, Mike Holmes wrote: Signed-off-by: Mike Holmes Reviewed-and-tested-by: Bill Fischofer --- doc/Makefile.am | 3 --- doc/Makefile.inc | 2 --

Re: [lng-odp] [API-NEXT PATCH] example: generator: retry tx if no failure code is returned

2016-02-25 Thread Elo, Matias (Nokia - FI/Espoo)
Thanks -Matias > -Original Message- > From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of EXT Maxim > Uvarov > Sent: Thursday, February 25, 2016 1:48 PM > To: lng-odp@lists.linaro.org > Subject: Re: [lng-odp] [API-NEXT PATCH] example: generator: retry tx if no > failure

Re: [lng-odp] [API-NEXT PATCH] example: generator: retry tx if no failure code is returned

2016-02-25 Thread Maxim Uvarov
Reviewed, tested and merged :) Maxim. On 02/24/16 16:47, Matias Elo wrote: If odp_pktout_send() doesn't return an error code (ret == 0) try to resend after a small delay. This enables running odp_l2fwd_run validation test with netmap enabled. Signed-off-by: Matias Elo

Re: [lng-odp] [API-NEXT PATCH v3 9/9] linux-generic: validation: add netmap test

2016-02-25 Thread Maxim Uvarov
Matias, I merged all patches, but not this one. make distcheck fails if netmap is turned on. I have suspicious that Makefile ifdefs does not work in ./platform/l-g/test/pktio/ directory. Patch it self is good and all test passes. Only thing is missing is distcheck. Maxim. On 02/23/16

[lng-odp] [API-NEXT PATCH 4/5] test: l2fwd: add event queue packet output

2016-02-25 Thread Petri Savolainen
Added packet output mode selection and support for event queue mode. Direct mode is still the default. Signed-off-by: Petri Savolainen --- test/performance/odp_l2fwd.c | 354 ++- 1 file changed, 217 insertions(+), 137

[lng-odp] [API-NEXT PATCH 5/5] linux-generic: pktio: simplify callback interface

2016-02-25 Thread Petri Savolainen
Since packet queue handles are stored on upper layer, there is no need for each pktio module to implement queue query function (callback). Removed callbacks and single queue default implementations. Signed-off-by: Petri Savolainen ---

[lng-odp] [API-NEXT PATCH 3/5] validation: pktio: add output event queue tests

2016-02-25 Thread Petri Savolainen
Added validation test cases for packet output through event queues (ODP_PKTOUT_MODE_QUEUE). Signed-off-by: Petri Savolainen --- test/validation/pktio/pktio.c | 74 +++ test/validation/pktio/pktio.h | 3 ++ 2 files changed, 71

[lng-odp] [API-NEXT PATCH 2/5] linux-generic: pktio: pktout event queues

2016-02-25 Thread Petri Savolainen
Implemented pktout event queues. Signed-off-by: Petri Savolainen --- .../linux-generic/include/odp_packet_io_internal.h | 2 + .../linux-generic/include/odp_queue_internal.h | 2 +- platform/linux-generic/odp_packet_io.c | 123

[lng-odp] [API-NEXT PATCH 1/5] api: pktio: add pktout event queue

2016-02-25 Thread Petri Savolainen
Added ODP_PKTOUT_MODE_QUEUE and odp_pktout_event_queue() to enable configuration of event queues for packet output. This is useful (for modularity) when output of an application module may be connected to input of other modules or packet output depending on the application configuration.

Re: [lng-odp] Error building user guide

2016-02-25 Thread Maxim Uvarov
On 02/24/16 12:02, Nicolas Morey-Chaisemartin wrote: Hi, I just pulled 1.7.0 and tried to build the official release (not our port) and I get some error messages during the doc build. asciidoc: WARNING: implementers-guide.adoc: line 43: {sys:"/usr/bin/python2" -u -c "import base64,sys;

Re: [lng-odp] [PATCH] scripts: git_hash: support gitfiles

2016-02-25 Thread Maxim Uvarov
On 02/23/16 18:38, Nicolas Morey-Chaisemartin wrote: With recent git releases, the .git at the top of a repo is not necessary a directory but can be a gitfile pointing to a remote git directory. This is commonly used by git-worktree and git-submodule. This patch changes the check for .git to

Re: [lng-odp] [PATCHv2 1/2] api: init: add initializer function for odp_platform_init_t

2016-02-25 Thread Maxim Uvarov
On 02/23/16 18:16, Nicolas Morey-Chaisemartin wrote: Signed-off-by: Nicolas Morey-Chaisemartin --- Reposted due to mail issues include/odp/api/spec/init.h | 8 platform/linux-generic/odp_init.c | 4 2 files changed, 12 insertions(+) diff --git

Re: [lng-odp] [PATCHv2 2/2] validation: init: add test for init with platform parameters

2016-02-25 Thread Maxim Uvarov
On 02/23/16 18:16, Nicolas Morey-Chaisemartin wrote: Signed-off-by: Nicolas Morey-Chaisemartin --- Reposted due to mail issues test/validation/init/init.c | 16 test/validation/init/init.h | 1 + 2 files changed, 17 insertions(+) diff --git

Re: [lng-odp] [PATCH] validation: timer: replace %d by PRIu32

2016-02-25 Thread Maxim Uvarov
On 02/23/16 18:47, Nicolas Morey-Chaisemartin wrote: Signed-off-by: Nicolas Morey-Chaisemartin --- test/validation/timer/timer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/validation/timer/timer.c b/test/validation/timer/timer.c index

Re: [lng-odp] [PATCH] linux-generic: pktio: do not include net/if.h and linux/if.h

2016-02-25 Thread Maxim Uvarov
On 02/23/16 19:02, Nicolas Morey-Chaisemartin wrote: Both are incompatible: In file included from platform/linux-generic/pktio/ethtool.c:13:0: /usr/include/net/if.h:44:5: error: redeclaration of enumerator ‘IFF_UP’ IFF_UP = 0x1, /* Interface is up. */ ^ In file included from

Re: [lng-odp] [PATCH] example: time: use PRIu32 where needed

2016-02-25 Thread Maxim Uvarov
On 02/23/16 19:41, Nicolas Morey-Chaisemartin wrote: Signed-off-by: Nicolas Morey-Chaisemartin --- example/time/time_global_test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example/time/time_global_test.c b/example/time/time_global_test.c index

Re: [lng-odp] [PATCH] configure.ac: distribute the AC_CONFIG_FILES

2016-02-25 Thread Maxim Uvarov
One small comment bellow. Thanks for cleaning this up. Maxim. On 02/25/16 01:08, Mike Holmes wrote: Signed-off-by: Mike Holmes --- configure.ac| 44 doc/m4/configure.m4 | 5 + example/m4/configure.m4

[lng-odp] [PATCH] linux-generic: make x86 cpuinfo parser more robust

2016-02-25 Thread hongbo . zhang
From: Hongbo Zhang This is for https://bugs.linaro.org/show_bug.cgi?id=2033 If the model string doesn't include speed info, segfault should be avoided. Signed-off-by: Hongbo Zhang --- platform/linux-generic/arch/x86/odp_sysinfo_parse.c | 10

[lng-odp] [API-NEXT v3] doc: user-guide documentation for classification

2016-02-25 Thread Balasubramanian Manoharan
Signed-off-by: Balasubramanian Manoharan --- v3: Incorporates classification user guide to main document Adds Practical example section v2: Incorporates review comments from Christophe doc/users-guide/users-guide-cls.adoc | 220 +++

Re: [lng-odp] [PATCH] configure.ac: distribute the AC_CONFIG_FILES

2016-02-25 Thread Christophe Milard
On 2016-02-24 17:08, Mike Holmes wrote: > Signed-off-by: Mike Holmes Reviewed-by: Christophe Milard > --- > configure.ac| 44 > doc/m4/configure.m4 | 5 + >

Re: [lng-odp] [PATCH V2 2/2] linux-generic: test: add process mode scheduler test

2016-02-25 Thread Christophe Milard
On 24 February 2016 at 22:24, Mike Holmes wrote: > Add new platform test infrastructure to run the scheduler performance > test in process mode. > > Signed-off-by: Mike Holmes > --- > platform/linux-generic/m4/configure.m4 | 1 + >

Re: [lng-odp] [PATCH V2 1/2] linux-generic: test: move validation tests to their own directory

2016-02-25 Thread Christophe Milard
On 24 February 2016 at 22:24, Mike Holmes wrote: > Simplify adding platform performance tests by mirroring the test directory > structure and moving the validation tests to their own directory under > platform also. > > Signed-off-by: Mike Holmes