[LinuxBIOS] RFC Winflashrom Architecture -- Current device driver (testbed)
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
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)
Process the IRPs with IOCTL_MAP_MMIO code.
This routine maps a physical address range
to the usermode application address space.
pDO - pointer to the device object of this driver.
pIrp - pointer to an I/O Request Packet.
NT Status code
This function can only map the area
below the 4-GB limit.
NTSTATUS CleanupMmioMapping(PDEVICE_EXTENSION pDevExt, ULONG i)
This routine cleanup the mapping of a MMIO range
and resources it consumes.
pDevExt - pointer to the device extension of the driver
i - index of the mapZone to cleanup
NT Status code
That's all for now.
More information about the coreboot