diff --git a/lang/de.json b/lang/de.json index 92c7f7f1..e81d7622 100644 --- a/lang/de.json +++ b/lang/de.json @@ -6487,6 +6487,7 @@ "The host directory does not exist": "Das Verzeichnis auf dem Host ist nicht vorhanden", "The host directory may not be accessible from an unprivileged container.": "Auf das Hostverzeichnis kann von einem unprivilegierten Container aus möglicherweise nicht zugegriffen werden.", "The host has no IPv4 address on the selected bridge": "Der Host hat keine IPv4-Adresse auf der ausgewählten Brücke", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "Der Host verliert den Zugriff darauf. Wenn die Gruppe einen Netzwerk- oder Speichercontroller enthält, den der Host benötigt, brechen Sie in der Zusammenfassung ab.", "The host monitor does not see the real host memory": "Der Host-Monitor sieht den echten Host-Speicher nicht", "The host monitor does not share this host namespace:": "Der Host-Monitor teilt diesen Host-Namespace nicht:", "The host monitor include is unknown or differs from the saved record": "Das Host-Monitor-Include ist unbekannt oder weicht vom gespeicherten Datensatz ab", @@ -6816,6 +6817,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Diese Änderungen wurden in Proxmox außerhalb von ProxMenux vorgenommen:", "These container mount paths have an extension-like suffix:": "Diese Einhängepfade im Container haben eine Endung, die einer Dateierweiterung ähnelt:", "These containers were restored from a backup and this host has no record of their OCI application:": "Diese Container wurden aus einem Backup wiederhergestellt und dieser Host hat keinen Datensatz ihrer OCI-Anwendung:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Diese Geräte teilen sich die IOMMU-Gruppe der ausgewählten GPU und werden zusammen mit ihr der VM zugewiesen:", "These host backups run with this job and expect its storage:": "Diese Host-Backups werden mit diesem Job ausgeführt und erwarten dessen Speicherung:", "These host backups run with this job and will stop running:": "Diese Host-Backups werden mit diesem Job ausgeführt und werden nicht mehr ausgeführt:", "These interface configurations will be removed": "Diese Schnittstellenkonfigurationen werden entfernt", diff --git a/lang/es.json b/lang/es.json index a12ca29e..1434b077 100644 --- a/lang/es.json +++ b/lang/es.json @@ -6469,6 +6469,7 @@ "The host directory does not exist": "El directorio del host no existe", "The host directory may not be accessible from an unprivileged container.": "Es posible que no se pueda acceder al directorio del host desde un contenedor sin privilegios.", "The host has no IPv4 address on the selected bridge": "El host no tiene dirección IPv4 en el puente seleccionado", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "El host pierde el acceso a ellos. Si el grupo incluye un controlador de red o de almacenamiento que el host necesita, cancela en el resumen.", "The host monitor does not see the real host memory": "El monitor host no ve la memoria real del host", "The host monitor does not share this host namespace:": "El monitor host no comparte este espacio de nombres de host:", "The host monitor include is unknown or differs from the saved record": "El include del monitor del host es desconocido o difiere del registro guardado", @@ -6792,6 +6793,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Estos cambios se hicieron en Proxmox fuera de ProxMenux:", "These container mount paths have an extension-like suffix:": "Estas rutas de montaje del contenedor tienen un sufijo parecido a una extensión:", "These containers were restored from a backup and this host has no record of their OCI application:": "Estos contenedores se restauraron desde un backup y este host no tiene el registro de su aplicación OCI:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Estos dispositivos comparten el grupo IOMMU de la GPU seleccionada y se asignarán a la VM junto con ella:", "These host backups run with this job and expect its storage:": "Estos backups del host se ejecutan con este trabajo y esperan su almacenamiento:", "These interface configurations will be removed": "Estas configuraciones de interfaz serán eliminadas", "These manual changes cannot be adopted safely:": "Estos cambios manuales no se pueden incorporar con seguridad:", diff --git a/lang/fr.json b/lang/fr.json index cbb436d4..40682cd3 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -6486,6 +6486,7 @@ "The host directory does not exist": "Le répertoire de l’hôte n’existe pas", "The host directory may not be accessible from an unprivileged container.": "Le répertoire hôte peut ne pas être accessible à partir d'un conteneur non privilégié.", "The host has no IPv4 address on the selected bridge": "L'hôte n'a pas d'adresse IPv4 sur le pont sélectionné", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "L’hôte perd l’accès à ces périphériques. Si le groupe contient un contrôleur réseau ou de stockage dont l’hôte a besoin, annulez au résumé.", "The host monitor does not see the real host memory": "Le moniteur hôte ne voit pas la mémoire de l'hôte réel", "The host monitor does not share this host namespace:": "L'écran hôte ne partage pas cet espace de noms d'hôte :", "The host monitor include is unknown or differs from the saved record": "L'include du moniteur d'hôte est inconnu ou diffère de l'enregistrement sauvegardé", @@ -6815,6 +6816,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Ces modifications ont été apportées dans Proxmox en dehors de ProxMenux :", "These container mount paths have an extension-like suffix:": "Ces chemins de montage du conteneur ont un suffixe qui ressemble à une extension :", "These containers were restored from a backup and this host has no record of their OCI application:": "Ces conteneurs ont été restaurés à partir d'une sauvegarde et cet hôte n'a aucun enregistrement de leur application OCI :", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Ces périphériques partagent le groupe IOMMU du GPU sélectionné et seront attribués à la VM avec lui :", "These host backups run with this job and expect its storage:": "Ces sauvegardes d'hôte s'exécutent avec ce travail et attendent son stockage :", "These host backups run with this job and will stop running:": "Ces sauvegardes d'hôte s'exécutent avec ce travail et cesseront de s'exécuter :", "These interface configurations will be removed": "Ces configurations d'interface seront supprimées", diff --git a/lang/it.json b/lang/it.json index 676c1fea..b71db0f4 100644 --- a/lang/it.json +++ b/lang/it.json @@ -6487,6 +6487,7 @@ "The host directory does not exist": "La directory dell’host non esiste", "The host directory may not be accessible from an unprivileged container.": "La directory dell’host potrebbe non essere accessibile da un container non privilegiato.", "The host has no IPv4 address on the selected bridge": "L'host non ha un indirizzo IPv4 sul bridge selezionato", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "L’host perde l’accesso a questi dispositivi. Se il gruppo include un controller di rete o di archiviazione necessario all’host, annulla nel riepilogo.", "The host monitor does not see the real host memory": "Il monitoraggio dell'host non rileva la memoria reale dell'host", "The host monitor does not share this host namespace:": "Il monitor dell'host non condivide questo namespace dell'host:", "The host monitor include is unknown or differs from the saved record": "L'include del monitor host è sconosciuto o diverso dal record salvato", @@ -6816,6 +6817,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Queste modifiche sono state apportate in Proxmox al di fuori di ProxMenux:", "These container mount paths have an extension-like suffix:": "Questi percorsi di mount del container hanno un suffisso simile a un'estensione:", "These containers were restored from a backup and this host has no record of their OCI application:": "Questi container sono stati ripristinati da un backup e questo host non ha il record della loro applicazione OCI:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Questi dispositivi condividono il gruppo IOMMU della GPU selezionata e verranno assegnati alla VM insieme a essa:", "These host backups run with this job and expect its storage:": "Questi backup dell’host vengono eseguiti con questo job e richiedono il suo storage:", "These host backups run with this job and will stop running:": "Questi backup dell'host vengono eseguiti con questo lavoro e interromperanno l'esecuzione:", "These interface configurations will be removed": "Queste configurazioni dell'interfaccia verranno rimosse", diff --git a/lang/pt.json b/lang/pt.json index 6d95f583..a0a14f5f 100644 --- a/lang/pt.json +++ b/lang/pt.json @@ -6487,6 +6487,7 @@ "The host directory does not exist": "O diretório do anfitrião não existe", "The host directory may not be accessible from an unprivileged container.": "O diretório host pode não estar acessível a partir de um contêiner sem privilégios.", "The host has no IPv4 address on the selected bridge": "A máquina não tem endereço IPv4 na ponte seleccionada", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "O host perde o acesso a eles. Se o grupo incluir um controlador de rede ou de armazenamento de que o host precisa, cancele no resumo.", "The host monitor does not see the real host memory": "O monitor da máquina não vê a memória verdadeira da máquina", "The host monitor does not share this host namespace:": "O monitor da máquina não compartilha este espaço de nomes da máquina:", "The host monitor include is unknown or differs from the saved record": "O include do monitor do host é desconhecido ou difere do registro salvo", @@ -6816,6 +6817,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Essas alterações foram feitas no Proxmox fora do ProxMenux:", "These container mount paths have an extension-like suffix:": "Estes caminhos de montagem do contêiner têm um sufixo parecido com uma extensão:", "These containers were restored from a backup and this host has no record of their OCI application:": "Esses contêineres foram restaurados a partir de um backup e este host não possui registro de seu aplicativo OCI:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Estes dispositivos partilham o grupo IOMMU da GPU selecionada e serão atribuídos à VM juntamente com ela:", "These host backups run with this job and expect its storage:": "Esses backups de host são executados com este trabalho e esperam seu armazenamento:", "These host backups run with this job and will stop running:": "Esses backups de host são executados com este trabalho e deixarão de ser executados:", "These interface configurations will be removed": "Essas configurações de interface serão removidas", diff --git a/lang/sk.json b/lang/sk.json index ba7500a6..13346f9e 100644 --- a/lang/sk.json +++ b/lang/sk.json @@ -6488,6 +6488,7 @@ "The host directory does not exist": "Adresár na hostiteľovi neexistuje", "The host directory may not be accessible from an unprivileged container.": "Priečinok na hostovi nemusí byť dostupný z neprivilegovaného kontajnera.", "The host has no IPv4 address on the selected bridge": "Hostiteľ nemá IPv4 adresu na vybranom moste", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "Hostiteľ k nim stratí prístup. Ak skupina obsahuje sieťový alebo úložný radič, ktorý hostiteľ potrebuje, zrušte to v súhrne.", "The host monitor does not see the real host memory": "Monitor hostiteľa nevidí skutočnú pamäť hostiteľa", "The host monitor does not share this host namespace:": "Monitor hostiteľa nezdieľa tento menový priestor hostiteľa:", "The host monitor include is unknown or differs from the saved record": "Include monitora hostiteľa je neznámy alebo sa líši od uloženého záznamu", @@ -6817,6 +6818,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Tieto zmeny boli vykonané v Proxmox mimo ProxMenux:", "These container mount paths have an extension-like suffix:": "Tieto cesty pripojenia v kontajneri majú príponu podobnú koncovke súboru:", "These containers were restored from a backup and this host has no record of their OCI application:": "Tieto kontajnery boli obnovené zo zálohy a tento hostiteľ nemá žiadny záznam o ich aplikácii OCI:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Tieto zariadenia zdieľajú skupinu IOMMU vybranej GPU a priradia sa k VM spolu s ňou:", "These host backups run with this job and expect its storage:": "Tieto zálohy hostiteľa sa spúšťajú s touto úlohou a očakávajú jej uloženie:", "These host backups run with this job and will stop running:": "Tieto zálohy hostiteľa sa spúšťajú s touto úlohou a prestanú sa spúšťať:", "These interface configurations will be removed": "Tieto nastavenia rozhraní sa odstránia", diff --git a/lang/sv.json b/lang/sv.json index 752a7ff8..9cffe5e4 100644 --- a/lang/sv.json +++ b/lang/sv.json @@ -6487,6 +6487,7 @@ "The host directory does not exist": "Katalogen på värden finns inte", "The host directory may not be accessible from an unprivileged container.": "Värdkatalogen kanske inte är tillgänglig från en oprivilegierad behållare.", "The host has no IPv4 address on the selected bridge": "Värden har ingen IPv4-adress på den valda bron", + "The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.": "Värden förlorar åtkomsten till dem. Om gruppen innehåller en nätverks- eller lagringskontroller som värden behöver, avbryt i sammanfattningen.", "The host monitor does not see the real host memory": "Värdskärmen ser inte det verkliga värdminnet", "The host monitor does not share this host namespace:": "Värdskärmen delar inte detta värdnamnsutrymme:", "The host monitor include is unknown or differs from the saved record": "Värdövervakarens include är okänd eller skiljer sig från den sparade posten", @@ -6816,6 +6817,7 @@ "These changes were made in Proxmox outside ProxMenux:": "Dessa ändringar gjordes i Proxmox utanför ProxMenux:", "These container mount paths have an extension-like suffix:": "De här monteringssökvägarna i containern har ett suffix som liknar ett filtillägg:", "These containers were restored from a backup and this host has no record of their OCI application:": "Dessa behållare återställdes från en säkerhetskopia och denna värd har ingen post för deras OCI-applikation:", + "These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:": "Dessa enheter delar IOMMU-gruppen med den valda GPU:n och tilldelas till VM:en tillsammans med den:", "These host backups run with this job and expect its storage:": "Dessa värdsäkerhetskopior körs med det här jobbet och förväntar sig dess lagring:", "These host backups run with this job and will stop running:": "Dessa värdsäkerhetskopior körs med detta jobb och kommer att sluta köras:", "These interface configurations will be removed": "Dessa gränssnittskonfigurationer kommer att tas bort", diff --git a/scripts/gpu_tpu/add_gpu_vm.sh b/scripts/gpu_tpu/add_gpu_vm.sh index bbbb194a..655418b4 100644 --- a/scripts/gpu_tpu/add_gpu_vm.sh +++ b/scripts/gpu_tpu/add_gpu_vm.sh @@ -1121,6 +1121,7 @@ analyze_iommu_group() { local group_dir="/sys/kernel/iommu_groups/${IOMMU_GROUP}/devices" local display_lines="" local extra_devices=0 + local other_slot_devices=0 for dev_path in "${group_dir}/"*; do [[ -e "$dev_path" ]] || continue @@ -1149,8 +1150,16 @@ analyze_iommu_group() { display_lines+=" • ${dev} ${dev_name} [${dev_driver}]\n" [[ "$dev" != "$pci_full" ]] && extra_devices=$((extra_devices + 1)) + [[ "${dev%.*}" != "${pci_full%.*}" ]] && other_slot_devices=$((other_slot_devices + 1)) done + if [[ $other_slot_devices -gt 0 ]]; then + local box_h=$(( 13 + ${#IOMMU_DEVICES[@]} )) + (( box_h > 24 )) && box_h=24 + _pmx_msgbox "$(translate 'IOMMU Group') ${IOMMU_GROUP}" \ + "\n$(translate 'These devices share the IOMMU group of the selected GPU and will be assigned to the VM with it:')\n\n${display_lines}\n$(translate 'The host loses access to them. If the group includes a network or storage controller the host needs, cancel at the summary.')" \ + "$box_h" 82 + fi } # Returns 0 if the BDF at $1 is a real PCI audio device (class 04xx). diff --git a/scripts/gpu_tpu/nvidia_installer.sh b/scripts/gpu_tpu/nvidia_installer.sh index 0a364451..d927f34a 100644 --- a/scripts/gpu_tpu/nvidia_installer.sh +++ b/scripts/gpu_tpu/nvidia_installer.sh @@ -203,8 +203,14 @@ detect_driver_status() { if [[ -n "$CURRENT_DRIVER_VERSION" ]]; then CURRENT_DRIVER_INSTALLED=true - # Register the installed driver version in components_status.json - update_component_status "nvidia_driver" "installed" "$CURRENT_DRIVER_VERSION" "gpu" '{"patched":false}' + # Register the installed driver version in components_status.json, + # keeping the patched flag while the recorded version is unchanged. + local patched_json='{"patched":false}' + if [[ "$(jq -r '.nvidia_driver.version // empty' "$COMPONENTS_STATUS_FILE" 2>/dev/null)" == "$CURRENT_DRIVER_VERSION" ]] \ + && is_current_nvidia_patched; then + patched_json='{"patched":true}' + fi + update_component_status "nvidia_driver" "installed" "$CURRENT_DRIVER_VERSION" "gpu" "$patched_json" fi fi fi