From: "DERUMIER, Alexandre via pve-devel" <pve-devel@lists.proxmox.com>
To: "cmos@maklee.com" <cmos@maklee.com>
Cc: "DERUMIER, Alexandre" <alexandre.derumier@groupe-cyllene.com>,
"pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] FW: issues with Virtio-SCSI devicde on Proxmox...
Date: Wed, 14 Aug 2024 13:05:35 +0000 [thread overview]
Message-ID: <mailman.261.1723640743.302.pve-devel@lists.proxmox.com> (raw)
In-Reply-To: <0ee0c7d5-e2e3-43ae-b77f-18f4ece29e0a@maklee.com>
[-- Attachment #1: Type: message/rfc822, Size: 33368 bytes --]
From: "DERUMIER, Alexandre" <alexandre.derumier@groupe-cyllene.com>
To: "cmos@maklee.com" <cmos@maklee.com>
Cc: "pve-devel@lists.proxmox.com" <pve-devel@lists.proxmox.com>
Subject: Re: FW: [pve-devel] issues with Virtio-SCSI devicde on Proxmox...
Date: Wed, 14 Aug 2024 13:05:35 +0000
Message-ID: <6ea8c90b469da48525ed743b6541bb3644be4a6c.camel@groupe-cyllene.com>
>>I'm talking about virtio-scsi. Our virtio-network device is working
>>fine
Yes, sorry, I wanted to said virtio-scsi.
All pci devices excluding passthrough devices (with pcie=on flag) are
actually plugged to pci bridge
sub get_pci_addr_map {
$pci_addr_map = {
piix3 => { bus => 0, addr => 1, conflict_ok => qw(ehci) },
ehci => { bus => 0, addr => 1, conflict_ok => qw(piix3) }, #
instead of piix3 on arm
vga => { bus => 0, addr => 2, conflict_ok => qw(legacy-igd) },
'legacy-igd' => { bus => 0, addr => 2, conflict_ok => qw(vga)
}, # legacy-igd requires vga=none
balloon0 => { bus => 0, addr => 3 },
watchdog => { bus => 0, addr => 4 },
scsihw0 => { bus => 0, addr => 5, conflict_ok => qw(pci.3) },
'pci.3' => { bus => 0, addr => 5, conflict_ok => qw(scsihw0)
}, # also used for virtio-scsi-single bridge
scsihw1 => { bus => 0, addr => 6 },
ahci0 => { bus => 0, addr => 7 },
qga0 => { bus => 0, addr => 8 },
spice => { bus => 0, addr => 9 },
virtio0 => { bus => 0, addr => 10 },
virtio1 => { bus => 0, addr => 11 },
virtio2 => { bus => 0, addr => 12 },
virtio3 => { bus => 0, addr => 13 },
virtio4 => { bus => 0, addr => 14 },
virtio5 => { bus => 0, addr => 15 },
hostpci0 => { bus => 0, addr => 16 },
hostpci1 => { bus => 0, addr => 17 },
net0 => { bus => 0, addr => 18 },
net1 => { bus => 0, addr => 19 },
net2 => { bus => 0, addr => 20 },
net3 => { bus => 0, addr => 21 },
net4 => { bus => 0, addr => 22 },
net5 => { bus => 0, addr => 23 },
vga1 => { bus => 0, addr => 24 },
vga2 => { bus => 0, addr => 25 },
vga3 => { bus => 0, addr => 26 },
hostpci2 => { bus => 0, addr => 27 },
hostpci3 => { bus => 0, addr => 28 },
#addr29 : usb-host (pve-usb.cfg)
'pci.1' => { bus => 0, addr => 30 },
'pci.2' => { bus => 0, addr => 31 },
'net6' => { bus => 1, addr => 1 },
'net7' => { bus => 1, addr => 2 },
'net8' => { bus => 1, addr => 3 },
'net9' => { bus => 1, addr => 4 },
'net10' => { bus => 1, addr => 5 },
'net11' => { bus => 1, addr => 6 },
'net12' => { bus => 1, addr => 7 },
'net13' => { bus => 1, addr => 8 },
'net14' => { bus => 1, addr => 9 },
'net15' => { bus => 1, addr => 10 },
'net16' => { bus => 1, addr => 11 },
'net17' => { bus => 1, addr => 12 },
'net18' => { bus => 1, addr => 13 },
'net19' => { bus => 1, addr => 14 },
'net20' => { bus => 1, addr => 15 },
'net21' => { bus => 1, addr => 16 },
'net22' => { bus => 1, addr => 17 },
'net23' => { bus => 1, addr => 18 },
'net24' => { bus => 1, addr => 19 },
'net25' => { bus => 1, addr => 20 },
'net26' => { bus => 1, addr => 21 },
'net27' => { bus => 1, addr => 22 },
'net28' => { bus => 1, addr => 23 },
'net29' => { bus => 1, addr => 24 },
'net30' => { bus => 1, addr => 25 },
'net31' => { bus => 1, addr => 26 },
'xhci' => { bus => 1, addr => 27 },
'pci.4' => { bus => 1, addr => 28 },
'rng0' => { bus => 1, addr => 29 },
'pci.2-igd' => { bus => 1, addr => 30 }, # replaces pci.2 in
case a legacy IGD device is passed through
'virtio6' => { bus => 2, addr => 1 },
'virtio7' => { bus => 2, addr => 2 },
'virtio8' => { bus => 2, addr => 3 },
'virtio9' => { bus => 2, addr => 4 },
'virtio10' => { bus => 2, addr => 5 },
'virtio11' => { bus => 2, addr => 6 },
'virtio12' => { bus => 2, addr => 7 },
'virtio13' => { bus => 2, addr => 8 },
'virtio14' => { bus => 2, addr => 9 },
'virtio15' => { bus => 2, addr => 10 },
'ivshmem' => { bus => 2, addr => 11 },
'audio0' => { bus => 2, addr => 12 },
hostpci4 => { bus => 2, addr => 13 },
hostpci5 => { bus => 2, addr => 14 },
hostpci6 => { bus => 2, addr => 15 },
hostpci7 => { bus => 2, addr => 16 },
hostpci8 => { bus => 2, addr => 17 },
hostpci9 => { bus => 2, addr => 18 },
hostpci10 => { bus => 2, addr => 19 },
hostpci11 => { bus => 2, addr => 20 },
hostpci12 => { bus => 2, addr => 21 },
hostpci13 => { bus => 2, addr => 22 },
hostpci14 => { bus => 2, addr => 23 },
hostpci15 => { bus => 2, addr => 24 },
'virtioscsi0' => { bus => 3, addr => 1 },
'virtioscsi1' => { bus => 3, addr => 2 },
'virtioscsi2' => { bus => 3, addr => 3 },
'virtioscsi3' => { bus => 3, addr => 4 },
'virtioscsi4' => { bus => 3, addr => 5 },
'virtioscsi5' => { bus => 3, addr => 6 },
'virtioscsi6' => { bus => 3, addr => 7 },
'virtioscsi7' => { bus => 3, addr => 8 },
'virtioscsi8' => { bus => 3, addr => 9 },
'virtioscsi9' => { bus => 3, addr => 10 },
'virtioscsi10' => { bus => 3, addr => 11 },
'virtioscsi11' => { bus => 3, addr => 12 },
'virtioscsi12' => { bus => 3, addr => 13 },
'virtioscsi13' => { bus => 3, addr => 14 },
'virtioscsi14' => { bus => 3, addr => 15 },
'virtioscsi15' => { bus => 3, addr => 16 },
'virtioscsi16' => { bus => 3, addr => 17 },
'virtioscsi17' => { bus => 3, addr => 18 },
'virtioscsi18' => { bus => 3, addr => 19 },
'virtioscsi19' => { bus => 3, addr => 20 },
'virtioscsi20' => { bus => 3, addr => 21 },
'virtioscsi21' => { bus => 3, addr => 22 },
'virtioscsi22' => { bus => 3, addr => 23 },
'virtioscsi23' => { bus => 3, addr => 24 },
'virtioscsi24' => { bus => 3, addr => 25 },
'virtioscsi25' => { bus => 3, addr => 26 },
'virtioscsi26' => { bus => 3, addr => 27 },
'virtioscsi27' => { bus => 3, addr => 28 },
'virtioscsi28' => { bus => 3, addr => 29 },
'virtioscsi29' => { bus => 3, addr => 30 },
'virtioscsi30' => { bus => 3, addr => 31 },
'scsihw2' => { bus => 4, addr => 1 },
'scsihw3' => { bus => 4, addr => 2 },
'scsihw4' => { bus => 4, addr => 3 },
} if !defined($pci_addr_map);
return $pci_addr_map;
>
> > > Alexandre,
> > >
> > > the statement below is not true for our case. The OpenVMS guest OS is
> > > using a PCIE bus, so the virtio-scsi device should be exposed as
> > > "modern", but is not. Not sure why not at this point
> >
>
> See Fiona response,
>
> the pci express bridge is present, but the virtio-net is plugged on a
> simple pci bridge.
> ²
> pci express slots are mostly used for passthrough devices
>
>
>
> my $pcie_addr_map;
> sub get_pcie_addr_map {
> $pcie_addr_map = {
> vga => { bus => 'pcie.0', addr => 1 },
> hostpci0 => { bus => "ich9-pcie-port-1", addr => 0 },
> hostpci1 => { bus => "ich9-pcie-port-2", addr => 0 },
> hostpci2 => { bus => "ich9-pcie-port-3", addr => 0 },
> hostpci3 => { bus => "ich9-pcie-port-4", addr => 0 },
> hostpci4 => { bus => "ich9-pcie-port-5", addr => 0 },
> hostpci5 => { bus => "ich9-pcie-port-6", addr => 0 },
> hostpci6 => { bus => "ich9-pcie-port-7", addr => 0 },
> hostpci7 => { bus => "ich9-pcie-port-8", addr => 0 },
> hostpci8 => { bus => "ich9-pcie-port-9", addr => 0 },
> hostpci9 => { bus => "ich9-pcie-port-10", addr => 0 },
> hostpci10 => { bus => "ich9-pcie-port-11", addr => 0 },
> hostpci11 => { bus => "ich9-pcie-port-12", addr => 0 },
> hostpci12 => { bus => "ich9-pcie-port-13", addr => 0 },
> hostpci13 => { bus => "ich9-pcie-port-14", addr => 0 },
> hostpci14 => { bus => "ich9-pcie-port-15", addr => 0 },
> hostpci15 => { bus => "ich9-pcie-port-16", addr => 0 },
> # win7 is picky about pcie assignments
> hostpci0bus0 => { bus => "pcie.0", addr => 16 },
> hostpci1bus0 => { bus => "pcie.0", addr => 17 },
> hostpci2bus0 => { bus => "pcie.0", addr => 18 },
> hostpci3bus0 => { bus => "pcie.0", addr => 19 },
> ivshmem => { bus => 'pcie.0', addr => 20 },
> hostpci4bus0 => { bus => "pcie.0", addr => 9 },
> hostpci5bus0 => { bus => "pcie.0", addr => 10 },
> hostpci6bus0 => { bus => "pcie.0", addr => 11 },
> hostpci7bus0 => { bus => "pcie.0", addr => 12 },
> hostpci8bus0 => { bus => "pcie.0", addr => 13 },
> hostpci9bus0 => { bus => "pcie.0", addr => 14 },
> hostpci10bus0 => { bus => "pcie.0", addr => 15 },
> hostpci11bus0 => { bus => "pcie.0", addr => 21 },
> hostpci12bus0 => { bus => "pcie.0", addr => 22 },
> hostpci13bus0 => { bus => "pcie.0", addr => 23 },
> hostpci14bus0 => { bus => "pcie.0", addr => 24 },
> hostpci15bus0 => { bus => "pcie.0", addr => 25 },
> }
>
>
> Christian Moser
> Mobile: +358-40-5022105
> Email: cmos@maklee.com
> URL: www.maklee.com
> -----Original Message-----
> From: DERUMIER, Alexandre <alexandre.derumier@groupe-cyllene.com>
> Sent: Wednesday, August 14, 2024 09:45
> To: pve-devel@lists.proxmox.com; cmos@maklee.com
> Subject: Re: [pve-devel] issues with Virtio-SCSI devicde on Proxmox...
>
> Hi,
>
> I didn't see the responde of Fiona but indeed:
>
> https://lists.gnu.org/archive/html/qemu-devel/2021-09/msg01567.html
>
> "virtio devices can be exposed in upto three ways
>
> - Legacy - follows virtio 0.9 specification. always uses PCI
> ID range 0x1000-0x103F
> - Transitional - follows virtio 0.9 specification by default, but
> can auto-negotiate with guest for 1.0 spce. Always
> uses PCI ID range 0x1000-0x103F
> - Modern - follows virtio 1.0 specification. always uses PCI
> ID range 0x1040-0x107F
>
> With QEMU, historically devices placed on a PCI bus will always default
> to being in transitional mode, while devices placed on a PCI-E bus will
> always dfault to being in modern mode.
> "
>
>
> -------- Message initial --------
> De: Fiona Ebner <f.ebner@proxmox.com>
> Répondre à: Proxmox VE development discussion <pve-
> devel@lists.proxmox.com>
> À: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
> Christian Moser <cmos@maklee.com>
> Objet: Re: [pve-devel] issues with Virtio-SCSI devicde on Proxmox...
> Date: 13/08/2024 10:55:47
>
> Hi,
>
> Am 12.08.24 um 12:40 schrieb Christian Moser:
> > Hello,
> >
> > I work for VSI (VMS Software Inc) which is porting the OpenVMS
> > operating system to x86. At this point we successfully on various
> > hypervisors, but have some issues on the KVM running on Proxmox.
> >
> > The OpenVMS VM works just fine with SATA disks and it also works with
> > for example virtio-network device etc., but trying to use virtio-scsi
> > hangs the driver. I have debugged this and I can successfully
> > configure the port/controller, send the IO request to the device. It
> > then gets processed by the device, which posts the results and sets
> > the interrupt bit in the ISR register, but it never asserts the
> > interrupt hence the driver never gets notified and the I/O hangs.
> >
> > I have tried both “virtio-scsi-pci” and “virtio-scsi-single”, but no
> > luck. The emulated virtio-scsi device is a legacy device. But then
> > again, the virtio-network device is also a legacy device and here we
> > are getting interrupts. One thing which bothers me is the fact that
> > the “legacy interrupt disable” bit is set in the PCI config space of
> > the virtio-scsi device (i.e. bit 10 at offset 4)
> >
> > Questions:
> > * is there a way to configure a modern virtio-scsi devcie (i.e.
> > disable_legacy=on) ?
> >
>
> I've already answered this question when you asked in a mail addressed
> directly to me:
>
> Am 12.08.24 um 11:58 schrieb Fiona Ebner:
> > Hi,
> >
> > It seems that you either need to attach the "virtio-scsi-pci" device
> > to a pcie bus or explicitly set the "disable_legacy=on" option for
> > the
> > device, neither of which Proxmox VE currently does or allows
> > configuring. The only way right now seems to be to attach the disk
> > yourself via custom arguments (the 'args' in the Proxmox VE VM
> > configuration), but then the disk will be invisible to Proxmox VE
> > operations which look at specific disk keys in the configuration!
> >
> > Feel free to open a feature request on our bug tracker to make this
> > configurable:
> > https://antiphishing.vadesecure.com/v4?f=MDk0SW9xRkhTVGYydkJlTIW3tbTr
> > aK7neiUoWcvis0-pokd-Q2cwuWCZhgBcTw_yw4KqJS-oP6jCsk-zj-
> > 1YMQ&i=ZURHSDhnY0huQ2tPS3VZahJdhRaQu1ItpJrYkl8wXrA&k=q1N6&r=RjIyR1Rob
> > kVxVWlHTXhKT3I72JjP2S9ryFg3B_csBogfeb2oROpP8B8yUJUd6awk&s=1aab5a2ada7
> > 3beb46aa02df4e18ff6c5ba2db6d6ff2d1f302a3c4c83b13c8ef6&u=https%3A%2F%2
> > Fbugzilla.proxmox.com%2F
> >
> > P.S. Please write to the developer list rather than individual
> > developers for such questions in the feature:
> > https://antiphishing.vadesecure.com/v4?f=MDk0SW9xRkhTVGYydkJlTIW3tbTr
> > aK7neiUoWcvis0-pokd-Q2cwuWCZhgBcTw_yw4KqJS-oP6jCsk-zj-
> > 1YMQ&i=ZURHSDhnY0huQ2tPS3VZahJdhRaQu1ItpJrYkl8wXrA&k=q1N6&r=RjIyR1Rob
> > kVxVWlHTXhKT3I72JjP2S9ryFg3B_csBogfeb2oROpP8B8yUJUd6awk&s=50133960c87
> > 16b5426bc084f398f7760f04af8739fd68cad36d17b1dcd887778&u=https%3A%2F%2
> > Flists.proxmox.com%2Fcgi-bin%2Fmailman%2Flistinfo%2Fpve-devel
> >
> > Best Regards,
> > Fiona
> >
>
> > * why is the legacy interrupt bit set in the PCI config space ?
> >
>
> Most likely because the virtio-scsi-pci is configured without the
> "disable_legacy=on" option. If not explicitly set, the option will be
> "disable_legacy=auto" and when not attached to PCIe (which is the case
> for Proxmox VE currently), then legacy mode will be enabled.
>
> > * Are there any working driver for virtio-scsi on this KVM using Q35
> > machine? i.e. any other OS
> >
>
> The virtio drivers for Windows and the ones in Linux work just fine
> with our configuration.
>
>
> > Any thoughts why these interrupts are not getting delivered on the
> > PCIE bus?
> >
>
> We do not configure the virtio-scsi-pci on a PCIe bus currently, see my
> initial answer.
>
> Best Regards,
> Fiona
>
>
>
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://antiphishing.vadesecure.com/v4?f=MDk0SW9xRkhTVGYydkJlTIW3tbTraK
>
> 7neiUoWcvis0-pokd-Q2cwuWCZhgBcTw_yw4KqJS-oP6jCsk-zj-
> 1YMQ&i=ZURHSDhnY0huQ2tPS3VZahJdhRaQu1ItpJrYkl8wXrA&k=q1N6&r=RjIyR1RobkV
>
> xVWlHTXhKT3I72JjP2S9ryFg3B_csBogfeb2oROpP8B8yUJUd6awk&s=50133960c8716b5
>
> 426bc084f398f7760f04af8739fd68cad36d17b1dcd887778&u=https%3A%2F%2Flists
>
> .proxmox.com%2Fcgi-bin%2Fmailman%2Flistinfo%2Fpve-devel
>
>
>
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2024-08-14 13:05 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-12 10:40 [pve-devel] " Christian Moser
2024-08-13 8:55 ` Fiona Ebner
2024-08-13 9:33 ` [pve-devel] FW: " Christian Moser
2024-08-14 6:44 ` [pve-devel] " DERUMIER, Alexandre via pve-devel
[not found] ` <1178cb3475d719ae31f0c375cd3930fc24d98401.camel@groupe-cyllene.com>
2024-08-14 7:20 ` [pve-devel] FW: " Christian Moser
2024-08-14 12:22 ` DERUMIER, Alexandre via pve-devel
[not found] ` <c851a27f4f5eca7c767fbffa48cb208e2d8fe1e6.camel@groupe-cyllene.com>
2024-08-14 12:48 ` Christian Moser
2024-08-14 13:05 ` DERUMIER, Alexandre via pve-devel [this message]
[not found] ` <6ea8c90b469da48525ed743b6541bb3644be4a6c.camel@groupe-cyllene.com>
2024-08-15 5:35 ` [pve-devel] FW: " Christian Moser
2024-08-13 16:12 ` [pve-devel] " DERUMIER, Alexandre via pve-devel
[not found] ` <67b222322506a9eab0f7cf7da5a9fd715c8a91ff.camel@groupe-cyllene.com>
2024-08-14 6:42 ` [pve-devel] FW: " Christian Moser
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=mailman.261.1723640743.302.pve-devel@lists.proxmox.com \
--to=pve-devel@lists.proxmox.com \
--cc=alexandre.derumier@groupe-cyllene.com \
--cc=cmos@maklee.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox