Subject: Re: linux-next: Tree for Nov 14

From: Guenter Roeck <[email-masked]>
Date: Sun, 16 Nov 2014 08:01:12 -0800

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:
>>>
>>> On 2014/11/16 11:22, Guenter Roeck wrote:
>>>> On 11/15/2014 06:33 PM, Jiang Liu wrote:
>>>>> 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
>>>>
>>> Hi Guenter,
>>>      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 ?
> Hi Guenter,
> 	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.

Guenter