- Thread Starter
- #76
Go to the releng/14.1 branch, and take a note of the commit for 14.0.
Can you clarify this point ? I don't understand how to go on the releng/14.1 branch and how to take a note of the commit for 14.0,thanks.
Go to the releng/14.1 branch, and take a note of the commit for 14.0.
Assuming that you have already cloned the freebsd src repository, you could do the following.Can you clarify this point ? I don't understand how to go on the releng/14.1 branch and how to take a note of the commit for 14.0,thanks.
git switch main
git fetch origin releng/14.0
git fetch origin releng/14.1
git log -n 1 --pretty=format:%h origin/releng/14.0
git log -n 1 --pretty=format:%h origin/releng/14.1
GPU passthru working for me on 14.1 for a FreeBSD guest, I didn't have time to check Windows or Linux yet. I believe they will work just fine, as before.
Assuming that you have already cloned the freebsd src repository, you could do the following.
Which gave me for 14.0 : 5e23806790ef , and for 14.1 : dcdea9e8623eCode:git switch main git fetch origin releng/14.0 git fetch origin releng/14.1 git log -n 1 --pretty=format:%h origin/releng/14.0 git log -n 1 --pretty=format:%h origin/releng/14.1
Maybe there is an easier method to understand what's the patch that breaks the function. Where FreeBSD saves the patches that it downloads ? I could apply the patches downloaded for the 14.1 to the 14.0 one by one and check if it still works. it could be easier because in this way I can skip playing with git.
Assuming that you have already cloned the freebsd src repository, you could do the following.
Which gave me for 14.0 : 5e23806790ef , and for 14.1 : dcdea9e8623eCode:git switch main git fetch origin releng/14.0 git fetch origin releng/14.1 git log -n 1 --pretty=format:%h origin/releng/14.0 git log -n 1 --pretty=format:%h origin/releng/14.1
[root@marietto /usr]# uname -a
FreeBSD marietto 14.0-RELEASE-p6 FreeBSD 14.0-RELEASE-p6 #0: Tue Mar 26 20:26:20 UTC 2024 root@amd64-builder.daemonology.net:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
[root@marietto /usr]# git clone https://git.FreeBSD.org/src.git /usr/src
Clone in '/usr/src' in corso...
remote: Enumerating objects: 4513103, done.
remote: Counting objects: 100% (383516/383516), done.
remote: Compressing objects: 100% (28936/28936), done.
remote: Total 4513103 (delta 377788), reused 354580 (delta 354580), pack-reused 4129587 (from 1)
Ricezione degli oggetti: 100% (4513103/4513103), 1.64 GiB | 10.17 MiB/s, fatto.
Risoluzione dei delta: 100% (3587926/3587926), fatto.
Aggiornamento dei file in corso: 100% (101043/101043), fatto.
[root@marietto /usr]# cd src
[root@marietto /usr/src]# git checkout releng/14.1
Aggiornamento dei file in corso: 100% (22564/22564), fatto.
branch 'releng/14.1' set up to track 'origin/releng/14.1'.
Si è passati a un nuovo branch 'releng/14.1'
[root@marietto /usr/src]# git switch main
Aggiornamento dei file in corso: 100% (22564/22564), fatto.
Si è passati al branch 'main'
Il tuo branch è aggiornato rispetto a 'origin/main'.
[root@marietto /usr/src]# git fetch origin releng/14.0
Da https://git.FreeBSD.org/src
* branch releng/14.0 -> FETCH_HEAD
[root@marietto /usr/src]# git fetch origin releng/14.1
Da https://git.FreeBSD.org/src
* branch releng/14.1 -> FETCH_HEAD
[root@marietto /usr/src]# git log -n 1 --pretty=format:%h origin/releng/14.0
5e23806790ef
[root@marietto /usr/src]# git log -n 1 --pretty=format:%h origin/releng/14.1
dcdea9e8623e
If you are sure that it is working on a regular 14.0-RELEASE, then you could either use git-bisect to find the commit that did the regression or attempt to revert any patch from 14.0 to 14.1 that change anything related to bhyve.
In both case, this could result in some security risk (more security risk for the latter I would assume) and instability.
For the following, I would suggest to do that with an empty state system: new drive (external would be easy), remove the current drive on the machine.
Having a secondary machine for the build is in my opinion necessary, this would allow to build on one machine, generate an image and directly boot on the test machine the new image.
For git-bisect, you could do like that:
Go to the releng/14.1 branch, and take a note of the commit for 14.0.
Then do
Then every time it stop, do a full build, install, and test your setup.Code:git bisect start git bisect bad git bisect good COMMIT_OF_14.0
If it is good, dogit bisect good
Else, dogit bisect bad
[root@marietto /usr/src]==> git bisect start 5e23806790ef
You are already on 'main'
Your branch is updated respect to 'origin/main'.
status: waiting for good commit(s), bad commit known
[root@marietto /usr/src]==> git bisect bad dcdea9e8623e
status: waiting for good commit(s), bad commit known
[root@marietto /usr/src]==> git bisect good 5e23806790ef
Bisection: a merge base must be tested
[dde83fc4d2e6e8a3009bdfb7d14dcc8ef802b22f] pci_iov: Refuse to create VFs which require ARI if ARI is not availabl
I have to disagree with the advise.
I would make a solid backup of your machine now and then modify it directly with `make installworld installkernel`. Making an image and installing it slows you down too much.
You are only messing around within the confinements of 14-stable, so it isn't too likely that you crash and burn.
I need to know how much times I should repeat the procedure,to understand how much time I need more or less to find the wrong patch and remove it.
That depends on how lucky you are
How many commit do you want to try ?
Did you make a first pass identifying commits that touch the components in question ?
Well, you are the one testing each FreeBSD version during the search and determine whether passthrough works the way you want. I assume you start your Windows VM for that and see what happens.
I have understood this. What I didn't understand is what happens next. Lets assume that I found a version that does not work,how can I know to which commit it belongs ? In other words I should identify,in some way,the wrong patch,or not ?
git diff 2abea9df01655633aabbb9bf3204c90722001202^!
You go by commits anyway, e.g. 2abea9df01655633aabbb9bf3204c90722001202
You get the diff for that commit with
Code:git diff 2abea9df01655633aabbb9bf3204c90722001202^!
You reverse apply that diff to 14.1 with `patch -R`. That should give you a 14.1 that works for you.
How can I obtain the number 2abea9df01655633aabbb9bf3204c90722001202 ?
Will it help to focus on vmm.c history?
Hi. I've just checked Windows 10, please see the screenshot. Windows 11 never worked for me, which I mentioned several times:I have some doubt that it works for you on Windows 11 as guest using FreeBSD 14.1. I've reinstalled FreeBSD 14.1 from scratch using the official DVD image and I've checked. It didn't work. I've used the same Windows 11 img file that I used on FreeBSD 14.0. Then I've booted 14.0 again using the same Windows 11 img file and I saw that it works.
Due to a bug, it's currently impossible to allocate more than 1 vCPU to Windows 11 when doing passthrough. Details here.
loader="uefi"
uefi_vars="yes"
uuid="e251f8bd-3c27-11ef-8eaa-a8a159344963"
bhyve_options="-A"
ahci_device_limit="8"
utctime="no"
cpu="12"
cpu_sockets="1"
cpu_cores="12"
cpu_threads="1"
memory="16G"
network0_type="virtio-net"
network0_switch="public"
network0_mac="58:9c:fc:05:03:c5"
disk0_type="nvme"
disk0_name="disk0"
disk0_dev="sparse-zvol"
passthru0="10/0/0=10:0"
passthru1="10/0/1=10:1"