VMware Cloud Community
Weiry
Contributor
Contributor

Disable DirectPath I/O SATA AHCI Controller

Good day,

I have an issue with disabling the DirectPath I/O for my SATA AHCI Controller.

On this forum I found an older post (http://communities.vmware.com/message/2012833) but unfortunately the steps I followed didn't work for me.

I'm using ESXi 5.1 in a test environment and I was playing with DirectPath I/O and I switched it on for my SATA AHCI controller, all my VM's are stored on local drives on my test server.
After switching on the DirectPath I/O I couldn't see my VM's anymore.

Now I hoped to just switch off the DirectPath I/O for the SATA AHCI controller, but this wasn't as easy as I hoped.

As I mentioned I followed the steps of the post I found, but when I follow this step:

  1. 4.  Devices still appear as passthru

/etc/vmware # vmkchdev -l

000:000:00.0 8086:0108 1028:04de vmkernel
000:000:26.0 8086:1c2d 1028:04de passthru
000:000:28.0 8086:1c10 0000:0000 vmkernel PCIe RP[000:000:28.0]
000:000:28.4 8086:1c18 0000:0000 vmkernel PCIe RP[000:000:28.4]
000:000:29.0 8086:1c26 1028:04de passthru
000:000:30.0 8086:244e 0000:0000 vmkernel
000:000:31.0 8086:1c52 1028:04de vmkernel
000:000:31.2 8086:1c02 1028:04de passthru vmhba0
000:000:31.3 8086:1c22 1028:04de vmkernel
000:001:00.0 8086:10c9 8086:a03c vmkernel vmnic0
000:001:00.1 8086:10c9 8086:a03c vmkernel vmnic1
000:002:00.0 14e4:165a 1028:04de vmkernel vmnic2
000:003:03.0 102b:0532 1028:04de vmkernel

  1. 5. Assigned the devices to vmkernel

/etc/vmware #
/etc/vmware # vmkchdev -v 000:000:26.0
/etc/vmware # vmkchdev -v 000:000:29.0
/etc/vmware # vmkchdev -v 000:000:31.2

I get this error:

Invalid bus:slot.func

So when I list again I see this:

~ # vmkchdev -l

00:00:00.0 8086:0100 103c:1494 vmkernel

00:00:02.0 8086:0102 103c:1494 vmkernel

00:00:16.0 8086:1c3a 103c:1494 vmkernel

00:00:16.3 8086:1c3d 103c:1494 vmkernel

00:00:19.0 8086:1502 103c:1494 vmkernel vmnic0

00:00:1a.0 8086:1c2d 103c:1494 vmkernel

00:00:1b.0 8086:1c20 103c:1494 passthru

00:00:1c.0 8086:1c10 0000:0000 vmkernel PCIe RP[00:00:1c.0]

00:00:1c.4 8086:1c18 0000:0000 vmkernel PCIe RP[00:00:1c.4]

00:00:1c.6 8086:1c1c 0000:0000 vmkernel PCIe RP[00:00:1c.6]

00:00:1c.7 8086:1c1e 0000:0000 vmkernel PCIe RP[00:00:1c.7]

00:00:1d.0 8086:1c26 103c:1494 vmkernel

00:00:1e.0 8086:244e 0000:0000 vmkernel

00:00:1f.0 8086:1c4e 103c:1494 vmkernel

00:00:1f.2 8086:1c02 103c:1494 passthru vmhba0

00:00:1f.3 8086:1c22 103c:1494 vmkernel

When I list the adapters I get this:

~ # esxcli storage core  adapter list

HBA Name  Driver     Link State UID            Description

--------  ---------  ---------- -------------  ----------------------

vmhba32   iscsi_vmk  online iscsi.vmhba32  iSCSI Software Adapter

When I do a rescan I get this:

~ # esxcli storage core  adapter rescan --all

~ # esxcli storage core  adapter list

HBA Name  Driver     Link State UID            Description

--------  ---------  ---------- -------------  ----------------------

vmhba32   iscsi_vmk  online iscsi.vmhba32  iSCSI Software Adapter

So I'm a little bit stuck now and don't know what to do.

My hardware specs are:

HP Compaq 8200 Elite CMT PC

4 CPUs x 3,392 GHz

Thanks in advance for the help!

7 Replies
zXi_Gamer
Virtuoso
Virtuoso

I am seeing vmhba0 as the passthrough, assuming that is your SATA controller. shouldnt you give only /etc/vmware # vmkchdev -v 000:000:31.2

Dont try to unload the passthrough module itself.

Workaround 1

  1. Edit the /etc/vmware/esx.conf file by changing the owner of the PCI device from passthru to vmkernel.
    The following is an example of the necessary edit:
    Change from: /device/000:02.0/owner = "passthru"
    Change to:  /device/000:02.0/owner = "vmkernel"
  2. Reboot the ESX/ESXi host.

Workaround 2

workaround would be to rollback

Workaround 3 Last resort Smiley Happy

would be to disable VT-D or IOMMU in BIOS to disable passthrough.

0 Kudos
Weiry
Contributor
Contributor

Hi,

Thanks for your reply!

This is the relavant portion of my esx.conf:

/storage/PSA/Filter/claimrule[65432]/plugin = "VAAI_FILTER"

/device/000:000:31.2/owner = "vmkernel"

/device/000:000:31.2/device = "1c02"

/device/000:000:31.2/vmkname = "vmhba0"

/device/000:000:31.2/vendor = "8086"

/device/000:000:29.0/owner = "vmkernel"

/device/000:000:27.0/owner = "vmkernel"

/device/000:000:27.0/device = "1c20"

/device/000:000:27.0/vendor = "8086"

/device/000:000:02.0/owner = "vmkernel"

/device/000:000:02.0/device = "102"

/device/000:000:02.0/vendor = "8086"

/device/000:000:26.0/owner = "vmkernel"

/device/000:000:25.0/vmkname = "vmnic0"

/firewall/services/passIGMP = "false"

I renamed the passthru to vmkernel.

But after a reboot vmkernel is set back to passthru.

I also did a exec "/sbin/auto-backup.sh" before reboot and copied the state.tgz file to bootbank, but I couldn't find the old bootbank because the vmfs folder was empty.

When I try a: vmkchdev -v 00:00:1f.2 I get to see this:

Invalid bus:slot.func

Maybe a very N00B question, but how can I rollback this? 😉

I think I need to go for workaround 3 😞

What will happen if I reanable it later on, will I get the same issue again?

0 Kudos
zXi_Gamer
Virtuoso
Virtuoso

Just to confirm, when you go to configuration>Hardware>Advanced settings, are you able to see your vmhba0 listed.

If not, can you click on configure passthrough and check if the vmhba0 is listed? and uncheck.

And, if this vmhba0 added to any vms when you tested out passthrough?

0 Kudos
Weiry
Contributor
Contributor

Yes, I am able to see the vmhba0:

SATA.PNG

When I click on edit I can uncheck the box:

sata2.PNG

sata3.PNG

But after a reboot the checkbox is checked again and I still cannot seet my local storage.

And no, I didn't set passthrough on any VM, because I didn't have the chance to do so 😉

0 Kudos
Weiry
Contributor
Contributor

This post can be closed!
After searching and trying I re-installed ESXi 5.1.

zXi_Gamer , Thanks for your help and time!

0 Kudos
zXi_Gamer
Virtuoso
Virtuoso

Smiley Happy most welcome. I will add reinstall ESXi as workaround 4 Smiley Happy

mauser_
Enthusiast
Enthusiast

Hi,

same issue here with esxi 5.5.

What is the real SOLUTION for this issue?

Thx

0 Kudos