Page MenuHomeFreeBSD

wulf (Vladimir Kondratyev)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 3 2017, 8:47 AM (141 w, 5 d)

Recent Activity

Wed, Feb 12

wulf added a comment to D23615: This adds wulf7 / iichid on github to ports.

should we leave it open for any version/arch, or should we limit it. If limiting, I need a list of archs for ONLY_FOR_ARCHS and OSVERSIONS we shouldn't set IGNORE for

Wed, Feb 12, 10:11 AM
wulf added a comment to D23615: This adds wulf7 / iichid on github to ports.

Fails building in 11amd64 with the following, so will at least set OSVERSION > 12* unless its expected or desirable for iichid to be test on 11:

Only 12.1+ is supported.

Wed, Feb 12, 7:57 AM

Tue, Feb 11

wulf added a comment to D23615: This adds wulf7 / iichid on github to ports.

I recommend to disable USB backend by default and leave it as build-time option as it is not completed yet and interferes with existing USB drivers.

Tue, Feb 11, 11:11 AM
wulf added a comment to D23615: This adds wulf7 / iichid on github to ports.

@wulf : Do you think it's time to put this into base or let's add this as a port first?

Tue, Feb 11, 11:04 AM

Dec 25 2019

wulf added a comment to D22901: [iicbus] Add support for ACPI-based children enumeration.
In D22901#501848, @jhb wrote:

So it would be helpful to see an acpidump of a system with these devices.

Dec 25 2019, 4:04 PM

Dec 23 2019

wulf added inline comments to D22901: [iicbus] Add support for ACPI-based children enumeration.
Dec 23 2019, 10:33 PM
wulf updated the diff for D22901: [iicbus] Add support for ACPI-based children enumeration.
Dec 23 2019, 10:27 PM

Dec 22 2019

wulf committed rS355994: MFC r354291 - r354322, r354327, r355596.
MFC r354291 - r354322, r354327, r355596
Dec 22 2019, 12:46 AM

Dec 21 2019

wulf created D22902: [acpi] Fix stalled value returned by acpi_get_device() after newbus device has been deleted.
Dec 21 2019, 9:36 PM
wulf created D22901: [iicbus] Add support for ACPI-based children enumeration.
Dec 21 2019, 9:03 PM

Dec 19 2019

wulf added a comment to D21565: atkbd,evdev: Interpret Google Assistant key on Chromebooks as right meta.

I don't think that Assistant key should be mapped to KEY_RIGHTMETA for following reasons:

  1. It is not really a meta key as it does not affect other key meanings like Shift, Alt, Ctrl and Win keys do.
  2. According to https://www.win.tue.nl/~aeb/linux/kbd/scancodes-6.html, scancode of 0x58 prefixed with 0xE0 is emitted by pressing of Fn+F12 keys on Logitech and Microsoft keyboards so the best matching evdev event would be KEY_FN_F12.
Dec 19 2019, 8:50 PM · x11

Dec 10 2019

wulf committed rS355596: [ig4] Remove unused methods from bus interface.
[ig4] Remove unused methods from bus interface
Dec 10 2019, 8:23 PM

Dec 3 2019

wulf committed rS355372: MFC r355065 - r355068: Linux epoll improvements..
MFC r355065 - r355068: Linux epoll improvements.
Dec 3 2019, 11:12 PM

Nov 24 2019

wulf added a comment to D22515: Linux epoll: Check both read and write kqueue events existence in EPOLL_CTL_ADD.

Do you think we could add all of these test cases to the tree somewhere?

Nov 24 2019, 9:06 PM
wulf committed rS355068: Linux epoll: Allow passing of any negative timeout value to epoll_wait.
Linux epoll: Allow passing of any negative timeout value to epoll_wait
Nov 24 2019, 8:51 PM
wulf closed D22517: Linux epoll: Allow passing of any negative timeout value to epoll_wait.
Nov 24 2019, 8:51 PM
wulf closed D22516: Linux epoll: Register events with zero event mask..
Nov 24 2019, 8:47 PM
wulf committed rS355067: Linux epoll: Register events with zero event mask.
Linux epoll: Register events with zero event mask
Nov 24 2019, 8:47 PM
wulf committed rS355066: Linux epoll: Check both read and write kqueue events existence in EPOLL_CTL_ADD.
Linux epoll: Check both read and write kqueue events existence in EPOLL_CTL_ADD
Nov 24 2019, 8:44 PM
wulf closed D22515: Linux epoll: Check both read and write kqueue events existence in EPOLL_CTL_ADD.
Nov 24 2019, 8:44 PM
wulf committed rS355065: Linux epoll: Don't deregister file descriptor after EPOLLONESHOT is fired.
Linux epoll: Don't deregister file descriptor after EPOLLONESHOT is fired
Nov 24 2019, 8:42 PM
wulf closed D22513: Linux epoll: Don't deregister file descriptor after EPOLLONESHOT is fired.
Nov 24 2019, 8:41 PM

