[LinuxBIOS] RFC Winflashrom Architecture -- Current device driver (testbed)
Darmawan Salihun
darmawan.salihun at gmail.com
Wed Jun 6 19:12:45 CEST 2007
Peter Stuge wrote:
> On Wed, Jun 06, 2007 at 11:16:03PM +0700, Darmawan Salihun wrote:
>
>>> 1. Kernel driver allowing unrestricted reads and writes to top 16MB.
>>>
>> The current version of the driver code is capable of mapping
>> *anywhere* within the 4GB physical address space. It shouldn't be a
>> problem to restrict it to the top 16MB.
>>
>
> We should make that 2MB until we actually support larger flash parts
> btw.
>
>
ok, no problem.
>> The logic of the mapping process is as follows:
>> a. The physical memory address range is mapped into the kernel's
>> virtual memory address range
>> b. The kernel's virtual memory address range is then mapped to the
>> "requesting" user mode virtual memory address range.
>>
>
> Sounds good.
>
>
For those interested in the driver code attached previously.
The bulk of the work is carried out in two functions, i.e.
NTSTATUS MapMmio(PDEVICE_OBJECT pDO, PIRP pIrp)
/*++
Routine Description:
Process the IRPs with IOCTL_MAP_MMIO code.
This routine maps a physical address range
to the usermode application address space.
Arguments:
pDO - pointer to the device object of this driver.
pIrp - pointer to an I/O Request Packet.
Return Value:
NT Status code
Notes:
This function can only map the area
below the 4-GB limit.
--*/
and
NTSTATUS CleanupMmioMapping(PDEVICE_EXTENSION pDevExt, ULONG i)
/*++
Routine Description:
This routine cleanup the mapping of a MMIO range
and resources it consumes.
Arguments:
pDevExt - pointer to the device extension of the driver
i - index of the mapZone to cleanup
Return Value:
NT Status code
--*/
That's all for now.
--Darmawan Salihun
More information about the coreboot
mailing list