From 88839d9726499535bb18a684c132a3138358f0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 1 Nov 2021 13:00:06 +0100 Subject: [PATCH] [HALX86] Stub-implement scatter/gather DMA operations These are required when we ask for a DMA_ADAPTER version 2. --- hal/halx86/generic/dma.c | 84 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 4 deletions(-) diff --git a/hal/halx86/generic/dma.c b/hal/halx86/generic/dma.c index e7cbeb32f7d..76a2e21f76c 100644 --- a/hal/halx86/generic/dma.c +++ b/hal/halx86/generic/dma.c @@ -102,6 +102,39 @@ static const ULONG_PTR HalpEisaPortPage[8] = { }; #ifndef _MINIHAL_ +NTSTATUS +NTAPI +HalCalculateScatterGatherListSize( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl OPTIONAL, + IN PVOID CurrentVa, + IN ULONG Length, + OUT PULONG ScatterGatherListSize, + OUT PULONG pNumberOfMapRegisters); + +NTSTATUS +NTAPI +HalBuildScatterGatherList( + IN PADAPTER_OBJECT AdapterObject, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice, + IN PVOID ScatterGatherBuffer, + IN ULONG ScatterGatherLength); + +NTSTATUS +NTAPI +HalBuildMdlFromScatterGatherList( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN PMDL OriginalMdl, + OUT PMDL *TargetMdl); + + static DMA_OPERATIONS HalpDmaOperations = { sizeof(DMA_OPERATIONS), (PPUT_DMA_ADAPTER)HalPutDmaAdapter, @@ -114,12 +147,11 @@ static DMA_OPERATIONS HalpDmaOperations = { NULL, /* Initialized in HalpInitDma() */ (PGET_DMA_ALIGNMENT)HalpDmaGetDmaAlignment, (PREAD_DMA_COUNTER)HalReadDmaCounter, - /* FIXME: Implement the S/G funtions. */ (PGET_SCATTER_GATHER_LIST)HalGetScatterGatherList, (PPUT_SCATTER_GATHER_LIST)HalPutScatterGatherList, - NULL /*(PCALCULATE_SCATTER_GATHER_LIST_SIZE)HalCalculateScatterGatherListSize*/, - NULL /*(PBUILD_SCATTER_GATHER_LIST)HalBuildScatterGatherList*/, - NULL /*(PBUILD_MDL_FROM_SCATTER_GATHER_LIST)HalBuildMdlFromScatterGatherList*/ + (PCALCULATE_SCATTER_GATHER_LIST_SIZE)HalCalculateScatterGatherListSize, + (PBUILD_SCATTER_GATHER_LIST)HalBuildScatterGatherList, + (PBUILD_MDL_FROM_SCATTER_GATHER_LIST)HalBuildMdlFromScatterGatherList }; #endif @@ -1130,6 +1162,50 @@ HalpScatterGatherAdapterControl(IN PDEVICE_OBJECT DeviceObject, ExFreePoolWithTag(AdapterControlContext, TAG_DMA); ExFreePoolWithTag(ScatterGather, TAG_DMA); } + +NTSTATUS +NTAPI +HalCalculateScatterGatherListSize( + IN PADAPTER_OBJECT AdapterObject, + IN PMDL Mdl OPTIONAL, + IN PVOID CurrentVa, + IN ULONG Length, + OUT PULONG ScatterGatherListSize, + OUT PULONG pNumberOfMapRegisters) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +HalBuildScatterGatherList( + IN PADAPTER_OBJECT AdapterObject, + IN PDEVICE_OBJECT DeviceObject, + IN PMDL Mdl, + IN PVOID CurrentVa, + IN ULONG Length, + IN PDRIVER_LIST_CONTROL ExecutionRoutine, + IN PVOID Context, + IN BOOLEAN WriteToDevice, + IN PVOID ScatterGatherBuffer, + IN ULONG ScatterGatherLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +HalBuildMdlFromScatterGatherList( + IN PDMA_ADAPTER DmaAdapter, + IN PSCATTER_GATHER_LIST ScatterGather, + IN PMDL OriginalMdl, + OUT PMDL *TargetMdl) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} #endif /**