On 11/16/2014 12:24 AM, Jiang Liu wrote:
On 2014/11/16 14:56, Guenter Roeck wrote:
On 11/15/2014 08:20 PM, Jiang Liu wrote:Hi Guenter,
On 2014/11/16 11:22, Guenter Roeck wrote:
On 11/15/2014 06:33 PM, Jiang Liu wrote:Hi Guenter,
Hi Guenter,
Could you please help to provide the config file and
error messages?
Config file:
https://github.com/groeck/linux-build-test/blob/master/rootfs/x86/qemu_x86_pc_nosmp_defconfig
Thanks for help. According to the above configuration file:
CONFIG_PCI_MSI is enabled, but CONFIG_X86_LOCAL_APIC and
CONFIG_X86_IO_APIC are both disabled. But the Kconfig for X86_LOCAL_APIC
is defined as:
config X86_LOCAL_APIC
def_bool y
depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
|| PCI_MSI
select GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
That means CONFIG_X86_LOCAL_APIC should be enabled if CONFIG_PCI_MSI is
enabled. So how did you generate the qemu_x86_pc_nosmp_defconfig? Are
you using an old configuration file?
I took the configuration file I had for the SMP case (located in the same
directory in the git repository), disabled SMP, and ran "make
savedefconfig".
"old" is relative in this context; I don't usually create new configuration
files for each new kernel release, so, yes, you could say that the file
I used is "old".
CONFIG_X86_LOCAL_APIC is enabled. Keep in mind this is a configuration file
created with "make savedefconfig", so default settings are not included.
Correct, CONFIG_X86_IO_APIC is not enabled, but that is not really
surprising
since its dependencies are not met as far as I can see.
Overall, I am not sure I understand what you are trying to say. X86_IO_APIC
depends on X86_64 (not set) or SMP (not set) or X86_32_NON_STANDARD (not
set)
or X86_UP_IOAPIC (not set because it depends on X86_UP_APIC which
depends on
!PCI_MSI).
Does that mean that I'll have to disable PCI_MSI to get x86 uniprocessor
support to work after your patch ?
Previously, X86_IO_APIC will be enabled if PCI_MSI is enabled.
With my patch, x86_IO_APIC may be disabled even if PCI_MSI is enabled.
If X86_LOCAL_APIC/PCI_MSI are enabled and X86_IO_APIC is disabled, it
should work theoretically. I remember it works on my HP laptop.
Could you please help to check whether it solve the issue by manually
turning on X86_IO_APIC?
I can not turn on X86_IO_APIC manually. I have to enable one of the
following to do it.
def_bool X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC
Since I want to build for 32 bit, I can not enable X86_64.
Since I want to build a uniprocessor image, I can not enable SMP.
X86_32_NON_STANDARD depends on SMP, so I can not enable it either.
X86_UP_IOAPIC depends on X86_UP_APIC which I can only enable by
disabling PCI_MSI.
So I disabled PCI_MSI and enabled X86_UP_IOAPIC as well as X86_IO_APIC.
The resulting image hangs completely with no console output whatsoever.