Page MenuHomeFreeBSD

arm64Project
ActivePublic

Details

Description

FreeBSD/arm64

Recent Activity

Tue, Oct 29

igoro added a member for arm64: igoro.
Tue, Oct 29, 6:09 PM

Sep 4 2024

bz added a member for arm64: bz.
Sep 4 2024, 7:11 PM

May 22 2024

dsl closed D45289: arm64: Fixed IOMMU compilation errors.
May 22 2024, 9:09 AM · arm64
dsl added a comment to D45289: arm64: Fixed IOMMU compilation errors.

@jhb yes, of course.

May 22 2024, 5:55 AM · arm64

May 21 2024

jhb accepted D45289: arm64: Fixed IOMMU compilation errors.

Can you please add IOMMU to arm64 NOTES?

May 21 2024, 10:36 PM · arm64
bz added a reviewer for D45289: arm64: Fixed IOMMU compilation errors: jhb.
May 21 2024, 10:11 PM · arm64
dsl requested review of D45289: arm64: Fixed IOMMU compilation errors.
May 21 2024, 10:05 PM · arm64

Apr 17 2024

hp_tmm.cx abandoned D44823: Enable L1SS handling on RPI4 pcib.

Moved to github.

Apr 17 2024, 7:20 PM · arm64
hp_tmm.cx added a comment to D44823: Enable L1SS handling on RPI4 pcib.

I put all of the suggested changes in https://github.com/freebsd/freebsd-src/pull/1179 sorry for doubling up on phab and gb. I'm new here :)

Apr 17 2024, 4:03 PM · arm64
andrew added inline comments to D44823: Enable L1SS handling on RPI4 pcib.
Apr 17 2024, 2:51 PM · arm64
imp added a comment to D44823: Enable L1SS handling on RPI4 pcib.

Let's put all the reviews in the PR for this. It's usually a bad idea to do both and wastes my time having to deal with both unless there's a good reason.

Apr 17 2024, 1:24 PM · arm64
emaste added inline comments to D44823: Enable L1SS handling on RPI4 pcib.
Apr 17 2024, 12:43 PM · arm64
maciphone2_googlemail.com added reviewers for D44823: Enable L1SS handling on RPI4 pcib: karels, crowston_protonmail.com.
Apr 17 2024, 12:29 PM · arm64
hp_tmm.cx requested review of D44823: Enable L1SS handling on RPI4 pcib.
Apr 17 2024, 12:03 PM · arm64

Apr 5 2024

jhibbits abandoned D32804: Add a CPU reset hook to arm64.

Committed by @stevek in 3bbe8ed1a7 (D44535)

Apr 5 2024, 11:15 PM · arm64

Mar 29 2024

bz closed D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.
Mar 29 2024, 11:14 PM · arm64, ARM
bz closed D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
Mar 29 2024, 11:14 PM · arm64, ARM

Mar 8 2024

pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

@bz Ok, so it turns out that the issue I had was not with the driver. So there was no issue with the reset function, and the current version of the Diff properly works for me with the ACPI version of the driver. Since the clk* functions are no longer called when sc->mutex is locked, I assume the issue regarding mutex ordering is also fixed for the FDT driver. So this means the driver should also be ready for you to test.

Mar 8 2024, 5:17 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

I will do additional tests. There have been quite a few moving parts this week on my end (with the I2C tool I have been working on in addition to the driver), so I could have rushed my tests a bit too much and have drawn the wrong conclusions. I will do systematic tests starting from working versions.

Mar 8 2024, 3:11 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
Mar 8 2024, 1:14 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
In D44020#1009471, @bz wrote:
In D44020#1009469, @bz wrote:

