Code Monkey home page Code Monkey logo

rockchip-windows-drivers's People

Contributors

coolstar avatar idigdoug avatar mariobalanica avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rockchip-windows-drivers's Issues

dwc_eqos - network driver memory ordering issues in transmit path

Not sure if this is a bug or just a hardware limitation. Might be worth further investigation.

In txqueue.cpp, the TxQueueAdvance function does the following:

  • Read the Current_App_TxDesc register to find the first "not yet done" descriptor.
  • Process all of the descriptors up to (but not including) that point.

Very frequently (according to the TxOwnDescriptors performance counter), the TxQueueAdvance function encouters a descriptor that is still marked as owned-by-adapter. This is not supposed to happen -- the adapter is supposed to mark the descriptor as owned-by-driver before it updates the Current_App_TxDesc register, and the descriptor is in uncached memory. So one of the following is true:

  • There is a bug in the driver.
  • There is a bug in the hardware such that it updates Current_App_TxDesc before updating the descriptor.

The driver has code to handle this condition, so I don't think this is causing corruption. There might be a scenario where this could lead to a hang, but I haven't seen that happen. I suspect that at present this is just a minor performance issue. If it's due to the hardware then it's probably fine, but if it's due to a bug in the driver it would be nice to track it down and fix it.

USB1 devices plugged directly into a USB2 port causes the port to stop working

If the EHCI devices are enabled and a USB1 device is plugged directly into one of the USB2 ports, the port will stop working.

Cause: The USB2 port consists of an EHCI device (handles USB2) and an OHCI device (handles USB1). Windows does not support OHCI devices on Arm64 builds of Windows. Plugging a USB1 device directly into the USB2 port causes the EHCI device to hand-off to the OHCI device, but since there is no OHCI driver, the hand-off never completes and the device hangs.

Workarounds:

  • Do not plug USB1 devices directly into the USB2 port. Instead, plug a USB2 hub into the USB2 port, then plug the USB1 device into the hub.
  • Use an XHCI port (e.g. the USB-C port on most devices) with an adapter or hub instead of using the USB2 port.

Could be fixed by providing our own OHCI driver.

USB2 - EHCI devices cause Windows to crash

Issue understood: bug in the Windows in-box usbehci.sys driver. The driver is performing atomic operations on uncached memory, which the RK3588's memory controller does not support.

Status:

  • Waiting on fix from Microsoft.

Workarounds:

  • UEFI comes with the EHCI devices disabled by default. Leave them disabled.
  • Use an XHCI port (e.g. the USB-C port on most devices) with an adapter or hub instead of using the USB2 port.

Occasional WHEA crash during Windows shutdown

Sometimes during system shutdown, the system will crash with a WHEA memory error.

Issue partially understood:

  • Windows is trying to read from the ACPI FACS table.
  • For some reason, this triggers a memory read abort. (Exact root cause unknown.)
  • The same issue has been reported on other boards, so it's not specific to RK3588.

Workaround (unconfirmed, please comment if this does or doesn't work for you):

  • Add a DWORD registry value PowerSimulateHiberBugcheck set to 0x40 to registry key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager.

M.2 storage devices (SATA and NVMe) devices don't work (hang at boot)

Putting a SATA or NVMe SSD into the M.2 slot causes Windows to hang at boot.

Issue understood: limitation of the Windows in-box storport.sys driver, which does not currently work correctly on systems with non-coherent cache.

Status:

  • Waiting on fix from Microsoft.

Workaround:

  • Boot from USB or, if using a device with eMMC, boot from eMMC.
  • A private build of storport.sys is available on the discord that seems to work.
    • Private storport.sys makes SATA SSD seems to work ok.
    • Private storport.sys makes NVMe SSD work ok as long as you're using a new enough build of stornvme.sys. Known to fail with stornvme.sys version 22621. Known to work with stornvme.sys version 25994.
    • This does not fix collecting kernel dumps, which is still broken (issue understood).

i2c - does not support hardware assisted write/read

The I2C adapter can issue a small (len < 4) write packet before reading. The driver currently doesn't support this and does the messages one by one. Adding support can speed up SMBus-style register reads so they're handled in a single clock instead of 2 or more.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.