Nov 23 2019

wulf created D22517: Linux epoll: Allow passing of any negative timeout value to epoll_wait.
Nov 23 2019, 12:19 PM
wulf created D22516: Linux epoll: Register events with zero event mask..
Nov 23 2019, 12:13 PM
wulf created D22515: Linux epoll: Check both read and write kqueue events existence in EPOLL_CTL_ADD.
Nov 23 2019, 12:07 PM
wulf updated the test plan for D22513: Linux epoll: Don't deregister file descriptor after EPOLLONESHOT is fired.
Nov 23 2019, 11:59 AM
wulf created D22513: Linux epoll: Don't deregister file descriptor after EPOLLONESHOT is fired.
Nov 23 2019, 11:58 AM

Nov 4 2019

wulf committed rS354327: [ig4] Try to workaround MIPS namespace pollution issue.
[ig4] Try to workaround MIPS namespace pollution issue
Nov 4 2019, 2:30 AM

Nov 3 2019

wulf committed rS354322: [ig4] Convert ithread interrupt handler to filter based one..
[ig4] Convert ithread interrupt handler to filter based one.
Nov 3 2019, 9:18 PM
wulf committed rS354321: [ig4] Enable additional registers support on Appolo Lake controllers.
[ig4] Enable additional registers support on Appolo Lake controllers
Nov 3 2019, 9:17 PM
wulf committed rS354320: [ig4] Add support for CannonLake controllers.
[ig4] Add support for CannonLake controllers
Nov 3 2019, 9:16 PM
wulf committed rS354319: [ig4] Add generic resource methods to bus interface.
[ig4] Add generic resource methods to bus interface
Nov 3 2019, 9:15 PM
wulf committed rS354318: [ig4] Minor improvement of write pipelining.
[ig4] Minor improvement of write pipelining
Nov 3 2019, 9:14 PM
wulf committed rS354317: [ig4] wait for bus stop condition after stop command issued.
[ig4] wait for bus stop condition after stop command issued
Nov 3 2019, 9:13 PM
wulf committed rS354316: [ig4] On SkyLake controllers issue reset on attach unconditionally..
[ig4] On SkyLake controllers issue reset on attach unconditionally.
Nov 3 2019, 9:11 PM
wulf committed rS354315: [ig4] Set STOP condition and flush TX/RX FIFOs on error.
[ig4] Set STOP condition and flush TX/RX FIFOs on error
Nov 3 2019, 9:08 PM
wulf committed rS354314: [ig4] Improve error detection.
[ig4] Improve error detection
Nov 3 2019, 9:07 PM
wulf committed rS354313: [ig4] Convert polling loop from status-based to interrupt-based.
[ig4] Convert polling loop from status-based to interrupt-based
Nov 3 2019, 9:06 PM
wulf committed rS354312: [ig4] Use interrupts for waiting for empty TX FIFO.
[ig4] Use interrupts for waiting for empty TX FIFO
Nov 3 2019, 9:05 PM
wulf committed rS354311: [ig4] Convert last remaining usage of TX_NOTFULL status to TX_EMPTY.
[ig4] Convert last remaining usage of TX_NOTFULL status to TX_EMPTY
Nov 3 2019, 9:04 PM
wulf committed rS354310: [ig4] Rewrite ig4iic_write routine to use TX_EMPTY status flag.
[ig4] Rewrite ig4iic_write routine to use TX_EMPTY status flag
Nov 3 2019, 9:03 PM
wulf committed rS354309: [ig4] Remove dead code inherited from DragonflyBSD.
[ig4] Remove dead code inherited from DragonflyBSD
Nov 3 2019, 9:02 PM
wulf committed rS354308: [ig4] Add suspend/resume support.
[ig4] Add suspend/resume support
Nov 3 2019, 9:01 PM
wulf committed rS354307: [ig4] Implement burst mode for data reads.
[ig4] Implement burst mode for data reads
Nov 3 2019, 8:59 PM
wulf committed rS354306: [ig4] Set clock registers based on controller model.
[ig4] Set clock registers based on controller model
Nov 3 2019, 8:58 PM
wulf committed rS354305: [ig4] dump IG4_REG_COMP_PARAM1 and IG4_REG_COMP_VER registers unconditionally.
[ig4] dump IG4_REG_COMP_PARAM1 and IG4_REG_COMP_VER registers unconditionally
Nov 3 2019, 8:57 PM
wulf committed rS354304: [cyapa] Postpone start of the polling thread until sleep is available.
[cyapa] Postpone start of the polling thread until sleep is available
Nov 3 2019, 8:55 PM
wulf committed rS354303: [ig4] Do not wait until interrupts are enabled at attach stage.
[ig4] Do not wait until interrupts are enabled at attach stage
Nov 3 2019, 8:54 PM
wulf committed rS354302: [ig4] Allow enabling of polled mode from iicbus allocation callback.
[ig4] Allow enabling of polled mode from iicbus allocation callback
Nov 3 2019, 8:53 PM
wulf committed rS354301: [ig4] Add support for polled mode.
[ig4] Add support for polled mode
Nov 3 2019, 8:51 PM
wulf committed rS354300: [ig4] disable controller before initialization of clock counters.
[ig4] disable controller before initialization of clock counters
Nov 3 2019, 8:50 PM
wulf committed rS354299: [ig4] Stop I2C controller after checking that it's kind of functional..
[ig4] Stop I2C controller after checking that it's kind of functional.
Nov 3 2019, 8:49 PM
wulf committed rS354298: [ig4] We actually need to set the Rx threshold register one smaller..
[ig4] We actually need to set the Rx threshold register one smaller.
Nov 3 2019, 8:47 PM
wulf committed rS354297: [ig4] Ignore stray interrupts.
[ig4] Ignore stray interrupts
Nov 3 2019, 8:46 PM
wulf committed rS354296: [ig4] Reduce scope of io_lock.
[ig4] Reduce scope of io_lock
Nov 3 2019, 8:45 PM
wulf committed rS354295: [ig4] Do not wait for interrupts in set_controller() routine.
[ig4] Do not wait for interrupts in set_controller() routine
Nov 3 2019, 8:44 PM
wulf committed rS354294: [ig4] Drop driver's internal RX FIFO.
[ig4] Drop driver's internal RX FIFO
Nov 3 2019, 8:43 PM
wulf committed rS354293: [ig4] Only enable interrupts when we want them. Otherwise keep mask at 0..
[ig4] Only enable interrupts when we want them. Otherwise keep mask at 0.
Nov 3 2019, 8:42 PM
wulf committed rS354292: [ig4] Handle controller startup errors.
[ig4] Handle controller startup errors
Nov 3 2019, 8:41 PM
wulf committed rS354291: [ig4] Give common name to PCI and ACPI device drivers.
[ig4] Give common name to PCI and ACPI device drivers
Nov 3 2019, 8:40 PM
wulf closed D22016: ig4. Various improvements.
Nov 3 2019, 8:40 PM

