Post

Replies

Boosts

Views

Activity

Cannot create Provisioning Profile
I've been trying to create a Provisioning Profile through the developer "Certificates, Identifiers & Profiles" webpage. The Profile will provide our DriverKit development entitlements. I am able to select the Type, the App ID, Certificates and Entitlements without problems. However, when I go to click the final "Generate" button it spins for a couple of seconds and then stops. No error message is presented, and it never proceeds to the "Download" step. Any ideas what could cause this and how to resolve it?
1
0
1.4k
Sep ’20
PrepareForDMA failing
I'm trying to prepare a buffer for DMA, but PrepareForDMA always fails with error 0xe00002c2 - kIOReturnBadArgument. I've watched the WWDC20 session, but I'm not sure what I'm doing wrong - any help much appreciated! constexpr auto bufferSize = 1024u; struct DMABufferInfo {     IOBufferMemoryDescriptor* descriptor;     IODMACommand* command;     uint32_t segmentsCount;     IOAddressSegment segments[32];     uint64_t flags; }; struct Driver_IVars {     IOPCIDevice* device;     DMABufferInfo bufferInfo; } ... kern_return_t IMPL(Driver, Start) { 		/* 		 * Successfully opens device 		 * Writes to PCIDevice command register 		 */ 		... 		os_log(OS_LOG_DEFAULT, "Allocating buffer...");     ret = IOBufferMemoryDescriptor::Create(    		 kIOMemoryDirectionOut,    		 bufferSize,         0,         &ivars->bufferInfo.descriptor     );     \__Require(ret == kIOReturnSuccess, Exit); 		ret = ivars->bufferInfo.descriptor->SetLength(bufferSize); 		\__Require(ret == kIOReturnSuccess, Exit); 		os_log(OS_LOG_DEFAULT, "Creating IODMACommand..."); 		IODMACommandSpecification dmaSpecification; 		bzero(&dmaSpecification, sizeof(dmaSpecification)); 		dmaSpecification.options = kIODMACommandSpecificationNoOptions; 		dmaSpecification.maxAddressBits = 64;     IODMACommand::Create( 				ivars->device, 				kIODMACommandCreateNoOptions, 				&dmaSpecification, 				&ivars->bufferInfo.command 		);     \__Require(ret == kIOReturnSuccess, Exit);     os_log(OS_LOG_DEFAULT, "Preparing For DMA...");     ret = ivars->bufferInfo.command->PrepareForDMA( 				kIODMACommandPrepareForDMANoOptions, 				ivars->bufferInfo.descriptor, 				0, 				0, 				&ivars->bufferInfo.flags, 				&ivars->bufferInfo.segmentsCount, 				ivars->bufferInfo.segments 		); 		\__Require(ret == kIOReturnSuccess, Exit); 		os_log(OS_LOG_DEFAULT, "Prepared buffer for DMA"); Exit: 		os_log(OS_LOG_DEFAULT, "Exiting: %s, ret = %#010x",\__FUNCTION\__, ret); 		return ret; } Log output: Allocating playback buffer... Creating IODMACommand... Preparing For DMA... Exiting: Start_Impl, ret = 0xe00002c2
2
0
1.2k
Nov ’20