示例#1
0
void *locate_rmu_file(size_t *rmu_file_len)
{
	struct cbfsf fh;
	size_t fsize;
	void *rmu_data;
	uint32_t type;

	/* Locate the rmu.bin file in the read-only region of the flash */
	type = CBFS_TYPE_RAW;
	if (cbfs_locate_file_in_region(&fh, "COREBOOT", "rmu.bin", &type))
		return NULL;

	/* Get the file size */
	fsize = region_device_sz(&fh.data);
	if (rmu_file_len != NULL)
		*rmu_file_len = fsize;

	/* Get the data address */
	rmu_data = rdev_mmap(&fh.data, 0, fsize);

	/* Since the SPI flash is directly mapped into memory, we do not need
	 * the mapping provided by the rdev service.  Unmap the file to prevent
	 * a memory leak.  Return/leak the SPI flash address for the rmu.bin
	 * file data which will be directly accessed by FSP MemoryInit.
	 */
	rdev_munmap(&fh.data, rmu_data);
	return rmu_data;
}
示例#2
0
文件: mma.c 项目: siro20/coreboot
void setup_mma(MEMORY_INIT_UPD *memory_params)
{
    void *mma_test_metadata, *mma_test_content, *mma_test_param;
    size_t mma_test_metadata_file_len, mma_test_content_file_len,
           mma_test_param_file_len;
    char test_filename[TEST_NAME_MAX_SIZE],
         test_param_filename[TEST_PARAM_MAX_SIZE];

    printk(BIOS_DEBUG, "Entry setup_mma\n");

    memory_params->MmaTestContentPtr = 0;
    memory_params->MmaTestContentSize = 0;
    memory_params->MmaTestConfigPtr = 0;
    memory_params->MmaTestConfigSize = 0;

    mma_test_metadata = cbfs_locate_file_in_region(MMA_CBFS_REGION,
                        MMA_TEST_METADATA_FILENAME, CBFS_TYPE_MMA,
                        &mma_test_metadata_file_len);

    if (!mma_test_metadata) {
        printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s\n",
               MMA_TEST_METADATA_FILENAME);
        return;
    }

    if (label_value(mma_test_metadata, mma_test_metadata_file_len,
                    MMA_TEST_NAME_TAG, test_filename, TEST_NAME_MAX_SIZE)) {
        printk(BIOS_DEBUG, "MMA setup failed : Failed to get %s",
               MMA_TEST_NAME_TAG);
        return;
    }

    if (label_value(mma_test_metadata, mma_test_metadata_file_len,
                    MMA_TEST_PARAM_TAG, test_param_filename,
                    TEST_PARAM_MAX_SIZE)) {
        printk(BIOS_DEBUG, "MMA setup failed : Failed to get %s",
               MMA_TEST_PARAM_TAG);
        return;
    }

    printk(BIOS_DEBUG, "Got MMA_TEST_NAME=%s MMA_TEST_PARAM=%s\n",
           test_filename, test_param_filename);

    mma_test_content = cbfs_locate_file_in_region(MMA_CBFS_REGION,
                       test_filename, CBFS_TYPE_EFI,
                       &mma_test_content_file_len);
    if (!mma_test_content) {
        printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s.\n",
               test_filename);
        return;
    }

    mma_test_param = cbfs_locate_file_in_region(MMA_CBFS_REGION,
                     test_param_filename, CBFS_TYPE_MMA,
                     &mma_test_param_file_len);
    if (!mma_test_param) {
        printk(BIOS_DEBUG, "MMA setup failed: Failed to read %s.\n",
               test_param_filename);
        return;
    }

    memory_params->MmaTestContentPtr = (uintptr_t) mma_test_content;
    memory_params->MmaTestContentSize = mma_test_content_file_len;
    memory_params->MmaTestConfigPtr = (uintptr_t) mma_test_param;
    memory_params->MmaTestConfigSize = mma_test_param_file_len;
    memory_params->MrcFastBoot = 0x00;
    memory_params->SaGv = 0x02;

    printk(BIOS_DEBUG, "MMA Test name %s\n", test_filename);
    printk(BIOS_DEBUG, "MMA Test Config name %s\n", test_param_filename);
    printk(BIOS_DEBUG, "MMA passing following memory_params\n");
    printk(BIOS_DEBUG, "memory_params->MmaTestContentPtr = %0x\n",
           memory_params->MmaTestContentPtr);
    printk(BIOS_DEBUG, "memory_params->MmaTestContentSize = %d\n",
           memory_params->MmaTestContentSize);
    printk(BIOS_DEBUG, "memory_params->MmaTestConfigPtr = %0x\n",
           memory_params->MmaTestConfigPtr);
    printk(BIOS_DEBUG, "memory_params->MmaTestConfigSize = %d\n",
           memory_params->MmaTestConfigSize);
    printk(BIOS_DEBUG, "memory_params->MrcFastBoot = %d\n",
           memory_params->MrcFastBoot);
    printk(BIOS_DEBUG, "memory_params->SaGv = %d\n",
           memory_params->SaGv);

    printk(BIOS_DEBUG, "MMA setup successfully\n");
}