Oct 27 2019

wulf added inline comments to D22016: ig4. Various improvements.
Oct 27 2019, 11:14 PM
wulf updated the diff for D22016: ig4. Various improvements.
  • Clock registers values are calculated based on I2C protocol timing constraints and IC parameters taken from LPSS driver. Latter are still kind of magic numbers, but they are physical parameters at least.
  • Interrupt handler is filter based now.
Oct 27 2019, 10:58 PM

Oct 14 2019

wulf created D22016: ig4. Various improvements.
Oct 14 2019, 1:13 AM

Oct 7 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Thanks for the remarks. I'd suggest to stop riding a dead horse and make the switch altogether.

This driver still has some advantages over mine. It supports 12.0-release, sysmouse(8) protocol and it does not require ig4 patching. So, I would prefer it for non-HID trackpads like some Synaptics models. Al least for now.

Oct 7 2019, 7:11 PM · Contributor Reviews (base)

Sep 29 2019

wulf added inline comments to D16698: First draft HID over I2C support (Mouse only).
Sep 29 2019, 9:45 AM · Contributor Reviews (base)
wulf added inline comments to D16698: First draft HID over I2C support (Mouse only).
Sep 29 2019, 9:26 AM · Contributor Reviews (base)
wulf added inline comments to D16698: First draft HID over I2C support (Mouse only).
Sep 29 2019, 9:09 AM · Contributor Reviews (base)

Sep 15 2019

wulf committed rS352362: ig4(4): Fix SDA HOLD time set too low on Skylake controllers.
ig4(4): Fix SDA HOLD time set too low on Skylake controllers
Sep 15 2019, 7:16 PM

