Hi Tom, On Wed, 26 Feb 2025 at 07:35, Tom Rini <tr...@konsulko.com> wrote: > > On Tue, Feb 25, 2025 at 07:56:03PM -0700, Simon Glass wrote: > > Hi Tom, > > > > On Tue, 25 Feb 2025 at 06:59, Tom Rini <tr...@konsulko.com> wrote: > > > > > > On Mon, Feb 24, 2025 at 10:54:13AM -0700, Simon Glass wrote: > > > > Hi Tom, > > > > > > > > On Fri, 21 Feb 2025 at 09:06, Tom Rini <tr...@konsulko.com> wrote: > > > > > > > > > > On Fri, Feb 21, 2025 at 06:57:34AM -0700, Simon Glass wrote: > > > > > > Hi Tom, > > > > > > > > > > > > On Thu, 20 Feb 2025 at 07:53, Tom Rini <tr...@konsulko.com> wrote: > > > > > > > > > > > > > > On Thu, Feb 20, 2025 at 06:49:49AM -0700, Simon Glass wrote: > > > > > > > > Hi Tom, > > > > > > > > > > > > > > > > On Tue, 18 Feb 2025 at 17:55, Tom Rini <tr...@konsulko.com> > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > On Tue, Feb 18, 2025 at 05:01:40PM -0700, Simon Glass wrote: > > > > > > > > > > Hi Tom, > > > > > > > > > > > > > > > > > > > > On Tue, 18 Feb 2025 at 08:11, Tom Rini <tr...@konsulko.com> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > On Tue, Feb 18, 2025 at 05:09:23AM -0700, Simon Glass > > > > > > > > > > > wrote: > > > > > > > > > > > > Hi Tom, > > > > > > > > > > > > > > > > > > > > > > > > On Mon, 17 Feb 2025 at 10:52, Tom Rini > > > > > > > > > > > > <tr...@konsulko.com> wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > On Sun, Feb 16, 2025 at 01:44:13PM -0700, Simon Glass > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > Now that U-Boot can boot this quickly, using kvm, > > > > > > > > > > > > > > add a test that the > > > > > > > > > > > > > > installer starts up correctly. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Use the qemu-x86_64 board in the SJG lab. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Signed-off-by: Simon Glass <s...@chromium.org> > > > > > > > > > > > > > > --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > Changes in v2: > > > > > > > > > > > > > > - Add more patches to support booting with kvm > > > > > > > > > > > > > > - Add new patch with a test for booting Ubuntu 24.04 > > > > > > > > > > > > > > > > > > > > > > > > > > > > .gitlab-ci.yml | 5 ++++ > > > > > > > > > > > > > > test/py/tests/test_distro.py | 53 > > > > > > > > > > > > > > ++++++++++++++++++++++++++++++++++++ > > > > > > > > > > > > > > 2 files changed, 58 insertions(+) > > > > > > > > > > > > > > create mode 100644 test/py/tests/test_distro.py > > > > > > > > > > > > > > > > > > > > > > > > > > > > diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml > > > > > > > > > > > > > > index 8c49d5b0a79..ec799e97c10 100644 > > > > > > > > > > > > > > --- a/.gitlab-ci.yml > > > > > > > > > > > > > > +++ b/.gitlab-ci.yml > > > > > > > > > > > > > > @@ -745,3 +745,8 @@ zybo: > > > > > > > > > > > > > > variables: > > > > > > > > > > > > > > ROLE: zybo > > > > > > > > > > > > > > <<: *lab_dfn > > > > > > > > > > > > > > + > > > > > > > > > > > > > > +qemu-x86_64: > > > > > > > > > > > > > > + variables: > > > > > > > > > > > > > > + ROLE: qemu-x86_64 > > > > > > > > > > > > > > + <<: *lab_dfn > > > > > > > > > > > > > > > > > > > > > > > > > > I'm not sure why this is in your lab stanza, rather > > > > > > > > > > > > > than the normal > > > > > > > > > > > > > test.py QEMU stanza. > > > > > > > > > > > > > > > > > > > > > > > > Are you wanting to add the Ubuntu image into CI? It is > > > > > > > > > > > > quite large. > > > > > > > > > > > > > > > > > > > > > > If we're going to be able to run it on N platforms, yes, > > > > > > > > > > > we need to > > > > > > > > > > > think of a good way to cache the download. There's not a > > > > > > > > > > > particular > > > > > > > > > > > reason we can't run the stock Ubuntu RISC-V image on the > > > > > > > > > > > two sifive > > > > > > > > > > > targets and also qemu-riscv64, is there? > > > > > > > > > > > > > > > > > > > > Yes, we can do that. It is pretty simple to set up in > > > > > > > > > > Labgrid and it > > > > > > > > > > doesn't require all the runners to download a much larger > > > > > > > > > > image, etc. > > > > > > > > > > > > > > > > > > I don't quite understand why it's under "labgrid". These are > > > > > > > > > generic CI > > > > > > > > > tests. Now maybe we need to, in both Gitlab and Azure, add > > > > > > > > > some logic so > > > > > > > > > that certain longer or possibly destructive tests are only > > > > > > > > > run on tagged > > > > > > > > > releases or as requested rather than every time, as it will > > > > > > > > > take longer. > > > > > > > > > But pretty much every platform under the qemu target list > > > > > > > > > should be able > > > > > > > > > to Just Boot an off the shelf OS distribution is my point. > > > > > > > > > > > > > > > > Sure, and I'm not suggesting we shouldn't do that as well. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > diff --git a/test/py/tests/test_distro.py > > > > > > > > > > > > > > b/test/py/tests/test_distro.py > > > > > > > > > > > > > > new file mode 100644 > > > > > > > > > > > > > > index 00000000000..51eec45cecc > > > > > > > > > > > > > > --- /dev/null > > > > > > > > > > > > > > +++ b/test/py/tests/test_distro.py > > > > > > > > > > > > > > @@ -0,0 +1,53 @@ > > > > > > > > > > > > > > +# SPDX-License-Identifier: GPL-2.0+ > > > > > > > > > > > > > > +# Copyright 2025 Canonical Ltd. > > > > > > > > > > > > > > +# Written by Simon Glass > > > > > > > > > > > > > > <simon.gl...@canonical.com> > > > > > > > > > > > > > > + > > > > > > > > > > > > > > +import pytest > > > > > > > > > > > > > > + > > > > > > > > > > > > > > +DOWN = '\x1b\x5b\x42\x0d' > > > > > > > > > > > > > > + > > > > > > > > > > > > > > +# Enable early console so that the test can see if > > > > > > > > > > > > > > something goes wrong > > > > > > > > > > > > > > +CONSOLE = 'earlycon=uart8250,io,0x3f8 > > > > > > > > > > > > > > console=uart8250,io,0x3f8' > > > > > > > > > > > > > > + > > > > > > > > > > > > > > +@pytest.mark.boardspec('qemu-x86_64') > > > > > > > > > > > > > > +@pytest.mark.role('qemu-x86_64') > > > > > > > > > > > > > > +def test_distro(ubman): > > > > > > > > > > > > > > + """Test that of-platdata can be generated and > > > > > > > > > > > > > > used in sandbox""" > > > > > > > > > > > > > > + with ubman.log.section('boot'): > > > > > > > > > > > > > > + ubman.run_command('boot', > > > > > > > > > > > > > > wait_for_prompt=False) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + with ubman.log.section('Grub'): > > > > > > > > > > > > > > + # Wait for grub to come up and offset a > > > > > > > > > > > > > > menu > > > > > > > > > > > > > > + ubman.p.expect(['Try or Install Ubuntu']) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Press 'e' to edit the command line > > > > > > > > > > > > > > + ubman.run_command('e', > > > > > > > > > > > > > > wait_for_prompt=False, send_nl=False) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Wait until we see the editor appear > > > > > > > > > > > > > > + ubman.p.expect(['/casper/initrd']) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Go down to the 'linux' line > > > > > > > > > > > > > > + ubman.send(DOWN * 3) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Go to end of line > > > > > > > > > > > > > > + ubman.ctrl('E') > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Backspace to remove 'quiet splash' > > > > > > > > > > > > > > + ubman.send('\b' * len('quiet splash')) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Send our noisy console > > > > > > > > > > > > > > + ubman.send(CONSOLE) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + # Tell grub to boot > > > > > > > > > > > > > > + ubman.ctrl('X') > > > > > > > > > > > > > > + ubman.p.expect(['Booting a command list']) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + with ubman.log.section('Linux'): > > > > > > > > > > > > > > + # Linux should start immediately > > > > > > > > > > > > > > + ubman.p.expect(['Linux version']) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + with ubman.log.section('Ubuntu'): > > > > > > > > > > > > > > + # Shortly later, we should see this banner > > > > > > > > > > > > > > + ubman.p.expect(['Welcome to .*Ubuntu > > > > > > > > > > > > > > 24.04.1 LTS.*!']) > > > > > > > > > > > > > > + > > > > > > > > > > > > > > + ubman.restart_uboot() > > > > > > > > > > > > > > > > > > > > > > > > > > And this seems very inflexible. Please see > > > > > > > > > > > > > test/py/tests/test_net_boot.py for an example of how > > > > > > > > > > > > > to have this be > > > > > > > > > > > > > configurable and work on arbitrary platforms. What I > > > > > > > > > > > > > assume is tricky is > > > > > > > > > > > > > that the "role" part here is where you have a special > > > > > > > > > > > > > disk image being > > > > > > > > > > > > > passed. That too could be dealt with in > > > > > > > > > > > > > u-boot-test-hooks in a few ways, > > > > > > > > > > > > > and the images pre-fetched to the CI container. And > > > > > > > > > > > > > if this was > > > > > > > > > > > > > configurable similar to the example I noted above, it > > > > > > > > > > > > > could check real > > > > > > > > > > > > > hardware too. > > > > > > > > > > > > > > > > > > > > > > > > That wasn't the reaction I expected. > > > > > > > > > > > > > > > > > > > > > > > > Yes, it is inflexible, but it is a starting point. > > > > > > > > > > > > Isn't it better > > > > > > > > > > > > than what we have today? > > > > > > > > > > > > > > > > > > > > > > Is your inflexible boot an OS test better than the > > > > > > > > > > > flexible boot an OS > > > > > > > > > > > test that we have today? No, it's not. > > > > > > > > > > > > > > > > > > > > I didn't even know about it, or perhaps I forgot. > > > > > > > > > > > > > > > > > > I believe I mentioned it every time you've said we should > > > > > > > > > have an OS > > > > > > > > > test, so yes, I guess you forgot. > > > > > > > > > > > > > > > > Well it was only added in May last year and it relies on board > > > > > > > > config > > > > > > > > which I don't have...although I see that you have now posted > > > > > > > > yours. > > > > > > > > > > > > > > Yes, it was added not quite a year ago, and is documented within > > > > > > > the > > > > > > > test, like most tests that rely on the real platform. > > > > > > > > > > > > > > And do we need better documentation for test? Yes. > > > > > > > > > > > > +1 > > > > > > > > > > > > I'll note that I did my bit! > > > > > > > > > > > > > > > > > > > > > > > Perhaps this relates to getting the labgrid config > > > > > > > > > > published and > > > > > > > > > > figuring out how to pass info from Labgrid to tests. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I would like to generalise this test to work on at > > > > > > > > > > > > least one real > > > > > > > > > > > > board, preferably one that doesn't use grub. > > > > > > > > > > > > > > > > > > > > > > OK. The test we have today does that, if you check for > > > > > > > > > > > the "Welcome to > > > > > > > > > > > ..." string instead of the kernel has booted string. It > > > > > > > > > > > also does > > > > > > > > > > > netboot rather than run default bootcmd. But that's an > > > > > > > > > > > easy enough test > > > > > > > > > > > to write up. The only thing stopping me from doing that > > > > > > > > > > > right now is I > > > > > > > > > > > need to find a board in the lab where we installed an OS > > > > > > > > > > > to eMMC and not > > > > > > > > > > > SD card (some lab sd-mux issues). > > > > > > > > > > > > > > > > > > > > OK. Labgrid has a 'features' thing which you can attach to > > > > > > > > > > targets, so > > > > > > > > > > I should be able to use that to indicate that Ubuntu, > > > > > > > > > > Debian, Armbian, > > > > > > > > > > etc. are available. > > > > > > > > > > > > > > > > > > OK, but that sounds like the opposite direction. These are > > > > > > > > > generic tests > > > > > > > > > that can run in any / all of the labs, not just your labgrid > > > > > > > > > configuration. AMD has been contributing tests that run on > > > > > > > > > hardware for > > > > > > > > > example. > > > > > > > > > > > > > > > > That's great, the more tests we have the better. But those > > > > > > > > tests can't > > > > > > > > and don't run in CI, whereas mine can and do. > > > > > > > > > > > > > > AFAICT they're running on AMD's CI. They run on my CI. They don't > > > > > > > run on > > > > > > > *your* lab because you took things, intentionally, in a direction > > > > > > > to > > > > > > > minimize using u-boot-test-hooks and our existing per-board > > > > > > > configuration infrastructure. > > > > > > > > > > > > When I look at CI all I see is my lab. Which CI are you referring to > > > > > > and how can I access it? > > > > > > > > > > I'll point you at the notes for the first call we had recently: > > > > > https://lore.kernel.org/u-boot/20250128171923.GQ1233568@bill-the-cat/ > > > > > and note that there are many labs doing testing on / with U-Boot. > > > > > > > > That's all good, but it isn't as good as having the lab in gitlab. > > > > > > Strongly disagree. Especially since having it in the mainline gitlab > > > isn't feasible. > > > > > > > > > Here I would like to make a case for moving to using Labgrid across > > > > > > the board, but unfortunately the project struggles to review PRs, so > > > > > > it's probably not a good idea. > > > > > > > > > > It would also be counter to the feedback from the U-Boot community > > > > > about > > > > > making it easier to contribute testing results from additional labs. > > > > > > > > I really don't think the test hooks are a good setup, though. It is > > > > OK-ish for small labs, but it is so fiddly to use that I wrote a tool > > > > (Labman) to deal with all the confusion. > > > > > > Yes, I don't know how hard you evaluated all of the then-current lab > > > management tooling and wrote your own. > > > > > > > Labgrid (which you suggested I use for my lab, if you recall), > > > > > > Yes, and I think you forgot the aim was to make it easy to show all of > > > the existing Labgrid based labs that do Linux kernel testing they could > > > easily add U-Boot to the mix. I've been trying to get feedback from > > > other people with existing labgrid setups to look at what you've done. > > > > > > > provides for two yaml configuration files so that everything is in one > > > > place. Apart from its primitive support for USB hubs, it is much > > > > easier to maintain that dozens of little files all over the palce. > > > > > > I mean, I looked at what you posted and strongly disagree, but I think > > > both cases here are personal preference and not some sort of objective > > > and easily evaluated thing. > > > > > > > > > > > We need an 'all of the above' strategy here. > > > > > > > > > > > > > > Sure. But I still want to see things as reusable as possible. > > > > > > > What you > > > > > > > have above is *extremely* board and OS specific and > > > > > > > non-configurable. > > > > > > > > > > > > Yes, agreed. > > > > > > > > > > > > > I > > > > > > > also don't quite see why it's not a test of autoboot with the > > > > > > > pre-requisite of an OS being installed. > > > > > > > > > > > > Ah OK, my test is just for the installer itself. Both are useful, > > > > > > but > > > > > > I hope eventually to have the installer run to completion and then > > > > > > reboot to check all is well. > > > > > > > > > > In the spirit of "yes, and.."'ing tests, sure. Ilias pointed me at > > > > > some > > > > > testing Linaro has going now that automates I believe it was current > > > > > Yocto and current U-Boot (+ the pmb patches that've been posted) > > > > > doing a > > > > > full install via network in CI. So yes, a Canonical lab might also > > > > > find > > > > > it useful to end to end test installing Ubuntu. My own personal dream > > > > > is > > > > > that at least some of the existing kernelci labs see the utility in > > > > > adding "current U-Boot" as one of the matrix variables they test and > > > > > not > > > > > just "U-Boot as delivered by vendor" as a static part of the testing. > > > > > > > > OK. > > > > > > > > > > > > > > > > > BTW, having thought about how test/py works a bit, instead of > > > > > > > > the > > > > > > > > env__net_tftp_bootable_file stuff, we should have code or data > > > > > > > > which > > > > > > > > sets up the required test files (on a suitable server) before > > > > > > > > running > > > > > > > > the test. That way, all the test code is in one Python file and > > > > > > > > we > > > > > > > > don't have to spend ages trying to divine what each test needs. > > > > > > > > > > > > > > That seems like a lot more work than documenting more what we have > > > > > > > today, and I'm not sure of the benefit. Given the contents of the > > > > > > > pxe > > > > > > > test, yes, just having those files available to 'cp' in place > > > > > > > would be > > > > > > > helpful. But that's not the case for booting a kernel (the FIT > > > > > > > match > > > > > > > stuff doesn't work on the TI platforms atm). And if you look at > > > > > > > the > > > > > > > config I posted it also includes bootstage configuration. It also > > > > > > > won't > > > > > > > work well for the SPI tests, which I'm talking with Love about in > > > > > > > another thread. > > > > > > > > > > > > Yes, perhaps, but having self-contained tests would be a win. > > > > > > > > > > With it's own set of technical and legal challenges / obligations and > > > > > difficulties depending on what you even mean by "self contained". And > > > > > how often what's run where, and all sorts of other challenges too. > > > > > > > > > > Given the extreme depth that testing can go to, this is why I'm of the > > > > > position that we need to document things more and worry less about > > > > > prepackaged things. For example, making the documentation for the > > > > > current net based OS boot means that for bringing up a new board the > > > > > developer can just drop something in. Whereas if the tests expect a > > > > > functional OS image that has to also be messed with and is its own > > > > > challenge. > > > > > > > > Yes > > > > > > > > > > > > > > > > In other words, the majority of py/<host>/u_boot_boardenv_ > > > > > > > content is > > > > > > > configuration details, specific to both the platform / SoC first, > > > > > > > some > > > > > > > lab specific details second and drop-in existing 3rd party files a > > > > > > > distant third. > > > > > > > > > > > > I think the u-boot-test-hooks was an amazing solution 9 years ago, > > > > > > but > > > > > > we have outgrown it. We want people to be able to connect their lab > > > > > > to > > > > > > CI (meaning gitlab), so testing is more automated. > > > > > > > > > > More and more public testing would be great. The notes I linked above > > > > > explain one of the first problems there being that most companies will > > > > > not or can not hook a lab to a public CI instance. > > > > > > > > Well corporate IT is what it is. > > > > > > > > That means that their boards will not be testing in CI, unless they do > > > > it themselves, right? > > > > > > I'm not sure what you mean here. It's a solved problem for them (monitor > > > tree at URL) and something that's been being done since the beginning > > > even for U-Boot (it's how the original nvidia lab worked). > > > > > > > > The next problem, as > > > > > both of our personal labs show, is that just maintaining the physical > > > > > lab takes time and resources. I've added Heiko here because I've been > > > > > talking with him off-list about expanding tbot coverage and plumbing > > > > > that in to gitlab. > > > > > > > > OK > > > > > > > > > > > > > > > We should move away from relying on maintainers getting around to > > > > > > testing patches months after they are sent, when they have time, but > > > > > > they don't. Things need to be more automated and I'd encourage you > > > > > > to > > > > > > push this as well. > > > > > > > > > > I have been, and the results I've gotten are that companies are > > > > > testing > > > > > things internally but there's not any good way to publish results, and > > > > > that's the kind of framework we're entirely missing. > > > > > > > > If you like, but from my side, I like to see the results in gitlab. > > > > > > Depends on what you mean by gitlab. I assume you mean "triggered by a > > > push and visible in the main pipeline". Which isn't possible. It's not > > > going to happen. External collection is how it's handled for the linux > > > kernel and that community has far more sway than we do. If we ride their > > > coattails here so to speak, we can get results. If we push for something > > > completely different we aren't likely to have success. > > > > > > > > Which is another part of why I keep pushing against having U-Boot > > > > > configuration stuff inside of Labgrid as it makes it harder for any > > > > > lab > > > > > that's not using labgrid to see how to configure things. > > > > > > > > Well, as you requested, I looked at Labgrid and now my lab uses it. I > > > > am happy to publish the config[1], but I still hold my view that all > > > > the shell scripts in u-boot-test-hooks are limiting and painful to > > > > work with. > > > > > > Yes, and as I've shown, you can also use labgrid without going down the > > > same path you took, and we can also support other lab management methods > > > too, which is important to get as much testing as possible without > > > needing to centralize everything. > > > > In summary, I suppose we just have different visions and ideas, which > > should be a good thing. > > So long as the project can speak with one voice, yes. Which all circles > back to why I do not think what you're doing with u-boot.org is at all > helpful.
I do need a relief valve for when my efforts are blocked. Regards, Simon