Post not yet marked as solved
We're invited to write PCI drivers for iPad, but there's no capability for PCI Driver Kit in Xcode and a com.apple.developer.driverkit.transport.pci key in your entitlements does not find its way into your embedded.provisionprofile with Automatically Manage Signing nor can you manually add it in the appID portal, because it's not there.
Huh?
Post not yet marked as solved
There is currently no way to "Bring your driver to iPad with DriverKit" because it's impossible to develop a driver because developers can neither deploy to the device nor run there because there is no way to procure development provisioning profiles with the required entitlements for actual hardware (USB, PCI).
I bought an M1 iPad just to test this alleged new capability and the only thing it's good for so far is theoretically transferring files quickly or attaching some kind of ethernet dongle. My 1 month no-questions-asked returns window is going to close soon!
FB10152280
FB10244398
FB10244627
FB10160665
FB10152361
FB10160793
FB10152210
FB10160567
FB10244046
FB10427776
Post not yet marked as solved
Dear all
we try to test a capture card in M1 and Intel Mac book . we find some different .
insert thunderbolt device(pcie device).
open OBS and open the video.
Unplug the device without close the OBS(APP).
re-plug the device . we find M1 can't find the Thunderbolt drive . thunderbolt port are block, we had to restart the pc and fix the problem . but intel Mac book have not the problem .
if I close these app, and then Unplug the device , then we re-plug it , we find M1 And Intel MAC book can work.
we summary it
M1 have a thunderbolt block problem when app run to unplug the thunderbolt . Intel Mac have not the problem .
I want to know how to fix the problem.
Post not yet marked as solved
I read the doc of installing system extensions
https://developer.apple.com/documentation/systemextensions/installing_system_extensions_and_drivers?language=objc
, but actually our product is a framework and installed by .pkg.
I/O Kit kext is installed by script in .pkg.
So I meet a problem :how to install DriverKit dext by script?
Post not yet marked as solved
Was wondering if we are getting any closer to seeing some PCIDriverKit Example code. Thank you.
Post not yet marked as solved
Hello,
I am porting a PCI driver written with IOKit to the new PCIDriverKit framework.
I am able to perform DMA with a contiguous buffer allocated inside the dext (with IOBufferMemoryDescriptor::Create).
But I would also like to perform DMA to and from a buffer allocated by an application.
What I exactly want to do is:
Allocate an aligned buffer in the app (with e.g. posix_memalign)
Send the pointer to this buffer to the dext
In the dext, retrieve the list of pages descriptors to be able to perform DMA without copy into (or from) this buffer.
In IOKit, we can use methods such IOMemoryDescriptor::withAddressRange and IODMACommand::gen64IOVMSegments to map and retrieve the scatter gather list but I cannot find any information on how to do this in a dext with the PCIDriverKit framework.
Can anybody help me on how to do that?
Post not yet marked as solved
Looking for Driverkit examples, I see a reference to this page.. https://developer.apple.com/documentation/networkingdriverkit/connecting_a_network_driver. However the page is not found. Any idea when this example will be available?
The basic question: How is a vendor of PCI devices supposed to make multiple DEXTs that control subsets of PCI device IDs?
If one has a PCI vendor ID of 0xCDEF and two devices with device IDs of 0x1234 and 0x5678 that need two separate drivers, how are the DEXTs constructed to match accordingly? If each driver specifies an explicit IOPCIPrimaryMatch of 0x1234CDEF and 0x5678CDEF, then it seems the vendor would have to request special entitlements for each driver (and maintain them through Apple if additional models are added). Ugh.
On the other hand, the dev portal now has some level of ability to build entitlements combinations during App ID creation via check boxes in the "Additional Capabilities" tab. Great, but selecting PCI Primary Match puts in a wildcard match of 0x0000CDEF&0x0000FFFF for the vendor ID. Thus the DEXT must be signed this way in order to load and will load against any of the vendor's devices. This would work if there was an IOService::Probe() method to filter out unwanted devices in each driver, but there isn't.
How is this supposed to work?