Sep 12 2019

wulf committed rS352243: ig4(4): Fix SDA HOLD time set too low on Skylake controllers.
ig4(4): Fix SDA HOLD time set too low on Skylake controllers
Sep 12 2019, 12:33 PM

Sep 9 2019

wulf committed rP511703: utouch - driver for absolute USB HID mouses emulated by some virtualization.
utouch - driver for absolute USB HID mouses emulated by some virtualization
Sep 9 2019, 8:38 PM
wulf committed rS352102: MFC r351197, r351199:.
MFC r351197, r351199:
Sep 9 2019, 6:57 PM
wulf committed rS352101: MFC r351196, r351324, r351326:.
MFC r351196, r351324, r351326:
Sep 9 2019, 6:51 PM

Aug 23 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).
In D16698#464917, @imp wrote:

We really have three problems that we need to solve:
(1) iichid
(2) how to get the acpi stuff to automatically add iichid devices

iichid device is a child of acpi bus also, so it can be rephrased as "how to get the acpi stuff to automatically add acpi device with given CID"

(3) How to cope with resume and resets not being quite right for the ig4.

It is not clear which reset is mentioned:

  1. IG4 controller reset (set designware specific parameters like timing counters and so on)
  2. iicbus reset - FIFO flushing, setting of symbol speed and slave address
  3. I2C hid device reset - performed with special I2C command

If it is mentioned in context of @johalun suspend/resume patch, then most probably it misses iicbus reset as it is performed by ig4 driver in a lazy way at a start of next xfer. sc->slave_valid bool variable should be reset to trigger it and I do not see that in @johalun resume method.

Would we make better progress with we split those three issues up into their own reviews?

Aug 23 2019, 1:01 AM · Contributor Reviews (base)

Aug 18 2019

wulf committed rS351199: iwmbtfw(8): Fix compilation on platforms using gcc..
iwmbtfw(8): Fix compilation on platforms using gcc.
Aug 18 2019, 11:10 PM
wulf committed rS351197: iwmbtfw: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices.
iwmbtfw: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices
Aug 18 2019, 10:20 PM
wulf committed rS351196: ng_ubt(4): do not attach Intel Wireless 8260/8265 in bootloader mode..
ng_ubt(4): do not attach Intel Wireless 8260/8265 in bootloader mode.
Aug 18 2019, 10:12 PM
wulf closed D21071: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices.
Aug 18 2019, 10:12 PM
wulf committed rP509242: New port: comms/iwmbt-firmware.
New port: comms/iwmbt-firmware
Aug 18 2019, 10:05 PM

Aug 14 2019

D21071: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices now requires review to proceed.

Finally, I made separate small kernel module ng_ubt_intel which shares object file with ng_ubt.
It inherits device methods from ng_ubt while overriding it's probe() method.
That allows move vendor-specific code out of ng_ubt and avoid code duplication the same time.
Firmware is still downloaded with libusb as I don't see any benefits from moving one-shot driver to kernelspace.

Aug 14 2019, 10:14 PM

Aug 12 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

I wrote iicbus(4) extension which performs ACPI-based enumeration of I2C devices connected to a controller. It is not limited to HID devices and fires at iicbus attach stage.

Aug 12 2019, 12:15 AM · Contributor Reviews (base)

Jul 30 2019

wulf added inline comments to D21071: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices.
Jul 30 2019, 11:02 AM

Jul 29 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

However, loading iichid.ko doesn't go well:

Jul 29 03:00:32 thorium kernel: acpi_iichid0: <HID over I2C (ACPI)> on acpi0
Jul 29 03:00:32 thorium kernel: imt0:   ACPI Hardware ID  : ELAN1200
Jul 29 03:00:32 thorium kernel: imt0:   IICbus addr       : 0x15
Jul 29 03:00:32 thorium kernel: imt0:   HID descriptor reg: 0x01
Jul 29 03:00:32 thorium kernel: imt0: could not retrieve HID descriptor from the device: 3
Jul 29 2019, 1:20 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).
In D16698#457883, @wulf wrote:

Yes, it still prints.

Ok. than uncomment pair of debugging printfs in iichid_event_task(). They lie several lines below iichid_intr() sub.
If you get one line with hex data per "something", post it here

If you mean these lines:

device_printf(sc->dev, "no data received\n");

and

DPRINTF(sc, "%*D\n", actual, sc->ibuf, " ");

