Re: [broken-out-2007-07-20-00-22] kernel bug at kernel/params:570

Satyam Sharma
2007-07-21T08:36:52Z

[-- Attachment #1: Type: text/plain, Size: 1457 bytes --]

On 7/21/07, Michal Piotrowski <michal.k.k.piotrowski@gmail.com> wrote:
> Satyam Sharma pisze:
> > [...]
> > Gargh! My system obviously cannot boot without libata. Guess it's
> > time to go through git log and see how to fix that build breakage
> > myself ...
> >
> > Michal, how did you even manage to build / boot this kernel!
>
> I commented origin.patch and mm.patch in series file, reverted xfs patches,
> fixed libata build, deselected unionfs.
>
> Here is a patch for libata
>
> --- linux-work3-clean/drivers/ata/libata-core.c 2007-07-20 16:53:26.000000000 +0200
> +++ linux-work3/drivers/ata/libata-core.c 2007-07-20 17:26:30.000000000 +0200
> @@ -2036,7 +2036,7 @@ int ata_dev_configure(struct ata_device
> dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
> dev->max_sectors);
>
> - if (ata_device_blacklisted(dev) & ATA_HORKAGE_ALPM) {
> + if (ata_dev_blacklisted(dev) & ATA_HORKAGE_ALPM) {
> dev->horkage |= ATA_HORKAGE_ALPM;
>
> /* reset link pm_policy for this port to no pm */

And to think I went through all those hoops just to avoid *this* ... :-(
Anyway, please apply the attached patch and let's verify if we're both
actually bit by the same bug. A screenshot of my case is available at:

http://www.cse.iitk.ac.in/users/ssatyam/mtrr.show-bug.jpg

[ excuse the quality, it's not a digicam, but a cellphone-cam ]

Satyam

[-- Attachment #2: test.patch --]
[-- Type: text/x-patch, Size: 527 bytes --]

diff --git a/kernel/params.c b/kernel/params.c
index effbaae..5656ccf 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -567,7 +567,11 @@ static void __init kernel_param_sysfs_setup(const char *name,
kobject_set_name(&mk->kobj, name);
kobject_init(&mk->kobj);
ret = kobject_add(&mk->kobj);
- BUG_ON(ret < 0);
+ if (ret) {
+ printf("~~~~~ .%s.%d.%s. ~~~~~\n", name, ret, kparam->name);
+ for (;;)
+ cpu_relax();
+ }
param_sysfs_setup(mk, kparam, num_params, name_skip);
kobject_uevent(&mk->kobj, KOBJ_ADD);
}