This may not be based on your latest version but the general idea is: call i2c_update_div_val() before taking the lock, get the div_reg value back (maybe you can avoid passing it as pointer and checking for error by simply checking for sc->freq == UINT32_MAX in the caller (reset function) afterwards to see if you should change anything or not (just came to my mind, haven't checked all code paths). Then do the register writes all together under lock.

My assumption here is that it is the reset function is not called twice at the same time in parallel from the bus.

What you describe is what I do in the latest version, but it does not work, since without the lock, i2c_get_div_val gets executed before the attach function has the chance to set the variables that are used by i2c_get_div_val. So I need to delay the call to i2c_get_div_val until the attach function completes. Without that I end up with the wrong divider value. Note that this problem seems to only occur at boot time and not if I load the driver as a module after booting.

Do you enable interrupts before you need them? Do you need IBIC_BIIE for the initial READ?

Mar 8 2024, 3:27 AM · arm64, ARM

Mar 6 2024

bz added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
In D44020#1009469, @bz wrote:

This may not be based on your latest version but the general idea is: call i2c_update_div_val() before taking the lock, get the div_reg value back (maybe you can avoid passing it as pointer and checking for error by simply checking for sc->freq == UINT32_MAX in the caller (reset function) afterwards to see if you should change anything or not (just came to my mind, haven't checked all code paths). Then do the register writes all together under lock.

My assumption here is that it is the reset function is not called twice at the same time in parallel from the bus.

What you describe is what I do in the latest version, but it does not work, since without the lock, i2c_get_div_val gets executed before the attach function has the chance to set the variables that are used by i2c_get_div_val. So I need to delay the call to i2c_get_div_val until the attach function completes. Without that I end up with the wrong divider value. Note that this problem seems to only occur at boot time and not if I load the driver as a module after booting.

Mar 6 2024, 7:34 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
In D44020#1009469, @bz wrote:

This may not be based on your latest version but the general idea is: call i2c_update_div_val() before taking the lock, get the div_reg value back (maybe you can avoid passing it as pointer and checking for error by simply checking for sc->freq == UINT32_MAX in the caller (reset function) afterwards to see if you should change anything or not (just came to my mind, haven't checked all code paths). Then do the register writes all together under lock.

My assumption here is that it is the reset function is not called twice at the same time in parallel from the bus.

Mar 6 2024, 7:25 PM · arm64, ARM
bz added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

This may not be based on your latest version but the general idea is: call i2c_update_div_val() before taking the lock, get the div_reg value back (maybe you can avoid passing it as pointer and checking for error by simply checking for sc->freq == UINT32_MAX in the caller (reset function) afterwards to see if you should change anything or not (just came to my mind, haven't checked all code paths). Then do the register writes all together under lock.

Mar 6 2024, 7:14 PM · arm64, ARM
bz added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Ok I think I know how this could be fixed. I should create a sc->initialized_freq flag which is set by the attach function once sc->freq has been set. The reset function should check the status of this flag after locking sc->mutex, and if it is not the case, it should cv_wait for a condition from attach. The attach function should cv_signal this condition after setting the flag. Does it look like the best strategy to you?

Mar 6 2024, 7:05 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Ok I think I know how this could be fixed. I should create a sc->initialized_freq flag which is set by the attach function once sc->freq has been set. The reset function should check the status of this flag after locking sc->mutex, and if it is not the case, it should cv_wait for a condition from attach. The attach function should cv_signal this condition after setting the flag. Does it look like the best strategy to you?

Mar 6 2024, 3:25 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Is there a way to prevent the reset function from being called before the driver is done attaching?

Mar 6 2024, 4:12 AM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

The driver seems to be misbehaving with the latest changes. I think it is due to interference between the attach and the reset functions (the attach and reset functions are called in parallel, and i2c_get_div_val gets called by the reset function before sc->freq is set to UINT32_MAX). This issue combined with the lock restrictions for the clk* functions makes it tricky to get the driver properly initialized at boot time. I will have to take a look at it another day...

Mar 6 2024, 4:08 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Merging changes from D44020

Mar 6 2024, 1:39 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Moving back sc->mutex initialization into vf_i2c_attach_common as before, but now locking the mutex whenever it is needed to communicate with the controller. No longer locking it before calling ofw* and clk* functions in vf_i2c_fdt_attach

Mar 6 2024, 1:36 AM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

I think I will have to make additional changes...

Mar 6 2024, 1:09 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Trying to fix the "lock order reversal: (sleepable after non-sleepable)" error in FDT by moving back to an i2g_get_div_val function that gets called outside the sc->mutex lock with a WRITE call of the divider register inside the lock, that gets only called when the divider register value has been set.

Mar 6 2024, 1:02 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Merging changes from D44020

Mar 6 2024, 1:00 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Please ignore this revision

Mar 6 2024, 12:57 AM · arm64, ARM

Mar 5 2024

pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Based on the last couple of tests, it looks like the clk functions should not be called when a mutex is locked with mtx_lock?

Mar 5 2024, 11:44 PM · arm64, ARM
bz added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

We'll need to adjust that slightly in a different direction ...
@manu can you lend a hand? Probably a lot easier for you than for me.

Mar 5 2024, 10:36 PM · arm64, ARM
pldrouin_gmail.com added a comment to D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Sorry the previous diff had been generated using an outdated version of the D44020 diff.

Mar 5 2024, 6:55 PM · arm64, ARM
pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

-The previous diff was not generated properly w.r.t. the last version of D44020

Mar 5 2024, 6:54 PM · arm64, ARM
bz requested changes to D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.
Mar 5 2024, 6:49 PM · arm64, ARM

Feb 28 2024

pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Merging changes from D44020

Feb 28 2024, 1:19 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Adding a couple of missing spaces

Feb 28 2024, 1:18 AM · arm64, ARM
pldrouin_gmail.com added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

FYI: sys/dev/clk/clk.c reports:

/*
 * Locking - we use three levels of locking:
 * - First, topology lock is taken.  This one protect all lists.
 * - Second level is per clknode lock.  It protects clknode data.
 * - Third level is outside of this file, it protect clock device registers.
 * First two levels use sleepable locks; clock device can use mutex or sx lock.
 */

So clk_get_freq using a sleepable lock in its implementation is expected:

CLK_TOPO_SLOCK();
rv = clknode_get_freq(clknode, freq);
CLK_TOPO_UNLOCK();
Feb 28 2024, 1:10 AM · arm64, ARM
pldrouin_gmail.com added inline comments to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
Feb 28 2024, 1:09 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Merging changes from D44020

Feb 28 2024, 1:06 AM · arm64, ARM
pldrouin_gmail.com updated the diff for D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Modifying vf_i2c.c, vf_i2c_fdt.c and vf_i2c_acpi.c so sc->mutex is used for the attach and detach functions as well, in order to prevent race conditions, in particular with the reset function that is called in parallel with the attach function at boot time.

Feb 28 2024, 1:03 AM · arm64, ARM

Feb 27 2024

pldrouin_gmail.com added inline comments to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.
Feb 27 2024, 9:02 PM · arm64, ARM
markmi_dsl-only.net added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

FYI: sys/dev/clk/clk.c reports:

Feb 27 2024, 6:48 PM · arm64, ARM
bz added a comment to D44020: Splitting the existing Vybrid I2C Controller Driver to Add ACPI Support.

Thank you for all the changes. I think we are getting pretty close to getting this in.

Feb 27 2024, 6:27 PM · arm64, ARM

Feb 26 2024

pldrouin_gmail.com added a reviewer for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller: bz.
Feb 26 2024, 1:50 PM · arm64, ARM
pldrouin_gmail.com updated the diff for D44021: Revamping the existing Vybrid I2C Controller Driver to Include Support for the QorIQ LX2160A Controller.

Merging updates from D44020

Feb 26 2024, 1:44 PM · arm64, ARM