@@ -38,6 +38,7 @@ import (
3838 "github.com/docker/machine/libmachine/mcnutils"
3939 "github.com/docker/machine/libmachine/ssh"
4040 "github.com/docker/machine/libmachine/state"
41+ "github.com/pkg/errors"
4142
4243 pkgdrivers "k8s.io/minikube/pkg/drivers"
4344)
@@ -79,11 +80,9 @@ type Driver struct {
7980 DiskPath string
8081 CacheMode string
8182 IOMode string
82- // conn *libvirt.Connect
83- // VM *libvirt.Domain
84- UserDataFile string
85- CloudConfigRoot string
86- LocalPorts string
83+ UserDataFile string
84+ CloudConfigRoot string
85+ LocalPorts string
8786}
8887
8988func (d * Driver ) GetMachineName () string {
@@ -271,21 +270,25 @@ func parsePortRange(rawPortRange string) (int, int, error) {
271270
272271 portRange := strings .Split (rawPortRange , "-" )
273272
273+ if len (portRange ) < 2 {
274+ return 0 , 0 , errors .New ("Invalid port range, must be at least of length 2" )
275+ }
276+
274277 minPort , err := strconv .Atoi (portRange [0 ])
275278 if err != nil {
276- return 0 , 0 , fmt . Errorf ( "invalid port range" )
279+ return 0 , 0 , errors . Wrap ( err , "Invalid port range" )
277280 }
278281 maxPort , err := strconv .Atoi (portRange [1 ])
279282 if err != nil {
280- return 0 , 0 , fmt . Errorf ( "invalid port range" )
283+ return 0 , 0 , errors . Wrap ( err , "Invalid port range" )
281284 }
282285
283286 if maxPort < minPort {
284- return 0 , 0 , fmt . Errorf ( "invalid port range" )
287+ return 0 , 0 , errors . New ( "Invalid port range" )
285288 }
286289
287290 if maxPort - minPort < 2 {
288- return 0 , 0 , fmt . Errorf ( "port range must be minimum 2 ports" )
291+ return 0 , 0 , errors . New ( "Port range must be minimum 2 ports" )
289292 }
290293
291294 return minPort , maxPort , nil
@@ -338,10 +341,6 @@ func (d *Driver) Start() error {
338341
339342 if d .MachineType != "" {
340343 machineType := d .MachineType
341- if runtime .GOOS == "darwin" {
342- // highmem=off needed, see https://patchwork.kernel.org/project/qemu-devel/patch/[email protected] /#23800615 for details 343- machineType += ",accel=hvf,highmem=off"
344- }
345344 startCmd = append (startCmd ,
346345 "-M" , machineType ,
347346 )
@@ -380,6 +379,13 @@ func (d *Driver) Start() error {
380379 }
381380 }
382381
382+ // hardware acceleration is important, it increases performance by 10x
383+ if runtime .GOOS == "darwin" {
384+ startCmd = append (startCmd , "-accel" , "hvf" )
385+ } else if _ , err := os .Stat ("/dev/kvm" ); err == nil && runtime .GOOS == "linux" {
386+ startCmd = append (startCmd , "-accel" , "kvm" )
387+ }
388+
383389 startCmd = append (startCmd ,
384390 "-m" , fmt .Sprintf ("%d" , d .Memory ),
385391 "-smp" , fmt .Sprintf ("%d" , d .CPU ),
@@ -419,12 +425,6 @@ func (d *Driver) Start() error {
419425
420426 startCmd = append (startCmd , "-daemonize" )
421427
422- // other options
423- // "-enable-kvm" if its available
424- if _ , err := os .Stat ("/dev/kvm" ); err == nil {
425- startCmd = append (startCmd , "-enable-kvm" )
426- }
427-
428428 if d .CloudConfigRoot != "" {
429429 startCmd = append (startCmd ,
430430 "-fsdev" ,
0 commit comments