Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.

about J1900 SMI_LOCK SMI_EN


any one can help for this thread?

about J1900 SMI_LOCK SMI_EN

    to get a good realtime performance, i want to disablle SMI on my J1900 MasterBoard, i edit the linux kernel, add some line in file [arch/x86/platform/atom/pmc_atom.c]:

    here is what i have done:

    1.clear SMI_EN.GBL_SMI_EN

    2.set GEN_PMCON2.SMI_LOCK (yes,this bit before i set, it'vaule is zero--which mean BIOS doesn't LOCK SMI)

    when the kernel running, use "sudo rdmsr --all 0x34" to check MSR_SMI_COUNT, but MSR_SMI_COUNT increased when time elapsed,WHY?


--1.two functions added in [arch/x86/platform/atom/pmc_atom.c]

static void clr_smi_en(void)


    u16    reg_port;

    u32    reg_value;




    reg_port = acpi_base_addr + 0x30;

    reg_value = inl(reg_port);

    printk("DNK_A: SMI_EN:\t0x%08x\n", reg_value);


    reg_port = acpi_base_addr + 0x34;

    reg_value = inl(reg_port);

    printk("SMI_STS:\t0x%08x\n", reg_value);


    reg_port = acpi_base_addr + 0x30;

    outl(0, reg_port);

    reg_value = inl(reg_port);

    printk("DNK_B: SMI_EN:\t0x%08x\n", reg_value);


static void pmc_smi_lock(struct pmc_dev *pmc)


    u32 gen_pmcon2;

    gen_pmcon2 = pmc_reg_read(pmc, 0x24);

    printk("DNK_A: GEN_PMCON2=0x%08x", gen_pmcon2);


    gen_pmcon2 |= 0x00000010;

    printk("DNK_C: GEN_PMCON2=0x%08x", gen_pmcon2);


    pmc_reg_write(pmc, 0x24, gen_pmcon2);

    gen_pmcon2 = pmc_reg_read(pmc, 0x24);

    printk("DNK_B: GEN_PMCON2=0x%08x", gen_pmcon2);

} these functions in function pmc_setup_dev which called by pmc_atom_init .




--3.dmesg log:

dnk@dnk-baytrail:~$ dmesg | grep DNK

[    3.548661] DNK:pmc_atom_init

[    3.548765] pmc_atom: DNK_clr_smi_en

[    3.548786] DNK_A: SMI_EN:    0x00000033

[    3.548831] DNK_B: SMI_EN:    0x00000002

[    3.548851] DNK_A: GEN_PMCON2=0x00040400

[    3.548870] DNK_C: GEN_PMCON2=0x00040410

[    3.548892] DNK_B: GEN_PMCON2=0x00040410


Register Reference:

<Intel ® Pentium ® Processor N3500-series, J2850, J2900, and Intel ®Celeron ® Processor N2900-series,N2800-series, J1800-series, J1900,J1750>

Document Number: 329670-004


p997 20.5.6 General PM Configuration 2 (GEN_PMCON2)—Offset 24h


SMI Lock (SMI_LOCK) (smi_lock): When this bit is set, writes to the GBL_SMI_EN

bit will have no effect. Once the SMI_LOCK bit is set, writes of 0 to SMI_LOCK bit will

have no effect (i.e. once set, this bit can only be cleared by PMU_PLTRST).


p1035 20.7.6 SMI_EN - SMI Control and Enable (SMI_EN)—Offset 30h


Global SMI Enable (GBL_SMI_EN): (gbl_smi_en): When set, this bit enables the

generation of SMIs in the system upon any enabled SMI event. This bit is reset by a

PMU_PLTRST_B reset event. If this bit is not set, no SMI# will be generated. NOTE:

When the SMI_LOCK bit is set, this bit cannot be changed.


<Intel ® 64 and IA-32 Architectures Software Developer’s Manual>

Document Number: 252046-052



Table 35-18. MSRs Supported by Intel® Processors based on Intel® microarchitecture code name Sandy Bridge


this model specific register (MSR), returning the count of SMI since boot.

0 Kudos
0 Replies