then I get just this (a single touch):

Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 2 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 4 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 02:01:08 thorium syslogd: last message repeated 1 times
Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 3 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 2 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 02:01:08 thorium syslogd: last message repeated 1 times
Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 5 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 02:01:08 thorium kernel: something
Jul 29 02:01:08 thorium syslogd: last message repeated 3 times
Jul 29 02:01:08 thorium kernel: imt0: no data received
Jul 29 2019, 12:16 AM · Contributor Reviews (base)

Jul 28 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Yes, it still prints.

Jul 28 2019, 11:30 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).
In D16698#457872, @wulf wrote:
In D16698#457847, @wulf wrote:

then comment out imt_set_input_mode() call in imt_attach() subroutine (imt.c) and insert printf("something\n"); into iichid_intr() sub (iichid.c)
If it print something on the console when you touching trackpad surface?

Yes! :) It prints "something".

Jul 28 2019, 10:53 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).
In D16698#457847, @wulf wrote:
Jul 28 2019, 10:00 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Here it is.

Jul 28 2019, 8:38 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Updated D16698 builds and runs fine on 12-STABLE though it still lacks resume support.
I must admit I wasn't able to test https://github.com/wulf7/iichid. The module didn't work for me:
Jul 28 18:20:49 bsdondell kernel: imt0: IRQ allocation failed. Fallback to sampling.

Jul 28 2019, 7:29 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

All done, no difference, nothing happens with evemu-record. :(

Jul 28 2019, 9:22 AM · Contributor Reviews (base)

Jul 27 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Touching/pressing/doing anything with touchpad produces absolutely nothing.

Jul 27 2019, 9:23 AM · Contributor Reviews (base)

Jul 25 2019

wulf created D21071: Firmware loader for Intel Wireless 8260 based Bluetooth USB devices.
Jul 25 2019, 9:19 PM

Jul 22 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Sorry, no difference.

I enabled debugging output in imt.c so please:

Jul 22 2019, 10:27 AM · Contributor Reviews (base)

Jul 21 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

The only problem -- the device is still dead;

I fixed one bug, so try one more time

it generates nothing with libinput debug-events, and no events in xev.

libinput debug-events is not the right tool to debug evdev. evemu-record from devel/evemu port is better

Jul 21 2019, 11:35 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Unlike with previous driver, I don't see /dev/input/event3 (HID over IIC) anymore.

That is expected as it ignored any touchpads

Jul 21 2019, 12:56 PM · Contributor Reviews (base)

Jul 19 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

@wulf, please explain how to test this driver. Should I just compile new iichid.ko (running make in the input directory),

just unpack it at your $HOME. Than

make && sudo kldload ./iichid.ko

leaving all other modules built from the source of this thread?

drivers from this review should be at least unloaded from kernel. There is no need to revert D16698 patch. Just don't try to kldload both modules in between reboots.

Should I remove evdev support from the kernel?

No need. It links with evdev unconditionally

Can you please share your xorg configuration?

I do not have any specific xorg.conf options. Any evdev-awared autoconfiguration backend should work out of box. See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196678 for example.

Jul 19 2019, 9:31 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

Parsed:

0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x05,        // Usage (Touch Pad)
0xA1, 0x01,        // Collection (Application)
0x85, 0x04,        //   Report ID (4)
0x09, 0x22,        //   Usage (Finger)
0xA1, 0x02,        //   Collection (Logical)
Jul 19 2019, 9:13 PM · Contributor Reviews (base)

Jul 18 2019

wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

OS driver or userland applications just do not have enough information as finger coords or count to support doublefinger scroll or multifinger taps.

I wrote a simple util to dump report descriptor from I2C HID device

.
It accepts 3 input parameters: iic device path, i2c bus address and i2c HID register and prints report descriptor of given I2C device on stdout. This report descriptor can be further analyzed with any tool (e.g. web-based http://eleccelerator.com/usbdescreqparser/) to examine HID device capabilities.

Jul 18 2019, 9:59 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

I see. Sigh. Anyway, some people from this thread reported that two finger scrolling *does* work, including @johalun himself in his announcement:

If I do two finger horizontal scroll I don't get any event callbacks at all while I do for vertical. Could this be something that has to be enabled by sending some command to the device?

Jul 18 2019, 9:45 PM · Contributor Reviews (base)
wulf added a comment to D16698: First draft HID over I2C support (Mouse only).

We have the wmt driver but right now it's *touchscreen*-only and (of course) USB-only.

Jul 18 2019, 9:34 PM · Contributor Reviews (base)