Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollback #7967, ChibiOS thread safety #8173

Merged
merged 1 commit into from
Feb 23, 2020
Merged

Conversation

tzarc
Copy link
Member

@tzarc tzarc commented Feb 16, 2020

Description

i2c_start and i2c_stop were actually only really useful for people who want to explicitly invoke ChibiOS i2c functions. With mutual exclusion enabled, there were instances of i2c_start->i2c_transmit which would deadlock as the mutexes are non-recursive.

This PR turns i2c_start and i2c_stop into no-ops in order to maintain the previous interface, and folds the i2c_stop functionality into the other transmission functions -- they were already effectively doing i2c_start anyway.

Modified this PR to rollback #7967, specifically to fix the Qwiic OLED issue. Will do a new followup PR to fix all I2C usage across the platform to correctly invoke start/stop, and only perform lock acquisition in those functions.

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout/userspace (addition or update)
  • Documentation

Checklist

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have tested the changes and verified that they work and don't break anything (as well as I can manage).

@tzarc
Copy link
Member Author

tzarc commented Feb 21, 2020

Looks like this will need to be looked at sooner rather than later, testing #7769 showed that the Qwiic OLED driver does the start->transmit pattern, so it attempts to acquire the lock twice and fails as it's not recursive.

@tzarc tzarc marked this pull request as ready for review February 21, 2020 12:25
@tzarc
Copy link
Member Author

tzarc commented Feb 21, 2020

At this point it's likely builds for boards using the OLED after #7967 got merged are locking up.

@tzarc tzarc changed the title ChibiOS i2c_master threadsafety improvements Rollback #7967, ChibiOS thread safety Feb 22, 2020
@tzarc
Copy link
Member Author

tzarc commented Feb 22, 2020

Modified this PR to rollback #7967, specifically to fix the Qwiic OLED issue. Will do a new followup PR to fix all I2C usage across the platform to correctly invoke start/stop, and only perform lock acquisition in those functions.

Copy link
Member

@drashna drashna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, I'd rather that the QWIIC stuff got fixed, rather than reverting.

But short term, this is okay, but long term...

@drashna drashna requested a review from a team February 23, 2020 22:34
@tzarc tzarc merged commit 716c298 into qmk:master Feb 23, 2020
Shinichi-Ohki added a commit to Shinichi-Ohki/qmk_firmware that referenced this pull request Feb 25, 2020
* 'master' of https://github.com/qmk/qmk_firmware: (108 commits)
  `send_unicode_string()`: Add support for code points > 0xFFFF (qmk#8236)
  [Keyboard] Add Wete (qmk#8229)
  Improvements to extrakey HID descriptors (qmk#8156)
  Hineybush h87a lock indicators (qmk#8237)
  Add VIA support for Prime_L (qmk#8233)
  Hub16 - Bug removal + clean up code (qmk#8227)
  [Keyboard] ai03 Equinox (qmk#8224)
  [Keyboard] Add zfrontier/big_switch (qmk#8205)
  Gingham Update (qmk#8225)
  A proper `send_string()` for the Unicode feature (qmk#8155)
  Rollback PR qmk#7967 in preference of fixing I2C start/stop properly, in a followup PR. (qmk#8173)
  Add mouse support to SEND_STRING (qmk#8223)
  Add link to "Useful functions" in macro docs (qmk#7446)
  New functionality for cformat (qmk#7893)
  Update main.c (qmk#8198)
  format code according to conventions [skip ci]
  Fix QWIIC OLED for AVR (qmk#7769)
  VIA Support: KBD75 rev1/rev2 (qmk#8214)
  Update TMOv2 for new key (qmk#7759)
  Added custom keymap for preonic (qmk#7548)
  ...
nesth pushed a commit to nesth/qmk_firmware that referenced this pull request Feb 27, 2020
* upstream/master: (26 commits)
  Fixed OS detection such that OSX doesn't take over the world (qmk#8248)
  [Keyboard] Add Prime_EXL Plus to handwired (qmk#8238)
  format code according to conventions [skip ci]
  New feature: PERMISSIVE_HOLD_PER_KEY (qmk#7994)
  Split - Avoid race condition during matrix_init_quantum (qmk#8235)
  Acheron VIA support (qmk#8204)
  `send_unicode_string()`: Add support for code points > 0xFFFF (qmk#8236)
  [Keyboard] Add Wete (qmk#8229)
  Improvements to extrakey HID descriptors (qmk#8156)
  Hineybush h87a lock indicators (qmk#8237)
  Add VIA support for Prime_L (qmk#8233)
  Hub16 - Bug removal + clean up code (qmk#8227)
  [Keyboard] ai03 Equinox (qmk#8224)
  [Keyboard] Add zfrontier/big_switch (qmk#8205)
  Gingham Update (qmk#8225)
  A proper `send_string()` for the Unicode feature (qmk#8155)
  Rollback PR qmk#7967 in preference of fixing I2C start/stop properly, in a followup PR. (qmk#8173)
  Add mouse support to SEND_STRING (qmk#8223)
  Add link to "Useful functions" in macro docs (qmk#7446)
  New functionality for cformat (qmk#7893)
  ...
@tzarc tzarc deleted the i2c_locks_mk2 branch February 29, 2020 22:34
HokieGeek pushed a commit to HokieGeek/qmk_firmware that referenced this pull request Mar 5, 2020
c0psrul3 pushed a commit to c0psrul3/qmk_firmware that referenced this pull request Mar 23, 2020
sowbug pushed a commit to sowbug/qmk_firmware that referenced this pull request Apr 2, 2020
kylekuj pushed a commit to kylekuj/qmk_firmware that referenced this pull request Apr 21, 2020
jakeisnt pushed a commit to jakeisnt/qmk_firmware that referenced this pull request Aug 20, 2020
BorisTestov pushed a commit to BorisTestov/qmk_firmware that referenced this pull request May 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants